mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-26 23:46:36 +00:00
Moved OT tests into separate bundle; renamed from runlet to sailing
This commit is contained in:
Executable → Regular
Executable → Regular
@@ -1,11 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 86
|
||||
/svn/monet/!svn/ver/7639/trunk/ngpm/com.sap.runlet.operationaltransformation/.settings
|
||||
END
|
||||
org.eclipse.jdt.core.prefs
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 113
|
||||
/svn/monet/!svn/ver/7639/trunk/ngpm/com.sap.runlet.operationaltransformation/.settings/org.eclipse.jdt.core.prefs
|
||||
END
|
||||
@@ -1,62 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/.settings
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-07-30T09:47:03.927281Z
|
||||
7639
|
||||
d043530
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
org.eclipse.jdt.core.prefs
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:12:32.187500Z
|
||||
568798bc673452f7fcf7725f6757062b
|
||||
2009-07-30T09:47:03.927281Z
|
||||
7639
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
331
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
#Thu Jul 30 11:41:49 CEST 2009
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
@@ -1,29 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 76
|
||||
/svn/monet/!svn/ver/8898/trunk/ngpm/com.sap.runlet.operationaltransformation
|
||||
END
|
||||
build.properties
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 93
|
||||
/svn/monet/!svn/ver/7639/trunk/ngpm/com.sap.runlet.operationaltransformation/build.properties
|
||||
END
|
||||
OperationalTransformationTest.launch
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 113
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/OperationalTransformationTest.launch
|
||||
END
|
||||
.project
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 85
|
||||
/svn/monet/!svn/ver/7639/trunk/ngpm/com.sap.runlet.operationaltransformation/.project
|
||||
END
|
||||
.classpath
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 87
|
||||
/svn/monet/!svn/ver/7639/trunk/ngpm/com.sap.runlet.operationaltransformation/.classpath
|
||||
END
|
||||
@@ -1,6 +0,0 @@
|
||||
K 10
|
||||
svn:ignore
|
||||
V 4
|
||||
bin
|
||||
|
||||
END
|
||||
@@ -1,176 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-12-02T14:23:28.803367Z
|
||||
8898
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
.classpath
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:12:32.250000Z
|
||||
7dfc337a1ea5247d85247f102e53ce15
|
||||
2009-07-30T09:47:03.927281Z
|
||||
7639
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
376
|
||||
|
||||
.project
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:12:32.265625Z
|
||||
c7771af8771f770e963d9604846283fe
|
||||
2009-07-30T09:47:03.927281Z
|
||||
7639
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
701
|
||||
|
||||
.settings
|
||||
dir
|
||||
|
||||
META-INF
|
||||
dir
|
||||
|
||||
OperationalTransformationTest.launch
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T12:06:17.203125Z
|
||||
9476187212ef2d2b198013f002625fbe
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
3571
|
||||
|
||||
build.properties
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:12:32.265625Z
|
||||
72f1e780fe4bd58f12d3d4445498055e
|
||||
2009-07-30T09:47:03.927281Z
|
||||
7639
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
80
|
||||
|
||||
docs
|
||||
dir
|
||||
|
||||
src
|
||||
dir
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
|
||||
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
@@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>com.sap.runlet.operationaltransformation</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
-46
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
|
||||
<booleanAttribute key="append.args" value="true"/>
|
||||
<booleanAttribute key="askclear" value="false"/>
|
||||
<booleanAttribute key="automaticAdd" value="true"/>
|
||||
<booleanAttribute key="automaticValidate" value="false"/>
|
||||
<stringAttribute key="bootstrap" value=""/>
|
||||
<stringAttribute key="checked" value="[NONE]"/>
|
||||
<booleanAttribute key="clearConfig" value="true"/>
|
||||
<booleanAttribute key="clearws" value="false"/>
|
||||
<booleanAttribute key="clearwslog" value="false"/>
|
||||
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
|
||||
<booleanAttribute key="default" value="true"/>
|
||||
<booleanAttribute key="includeOptional" value="true"/>
|
||||
<stringAttribute key="location" value="${workspace_loc}/../runtime-workspace"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/test/OperationalTransformationTests.java"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="1"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.hyades.trace.ui.ATTR_DATA_COLLECTOR" value="org.eclipse.tptp.trace.jvmti.jvmtiMechanism:org.eclipse.tptp.analysisType.jvmti.execution"/>
|
||||
<stringAttribute key="org.eclipse.hyades.trace.ui.ATTR_DESTINATION_FILE" value=""/>
|
||||
<stringAttribute key="org.eclipse.hyades.trace.ui.ATTR_DESTINATION_MONITOR" value="DefaultMonitor"/>
|
||||
<stringAttribute key="org.eclipse.hyades.trace.ui.ATTR_DESTINATION_PROJECT" value="ProfileProject"/>
|
||||
<booleanAttribute key="org.eclipse.hyades.trace.ui.ATTR_PROFILE_TO_FILE" value="false"/>
|
||||
<stringAttribute key="org.eclipse.hyades.trace.ui.ATTR_PROFILING_SET" value="tptp-dummy-profiling-set-OperationalTransformationTest"/>
|
||||
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
|
||||
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
|
||||
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
|
||||
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.6.0_10"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.sap.runlet.operationaltransformation.test.OperationalTransformationTests"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="com.sap.runlet.operationaltransformation"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx1024m -XX:PermSize=150m -ea"/>
|
||||
<stringAttribute key="pde.version" value="3.3"/>
|
||||
<stringAttribute key="product" value="org.eclipse.platform.ide"/>
|
||||
<booleanAttribute key="show_selected_only" value="false"/>
|
||||
<stringAttribute key="templateConfig" value="${target_home}\configuration\config.ini"/>
|
||||
<booleanAttribute key="tracing" value="false"/>
|
||||
<booleanAttribute key="useDefaultConfig" value="true"/>
|
||||
<booleanAttribute key="useDefaultConfigArea" value="false"/>
|
||||
<booleanAttribute key="useProduct" value="true"/>
|
||||
</launchConfiguration>
|
||||
-4
@@ -1,4 +0,0 @@
|
||||
source.. = src/
|
||||
output.. = bin/
|
||||
bin.includes = META-INF/,\
|
||||
.
|
||||
@@ -1,11 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 85
|
||||
/svn/monet/!svn/ver/8898/trunk/ngpm/com.sap.runlet.operationaltransformation/META-INF
|
||||
END
|
||||
MANIFEST.MF
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 97
|
||||
/svn/monet/!svn/ver/8898/trunk/ngpm/com.sap.runlet.operationaltransformation/META-INF/MANIFEST.MF
|
||||
END
|
||||
@@ -1,62 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/META-INF
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-12-02T14:23:28.803367Z
|
||||
8898
|
||||
d043530
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
MANIFEST.MF
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-12-02T11:03:40.109375Z
|
||||
ea7fe51ec7c8a2360b15c92937b68188
|
||||
2009-12-02T14:23:28.803367Z
|
||||
8898
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
387
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
Manifest-Version: 1.0
|
||||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: Operationaltransformation Plug-in
|
||||
Bundle-SymbolicName: com.sap.runlet.operationaltransformation
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Export-Package: com.sap.runlet.operationaltransformation,
|
||||
com.sap.runlet.operationaltransformation.test
|
||||
Require-Bundle: org.junit
|
||||
@@ -5,6 +5,4 @@ Bundle-SymbolicName: com.sap.sailing.operationaltransformation
|
||||
Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
|
||||
Export-Package: com.sap.sailing.operationaltransformation,
|
||||
com.sap.sailing.operationaltransformation.test
|
||||
Require-Bundle: org.junit
|
||||
Export-Package: com.sap.sailing.operationaltransformation
|
||||
|
||||
Executable → Regular
Executable → Regular
@@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 81
|
||||
/svn/monet/!svn/ver/7650/trunk/ngpm/com.sap.runlet.operationaltransformation/docs
|
||||
END
|
||||
@@ -1,26 +0,0 @@
|
||||
K 10
|
||||
svn:ignore
|
||||
V 195
|
||||
resources
|
||||
|
||||
overview-tree.html
|
||||
|
||||
index-all.html
|
||||
|
||||
allclasses-frame.html
|
||||
|
||||
deprecated-list.html
|
||||
|
||||
allclasses-noframe.html
|
||||
|
||||
stylesheet.css
|
||||
|
||||
index.html
|
||||
|
||||
package-list
|
||||
|
||||
help-doc.html
|
||||
|
||||
constant-values.html
|
||||
|
||||
END
|
||||
@@ -1,39 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/docs
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:47:40.072170Z
|
||||
7650
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
empty
|
||||
|
||||
com
|
||||
dir
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
||||
Executable → Regular
@@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 85
|
||||
/svn/monet/!svn/ver/7650/trunk/ngpm/com.sap.runlet.operationaltransformation/docs/com
|
||||
END
|
||||
@@ -1,39 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/docs/com
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:47:40.072170Z
|
||||
7650
|
||||
d043530
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
empty
|
||||
|
||||
sap
|
||||
dir
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 89
|
||||
/svn/monet/!svn/ver/7650/trunk/ngpm/com.sap.runlet.operationaltransformation/docs/com/sap
|
||||
END
|
||||
@@ -1,39 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/docs/com/sap
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:47:40.072170Z
|
||||
7650
|
||||
d043530
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
empty
|
||||
|
||||
runlet
|
||||
dir
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 96
|
||||
/svn/monet/!svn/ver/7650/trunk/ngpm/com.sap.runlet.operationaltransformation/docs/com/sap/runlet
|
||||
END
|
||||
@@ -1,6 +0,0 @@
|
||||
K 10
|
||||
svn:ignore
|
||||
V 26
|
||||
operationaltransformation
|
||||
|
||||
END
|
||||
@@ -1,39 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/docs/com/sap/runlet
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:47:40.072170Z
|
||||
7650
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
empty
|
||||
|
||||
docs
|
||||
dir
|
||||
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 101
|
||||
/svn/monet/!svn/ver/7650/trunk/ngpm/com.sap.runlet.operationaltransformation/docs/com/sap/runlet/docs
|
||||
END
|
||||
JupiterCollaborationSystem_Nichols.pdf
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 140
|
||||
/svn/monet/!svn/ver/7650/trunk/ngpm/com.sap.runlet.operationaltransformation/docs/com/sap/runlet/docs/JupiterCollaborationSystem_Nichols.pdf
|
||||
END
|
||||
@@ -1,70 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/docs/com/sap/runlet/docs
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:47:40.072170Z
|
||||
7650
|
||||
d043530
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
empty
|
||||
|
||||
JupiterCollaborationSystem_Nichols.pdf
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:45:59.546875Z
|
||||
0b0a7021188e78ae27a09bbe31f7e687
|
||||
2009-07-30T11:47:40.072170Z
|
||||
7650
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1031529
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
||||
BIN
Binary file not shown.
-263
@@ -1,263 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
AbstractOperation
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="AbstractOperation";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
PREV CLASS
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/AbstractOperation.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="AbstractOperation.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
<FONT SIZE="-1">
|
||||
com.sap.runlet.operationaltransformation</FONT>
|
||||
<BR>
|
||||
Class AbstractOperation<S></H2>
|
||||
<PRE>
|
||||
java.lang.Object
|
||||
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sap.runlet.operationaltransformation.AbstractOperation<S></B>
|
||||
</PRE>
|
||||
<DL>
|
||||
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>, java.lang.Cloneable</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public abstract class <B>AbstractOperation<S></B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S></DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
|
||||
<A NAME="constructor_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Constructor Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html#AbstractOperation()">AbstractOperation</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="class in com.sap.runlet.operationaltransformation">AbstractOperation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="type parameter in AbstractOperation">S</A>></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html#clone()">clone</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
|
||||
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE>equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="methods_inherited_from_class_com.sap.runlet.operationaltransformation.Operation"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
|
||||
<TH ALIGN="left"><B>Methods inherited from interface com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A></B></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html#applyTo(S)">applyTo</A></CODE></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
||||
|
||||
<A NAME="constructor_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Constructor Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="AbstractOperation()"><!-- --></A><H3>
|
||||
AbstractOperation</H3>
|
||||
<PRE>
|
||||
public <B>AbstractOperation</B>()</PRE>
|
||||
<DL>
|
||||
</DL>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="clone()"><!-- --></A><H3>
|
||||
clone</H3>
|
||||
<PRE>
|
||||
public <A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="class in com.sap.runlet.operationaltransformation">AbstractOperation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="type parameter in AbstractOperation">S</A>> <B>clone</B>()</PRE>
|
||||
<DL>
|
||||
<DD><DL>
|
||||
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html#clone()">clone</A></CODE> in interface <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="type parameter in AbstractOperation">S</A>></CODE><DT><B>Overrides:</B><DD><CODE>clone</CODE> in class <CODE>java.lang.Object</CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
PREV CLASS
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/AbstractOperation.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="AbstractOperation.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-269
@@ -1,269 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
ClientServerOperationPair
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="ClientServerOperationPair";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="ClientServerOperationPair.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
<FONT SIZE="-1">
|
||||
com.sap.runlet.operationaltransformation</FONT>
|
||||
<BR>
|
||||
Class ClientServerOperationPair<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><?>></H2>
|
||||
<PRE>
|
||||
java.lang.Object
|
||||
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sap.runlet.operationaltransformation.ClientServerOperationPair<O></B>
|
||||
</PRE>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public class <B>ClientServerOperationPair<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><?>></B><DT>extends java.lang.Object</DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
|
||||
<A NAME="constructor_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Constructor Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html#ClientServerOperationPair(O, O)">ClientServerOperationPair</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="type parameter in ClientServerOperationPair">O</A> clientOp,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="type parameter in ClientServerOperationPair">O</A> serverOp)</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="type parameter in ClientServerOperationPair">O</A></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html#getClientOp()">getClientOp</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="type parameter in ClientServerOperationPair">O</A></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html#getServerOp()">getServerOp</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
|
||||
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
||||
|
||||
<A NAME="constructor_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Constructor Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="ClientServerOperationPair(com.sap.runlet.operationaltransformation.Operation,com.sap.runlet.operationaltransformation.Operation)"><!-- --></A><A NAME="ClientServerOperationPair(O, O)"><!-- --></A><H3>
|
||||
ClientServerOperationPair</H3>
|
||||
<PRE>
|
||||
public <B>ClientServerOperationPair</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="type parameter in ClientServerOperationPair">O</A> clientOp,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="type parameter in ClientServerOperationPair">O</A> serverOp)</PRE>
|
||||
<DL>
|
||||
</DL>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="getClientOp()"><!-- --></A><H3>
|
||||
getClientOp</H3>
|
||||
<PRE>
|
||||
public <A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="type parameter in ClientServerOperationPair">O</A> <B>getClientOp</B>()</PRE>
|
||||
<DL>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="getServerOp()"><!-- --></A><H3>
|
||||
getServerOp</H3>
|
||||
<PRE>
|
||||
public <A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="type parameter in ClientServerOperationPair">O</A> <B>getServerOp</B>()</PRE>
|
||||
<DL>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="ClientServerOperationPair.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-245
@@ -1,245 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
Operation
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="Operation";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/Operation.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="Operation.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
<FONT SIZE="-1">
|
||||
com.sap.runlet.operationaltransformation</FONT>
|
||||
<BR>
|
||||
Interface Operation<S></H2>
|
||||
<DL>
|
||||
<DT><DT><B>Type Parameters:</B><DD><CODE>S</CODE> - the class that models the state, on instances of which operations perform changes</DL>
|
||||
<DL>
|
||||
<DT><B>All Superinterfaces:</B> <DD>java.lang.Cloneable</DD>
|
||||
</DL>
|
||||
<DL>
|
||||
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="class in com.sap.runlet.operationaltransformation">AbstractOperation</A></DD>
|
||||
</DL>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public interface <B>Operation<S></B><DT>extends java.lang.Cloneable</DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
A change operation can be applied to some start state of some
|
||||
universe and transforms that universe into a target state.
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="type parameter in Operation">S</A></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html#applyTo(S)">applyTo</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="type parameter in Operation">S</A> toState)</CODE>
|
||||
|
||||
<BR>
|
||||
Applies this operation to the state <tt>toState</tt>, producing a new target state
|
||||
which is returned.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="type parameter in Operation">S</A>></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html#clone()">clone</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="clone()"><!-- --></A><H3>
|
||||
clone</H3>
|
||||
<PRE>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="type parameter in Operation">S</A>> <B>clone</B>()</PRE>
|
||||
<DL>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="applyTo(java.lang.Object)"><!-- --></A><A NAME="applyTo(S)"><!-- --></A><H3>
|
||||
applyTo</H3>
|
||||
<PRE>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="type parameter in Operation">S</A> <B>applyTo</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="type parameter in Operation">S</A> toState)</PRE>
|
||||
<DL>
|
||||
<DD>Applies this operation to the state <tt>toState</tt>, producing a new target state
|
||||
which is returned.
|
||||
<P>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
<DT><B>Parameters:</B><DD><CODE>toState</CODE> - the state to which to apply this operation
|
||||
<DT><B>Returns:</B><DD>the state produced by applying this operation to <tt>toState</tt></DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/Operation.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="Operation.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-371
@@ -1,371 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
Peer
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="Peer";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/Peer.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="Peer.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
<FONT SIZE="-1">
|
||||
com.sap.runlet.operationaltransformation</FONT>
|
||||
<BR>
|
||||
Interface Peer<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>,S></H2>
|
||||
<DL>
|
||||
<DT><DT><B>Type Parameters:</B><DD><CODE>O</CODE> - the type of operations that can be applied to the states<DD><CODE>S</CODE> - the type of the states on which the operations perform changes</DL>
|
||||
<DL>
|
||||
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation">PeerImpl</A></DD>
|
||||
</DL>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public interface <B>Peer<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>,S></B></DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
Accepts change operations from clients and maintains a shared state. If new
|
||||
clients connect, the full state can be sent to the client for initial
|
||||
synchronization. When a change <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation"><CODE>Operation</CODE></A> is received from a client
|
||||
that operation will be based on some state. Since that state the
|
||||
server may have applied one or more change operations already. In order to
|
||||
synchronize the requesting client, the server transforms all in-between
|
||||
change operations for the requesting client and sends those transformation
|
||||
results back to the requesting client. The client's operation, in turn, is
|
||||
disseminated to all other clients for them to merge into their local replica
|
||||
of the global state.
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#addPeer(com.sap.runlet.operationaltransformation.Peer)">addPeer</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A>> peer)</CODE>
|
||||
|
||||
<BR>
|
||||
Registers a peer with this peer for replication.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(O)">apply</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A> operation)</CODE>
|
||||
|
||||
<BR>
|
||||
Applies a change operation locally to the current peer's state.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(com.sap.runlet.operationaltransformation.Peer, O, int)">apply</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A>> source,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A> operation,
|
||||
int numberOfOperationsSourceHasMergedFromThis)</CODE>
|
||||
|
||||
<BR>
|
||||
Usually, the framework handles calls to this method and framework users
|
||||
should therefore not need to call this method.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#confirm(com.sap.runlet.operationaltransformation.Peer, int)">confirm</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A>> source,
|
||||
int numberOfMergedOperations)</CODE>
|
||||
|
||||
<BR>
|
||||
Tells this peer that the <tt>source</tt> peer has successfully merged
|
||||
<tt>numberOfMergedOperations</tt> altogether coming from this peer
|
||||
into its operation sequence.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#getCurrentState()">getCurrentState</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
Tells the current state in which the peer is.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#waitForNotRunning()">waitForNotRunning</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
Blocks until the queue of tasks that works on achieving consistency across peers
|
||||
has completely drained.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="addPeer(com.sap.runlet.operationaltransformation.Peer)"><!-- --></A><H3>
|
||||
addPeer</H3>
|
||||
<PRE>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A> <B>addPeer</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A>> peer)</PRE>
|
||||
<DL>
|
||||
<DD>Registers a peer with this peer for replication. From this point on, this
|
||||
peer will remember which operations it has forwarded to that peer for
|
||||
later transformation jobs for operations coming in from that client.<p>
|
||||
|
||||
The <tt>peer</tt> is expected to set the state returned by this operation
|
||||
as its initial state.
|
||||
<P>
|
||||
<DD><DL>
|
||||
|
||||
<DT><B>Returns:</B><DD>the current server state; the calling client can use this as its
|
||||
initial state</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="apply(com.sap.runlet.operationaltransformation.Peer,com.sap.runlet.operationaltransformation.Operation,int)"><!-- --></A><A NAME="apply(com.sap.runlet.operationaltransformation.Peer, O, int)"><!-- --></A><H3>
|
||||
apply</H3>
|
||||
<PRE>
|
||||
void <B>apply</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A>> source,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A> operation,
|
||||
int numberOfOperationsSourceHasMergedFromThis)</PRE>
|
||||
<DL>
|
||||
<DD>Usually, the framework handles calls to this method and framework users
|
||||
should therefore not need to call this method.
|
||||
<p>
|
||||
|
||||
Synchronizes an <tt>operation</tt> from the <tt>source</tt> peer to this
|
||||
peer. The <tt>source</tt> peer specifies how many operations from this
|
||||
peer it already merged into its operations sequence before having
|
||||
executed <tt>operation</tt>.
|
||||
<p>
|
||||
|
||||
The operation has to be transformed using this peer's operational
|
||||
transformation and using the sequence of operations applied to the
|
||||
operation's start state up to this peer's current state. This results in
|
||||
the operation that needs to be applied to the current state to produce
|
||||
the next state.
|
||||
<p>
|
||||
|
||||
After applying this possibly transformed operation to this peer's current
|
||||
state and thus producing a new current state, all registered peers except
|
||||
<tt>source</tt> are notified about the change by sending them the
|
||||
transformed operation.
|
||||
<P>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="apply(com.sap.runlet.operationaltransformation.Operation)"><!-- --></A><A NAME="apply(O)"><!-- --></A><H3>
|
||||
apply</H3>
|
||||
<PRE>
|
||||
void <B>apply</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A> operation)</PRE>
|
||||
<DL>
|
||||
<DD>Applies a change operation locally to the current peer's state.
|
||||
<P>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="confirm(com.sap.runlet.operationaltransformation.Peer, int)"><!-- --></A><H3>
|
||||
confirm</H3>
|
||||
<PRE>
|
||||
void <B>confirm</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A>> source,
|
||||
int numberOfMergedOperations)</PRE>
|
||||
<DL>
|
||||
<DD>Tells this peer that the <tt>source</tt> peer has successfully merged
|
||||
<tt>numberOfMergedOperations</tt> altogether coming from this peer
|
||||
into its operation sequence. This peer can take this as an opportunity
|
||||
to clean up the queue and remove the transformed copies of all operations
|
||||
up to number <tt>numberOfMergedOperations-1</tt>.
|
||||
<P>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="getCurrentState()"><!-- --></A><H3>
|
||||
getCurrentState</H3>
|
||||
<PRE>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="type parameter in Peer">S</A> <B>getCurrentState</B>()</PRE>
|
||||
<DL>
|
||||
<DD>Tells the current state in which the peer is. This is the state constructed by
|
||||
the sequence of calls to <A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(O)"><CODE>apply(Operation)</CODE></A> and the merged in notifications
|
||||
from other peers.
|
||||
<P>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="waitForNotRunning()"><!-- --></A><H3>
|
||||
waitForNotRunning</H3>
|
||||
<PRE>
|
||||
void <B>waitForNotRunning</B>()</PRE>
|
||||
<DL>
|
||||
<DD>Blocks until the queue of tasks that works on achieving consistency across peers
|
||||
has completely drained.
|
||||
<P>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/Peer.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="Peer.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-548
@@ -1,548 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
PeerImpl
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="PeerImpl";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/PeerImpl.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="PeerImpl.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
<FONT SIZE="-1">
|
||||
com.sap.runlet.operationaltransformation</FONT>
|
||||
<BR>
|
||||
Class PeerImpl<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>,S></H2>
|
||||
<PRE>
|
||||
java.lang.Object
|
||||
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sap.runlet.operationaltransformation.PeerImpl<O,S></B>
|
||||
</PRE>
|
||||
<DL>
|
||||
<DT><DT><B>Type Parameters:</B><DD><CODE>O</CODE> - type of change operations to be processed by this server<DD><CODE>S</CODE> - type of state managed by this server to which the operations can be applied</DL>
|
||||
<DL>
|
||||
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><O,S></DD>
|
||||
</DL>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public class <B>PeerImpl<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>,S></B><DT>extends java.lang.Object<DT>implements <A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><O,S></DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
A very simple peer implementation for operational transformations that starts
|
||||
out with a provided initial state and then receives operations which it applies
|
||||
to its state. It manages a set of clients. Using the <tt>server</tt> constructor
|
||||
parameter one can configure whether this peer is a client or a server.
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
|
||||
<A NAME="constructor_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Constructor Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#PeerImpl(java.lang.String, com.sap.runlet.operationaltransformation.Transformer, com.sap.runlet.operationaltransformation.Peer)">PeerImpl</A></B>(java.lang.String name,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation">Transformer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>> transformer,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> server)</CODE>
|
||||
|
||||
<BR>
|
||||
Constructs a client peer with a name and connects it to the
|
||||
<tt>server</tt> peer, establishing the two-way link between client and
|
||||
server peers.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#PeerImpl(java.lang.String, com.sap.runlet.operationaltransformation.Transformer, S, boolean)">PeerImpl</A></B>(java.lang.String name,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation">Transformer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>> transformer,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A> initialState,
|
||||
boolean server)</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#PeerImpl(com.sap.runlet.operationaltransformation.Transformer, com.sap.runlet.operationaltransformation.Peer)">PeerImpl</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation">Transformer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>> transformer,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> server)</CODE>
|
||||
|
||||
<BR>
|
||||
Constructs a client peer and connects it to the <tt>server</tt> peer, establishing
|
||||
the two-way link between client and server peers.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#PeerImpl(com.sap.runlet.operationaltransformation.Transformer, S, boolean)">PeerImpl</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation">Transformer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>> transformer,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A> initialState,
|
||||
boolean server)</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#addPeer(com.sap.runlet.operationaltransformation.Peer)">addPeer</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> peer)</CODE>
|
||||
|
||||
<BR>
|
||||
Registers a peer with this peer for replication.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#apply(O)">apply</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> operation)</CODE>
|
||||
|
||||
<BR>
|
||||
Applies a change operation locally to the current peer's state.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#apply(com.sap.runlet.operationaltransformation.Peer, O, int)">apply</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> source,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> operation,
|
||||
int numberOfOperationsSourceHasMergedFromThis)</CODE>
|
||||
|
||||
<BR>
|
||||
Usually, the framework handles calls to this method and framework users
|
||||
should therefore not need to call this method.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#confirm(com.sap.runlet.operationaltransformation.Peer, int)">confirm</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> source,
|
||||
int numberOfMergedOperations)</CODE>
|
||||
|
||||
<BR>
|
||||
Tells this peer that the <tt>source</tt> peer has successfully merged
|
||||
<tt>numberOfMergedOperations</tt> altogether coming from this peer
|
||||
into its operation sequence.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#finalize()">finalize</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#getCurrentState()">getCurrentState</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
Tells the current state in which the peer is.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> java.lang.String</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#toString()">toString</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html#waitForNotRunning()">waitForNotRunning</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
Blocks until the queue of tasks that works on achieving consistency across peers
|
||||
has completely drained.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
|
||||
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE>clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
||||
|
||||
<A NAME="constructor_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Constructor Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="PeerImpl(com.sap.runlet.operationaltransformation.Transformer,java.lang.Object,boolean)"><!-- --></A><A NAME="PeerImpl(com.sap.runlet.operationaltransformation.Transformer, S, boolean)"><!-- --></A><H3>
|
||||
PeerImpl</H3>
|
||||
<PRE>
|
||||
public <B>PeerImpl</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation">Transformer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>> transformer,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A> initialState,
|
||||
boolean server)</PRE>
|
||||
<DL>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="PeerImpl(java.lang.String,com.sap.runlet.operationaltransformation.Transformer,java.lang.Object,boolean)"><!-- --></A><A NAME="PeerImpl(java.lang.String, com.sap.runlet.operationaltransformation.Transformer, S, boolean)"><!-- --></A><H3>
|
||||
PeerImpl</H3>
|
||||
<PRE>
|
||||
public <B>PeerImpl</B>(java.lang.String name,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation">Transformer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>> transformer,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A> initialState,
|
||||
boolean server)</PRE>
|
||||
<DL>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="PeerImpl(com.sap.runlet.operationaltransformation.Transformer, com.sap.runlet.operationaltransformation.Peer)"><!-- --></A><H3>
|
||||
PeerImpl</H3>
|
||||
<PRE>
|
||||
public <B>PeerImpl</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation">Transformer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>> transformer,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> server)</PRE>
|
||||
<DL>
|
||||
<DD>Constructs a client peer and connects it to the <tt>server</tt> peer, establishing
|
||||
the two-way link between client and server peers. The initial state is taken from
|
||||
the server.
|
||||
<P>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="PeerImpl(java.lang.String, com.sap.runlet.operationaltransformation.Transformer, com.sap.runlet.operationaltransformation.Peer)"><!-- --></A><H3>
|
||||
PeerImpl</H3>
|
||||
<PRE>
|
||||
public <B>PeerImpl</B>(java.lang.String name,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation">Transformer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>> transformer,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> server)</PRE>
|
||||
<DL>
|
||||
<DD>Constructs a client peer with a name and connects it to the
|
||||
<tt>server</tt> peer, establishing the two-way link between client and
|
||||
server peers. The initial state is taken from the server.
|
||||
<P>
|
||||
</DL>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="finalize()"><!-- --></A><H3>
|
||||
finalize</H3>
|
||||
<PRE>
|
||||
public void <B>finalize</B>()</PRE>
|
||||
<DL>
|
||||
<DD><DL>
|
||||
<DT><B>Overrides:</B><DD><CODE>finalize</CODE> in class <CODE>java.lang.Object</CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="addPeer(com.sap.runlet.operationaltransformation.Peer)"><!-- --></A><H3>
|
||||
addPeer</H3>
|
||||
<PRE>
|
||||
public <A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A> <B>addPeer</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> peer)</PRE>
|
||||
<DL>
|
||||
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#addPeer(com.sap.runlet.operationaltransformation.Peer)">Peer</A></CODE></B></DD>
|
||||
<DD>Registers a peer with this peer for replication. From this point on, this
|
||||
peer will remember which operations it has forwarded to that peer for
|
||||
later transformation jobs for operations coming in from that client.<p>
|
||||
|
||||
The <tt>peer</tt> is expected to set the state returned by this operation
|
||||
as its initial state.
|
||||
<P>
|
||||
<DD><DL>
|
||||
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#addPeer(com.sap.runlet.operationaltransformation.Peer)">addPeer</A></CODE> in interface <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>></CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
|
||||
<DT><B>Returns:</B><DD>the current server state; the calling client can use this as its
|
||||
initial state</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="getCurrentState()"><!-- --></A><H3>
|
||||
getCurrentState</H3>
|
||||
<PRE>
|
||||
public <A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A> <B>getCurrentState</B>()</PRE>
|
||||
<DL>
|
||||
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#getCurrentState()">Peer</A></CODE></B></DD>
|
||||
<DD>Tells the current state in which the peer is. This is the state constructed by
|
||||
the sequence of calls to <A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(O)"><CODE>Peer.apply(Operation)</CODE></A> and the merged in notifications
|
||||
from other peers.
|
||||
<P>
|
||||
<DD><DL>
|
||||
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#getCurrentState()">getCurrentState</A></CODE> in interface <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>></CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="apply(com.sap.runlet.operationaltransformation.Operation)"><!-- --></A><A NAME="apply(O)"><!-- --></A><H3>
|
||||
apply</H3>
|
||||
<PRE>
|
||||
public void <B>apply</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> operation)</PRE>
|
||||
<DL>
|
||||
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(O)">Peer</A></CODE></B></DD>
|
||||
<DD>Applies a change operation locally to the current peer's state.
|
||||
<P>
|
||||
<DD><DL>
|
||||
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(O)">apply</A></CODE> in interface <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>></CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="apply(com.sap.runlet.operationaltransformation.Peer,com.sap.runlet.operationaltransformation.Operation,int)"><!-- --></A><A NAME="apply(com.sap.runlet.operationaltransformation.Peer, O, int)"><!-- --></A><H3>
|
||||
apply</H3>
|
||||
<PRE>
|
||||
public void <B>apply</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> source,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> operation,
|
||||
int numberOfOperationsSourceHasMergedFromThis)</PRE>
|
||||
<DL>
|
||||
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(com.sap.runlet.operationaltransformation.Peer, O, int)">Peer</A></CODE></B></DD>
|
||||
<DD>Usually, the framework handles calls to this method and framework users
|
||||
should therefore not need to call this method.
|
||||
<p>
|
||||
|
||||
Synchronizes an <tt>operation</tt> from the <tt>source</tt> peer to this
|
||||
peer. The <tt>source</tt> peer specifies how many operations from this
|
||||
peer it already merged into its operations sequence before having
|
||||
executed <tt>operation</tt>.
|
||||
<p>
|
||||
|
||||
The operation has to be transformed using this peer's operational
|
||||
transformation and using the sequence of operations applied to the
|
||||
operation's start state up to this peer's current state. This results in
|
||||
the operation that needs to be applied to the current state to produce
|
||||
the next state.
|
||||
<p>
|
||||
|
||||
After applying this possibly transformed operation to this peer's current
|
||||
state and thus producing a new current state, all registered peers except
|
||||
<tt>source</tt> are notified about the change by sending them the
|
||||
transformed operation.
|
||||
<P>
|
||||
<DD><DL>
|
||||
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(com.sap.runlet.operationaltransformation.Peer, O, int)">apply</A></CODE> in interface <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>></CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="toString()"><!-- --></A><H3>
|
||||
toString</H3>
|
||||
<PRE>
|
||||
public java.lang.String <B>toString</B>()</PRE>
|
||||
<DL>
|
||||
<DD><DL>
|
||||
<DT><B>Overrides:</B><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="confirm(com.sap.runlet.operationaltransformation.Peer, int)"><!-- --></A><H3>
|
||||
confirm</H3>
|
||||
<PRE>
|
||||
public void <B>confirm</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>> source,
|
||||
int numberOfMergedOperations)</PRE>
|
||||
<DL>
|
||||
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#confirm(com.sap.runlet.operationaltransformation.Peer, int)">Peer</A></CODE></B></DD>
|
||||
<DD>Tells this peer that the <tt>source</tt> peer has successfully merged
|
||||
<tt>numberOfMergedOperations</tt> altogether coming from this peer
|
||||
into its operation sequence. This peer can take this as an opportunity
|
||||
to clean up the queue and remove the transformed copies of all operations
|
||||
up to number <tt>numberOfMergedOperations-1</tt>.
|
||||
<P>
|
||||
<DD><DL>
|
||||
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#confirm(com.sap.runlet.operationaltransformation.Peer, int)">confirm</A></CODE> in interface <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>></CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="waitForNotRunning()"><!-- --></A><H3>
|
||||
waitForNotRunning</H3>
|
||||
<PRE>
|
||||
public void <B>waitForNotRunning</B>()</PRE>
|
||||
<DL>
|
||||
<DD><B>Description copied from interface: <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#waitForNotRunning()">Peer</A></CODE></B></DD>
|
||||
<DD>Blocks until the queue of tasks that works on achieving consistency across peers
|
||||
has completely drained.
|
||||
<P>
|
||||
<DD><DL>
|
||||
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#waitForNotRunning()">waitForNotRunning</A></CODE> in interface <CODE><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">O</A> extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>>,<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="type parameter in PeerImpl">S</A>></CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/PeerImpl.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="PeerImpl.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-208
@@ -1,208 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 13:48:55 CEST 2009 -->
|
||||
<TITLE>
|
||||
State
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="State";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/State.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="State.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
<FONT SIZE="-1">
|
||||
com.sap.runlet.operationaltransformation</FONT>
|
||||
<BR>
|
||||
Interface State</H2>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public interface <B>State</B></DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
A state of the "universe" in which the <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation"><CODE>Operation</CODE></A>s perform state changes.
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> java.lang.Object</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/State.html#getId()">getId</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
Returns an identifier for this state.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="getId()"><!-- --></A><H3>
|
||||
getId</H3>
|
||||
<PRE>
|
||||
java.lang.Object <B>getId</B>()</PRE>
|
||||
<DL>
|
||||
<DD>Returns an identifier for this state.
|
||||
<P>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/State.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="State.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-281
@@ -1,281 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
StatesAndOperations
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="StatesAndOperations";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/StatesAndOperations.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="StatesAndOperations.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
<FONT SIZE="-1">
|
||||
com.sap.runlet.operationaltransformation</FONT>
|
||||
<BR>
|
||||
Class StatesAndOperations<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>,S></H2>
|
||||
<PRE>
|
||||
java.lang.Object
|
||||
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sap.runlet.operationaltransformation.StatesAndOperations<O,S></B>
|
||||
</PRE>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public class <B>StatesAndOperations<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>,S></B><DT>extends java.lang.Object</DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
Maintains a list of states and the operations that transformed the i-th into
|
||||
the i+1st, starting with an initial state. Using <A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html#apply(O)"><CODE>apply(Operation)</CODE></A>,
|
||||
operation/state pairs can be appended to the end.
|
||||
<p>
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
|
||||
<A NAME="constructor_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Constructor Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html#StatesAndOperations(S)">StatesAndOperations</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="type parameter in StatesAndOperations">S</A> initialState)</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="type parameter in StatesAndOperations">S</A></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html#apply(O)">apply</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="type parameter in StatesAndOperations">O</A> operation)</CODE>
|
||||
|
||||
<BR>
|
||||
Applies the <tt>operation</tt> to the <A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html#getCurrentState()"><CODE>current
|
||||
state</CODE></A> and records both, the new current state and the operation.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="type parameter in StatesAndOperations">S</A></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html#getCurrentState()">getCurrentState</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
|
||||
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
||||
|
||||
<A NAME="constructor_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Constructor Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="StatesAndOperations(java.lang.Object)"><!-- --></A><A NAME="StatesAndOperations(S)"><!-- --></A><H3>
|
||||
StatesAndOperations</H3>
|
||||
<PRE>
|
||||
public <B>StatesAndOperations</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="type parameter in StatesAndOperations">S</A> initialState)</PRE>
|
||||
<DL>
|
||||
</DL>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="apply(com.sap.runlet.operationaltransformation.Operation)"><!-- --></A><A NAME="apply(O)"><!-- --></A><H3>
|
||||
apply</H3>
|
||||
<PRE>
|
||||
public <A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="type parameter in StatesAndOperations">S</A> <B>apply</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="type parameter in StatesAndOperations">O</A> operation)</PRE>
|
||||
<DL>
|
||||
<DD>Applies the <tt>operation</tt> to the <A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html#getCurrentState()"><CODE>current
|
||||
state</CODE></A> and records both, the new current state and the operation.
|
||||
<P>
|
||||
<DD><DL>
|
||||
|
||||
<DT><B>Returns:</B><DD>the new current state that results from applying
|
||||
<tt>operation</tt> to the state that was current when the
|
||||
operation was invoked.</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="getCurrentState()"><!-- --></A><H3>
|
||||
getCurrentState</H3>
|
||||
<PRE>
|
||||
public <A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="type parameter in StatesAndOperations">S</A> <B>getCurrentState</B>()</PRE>
|
||||
<DL>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/StatesAndOperations.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="StatesAndOperations.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-211
@@ -1,211 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
Transformer
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="Transformer";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/Transformer.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="Transformer.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
<FONT SIZE="-1">
|
||||
com.sap.runlet.operationaltransformation</FONT>
|
||||
<BR>
|
||||
Interface Transformer<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><?>></H2>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public interface <B>Transformer<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><?>></B></DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> <A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="class in com.sap.runlet.operationaltransformation">ClientServerOperationPair</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="type parameter in Transformer">O</A>></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html#transform(O, O)">transform</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="type parameter in Transformer">O</A> clientOp,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="type parameter in Transformer">O</A> serverOp)</CODE>
|
||||
|
||||
<BR>
|
||||
Takes an operation from the client and an operation from the server, both
|
||||
based on the same state.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="transform(com.sap.runlet.operationaltransformation.Operation,com.sap.runlet.operationaltransformation.Operation)"><!-- --></A><A NAME="transform(O, O)"><!-- --></A><H3>
|
||||
transform</H3>
|
||||
<PRE>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="class in com.sap.runlet.operationaltransformation">ClientServerOperationPair</A><<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="type parameter in Transformer">O</A>> <B>transform</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="type parameter in Transformer">O</A> clientOp,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="type parameter in Transformer">O</A> serverOp)</PRE>
|
||||
<DL>
|
||||
<DD>Takes an operation from the client and an operation from the server, both
|
||||
based on the same state. The complementary pair of operations is computed
|
||||
such that if the client applies the server operation returned, and the
|
||||
server applies the client operation returned, both end up in equal states
|
||||
again.
|
||||
<P>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="class in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="class in com.sap.runlet.operationaltransformation"><B>NEXT CLASS</B></A></FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/Transformer.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="Transformer.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-353
@@ -1,353 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
UnmergedOperationsQueue
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="UnmergedOperationsQueue";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
NEXT CLASS</FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="UnmergedOperationsQueue.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
<FONT SIZE="-1">
|
||||
com.sap.runlet.operationaltransformation</FONT>
|
||||
<BR>
|
||||
Class UnmergedOperationsQueue<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>,S></H2>
|
||||
<PRE>
|
||||
java.lang.Object
|
||||
<IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.sap.runlet.operationaltransformation.UnmergedOperationsQueue<O,S></B>
|
||||
</PRE>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public class <B>UnmergedOperationsQueue<O extends <A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>,S></B><DT>extends java.lang.Object</DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
|
||||
<A NAME="constructor_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Constructor Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html#UnmergedOperationsQueue()">UnmergedOperationsQueue</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html#confirm(int)">confirm</A></B>(int numberOfMergedOperations)</CODE>
|
||||
|
||||
<BR>
|
||||
Cleans up the queue so that only unconfirmed / unmerged operations
|
||||
remain.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> java.util.List<<A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="type parameter in UnmergedOperationsQueue">O</A>></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html#getUnmergedOperations(int)">getUnmergedOperations</A></B>(int numberOfConfirmedLocalOperations)</CODE>
|
||||
|
||||
<BR>
|
||||
Returns a copied list of unmerged and stepwise transformed local
|
||||
operations starting at the requested local operation number.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html#sentOutOperation(O)">sentOutOperation</A></B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="type parameter in UnmergedOperationsQueue">O</A> operationSentOut)</CODE>
|
||||
|
||||
<BR>
|
||||
After an operation has been locally applied and needs to be propagated
|
||||
to the peer for which this is the queue of unmerged operations, the operation
|
||||
must be appended to this queue.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> java.lang.String</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html#toString()">toString</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> void</CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html#updateWithTransformed(int, O)">updateWithTransformed</A></B>(int localOperationNumber,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="type parameter in UnmergedOperationsQueue">O</A> transformedOperation)</CODE>
|
||||
|
||||
<BR>
|
||||
Replaces the local operation with number <tt>localOperationNumber</tt> in the queue by
|
||||
<tt>transformedOperation</tt>.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
|
||||
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</CODE></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
||||
|
||||
<A NAME="constructor_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Constructor Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="UnmergedOperationsQueue()"><!-- --></A><H3>
|
||||
UnmergedOperationsQueue</H3>
|
||||
<PRE>
|
||||
public <B>UnmergedOperationsQueue</B>()</PRE>
|
||||
<DL>
|
||||
</DL>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="sentOutOperation(com.sap.runlet.operationaltransformation.Operation)"><!-- --></A><A NAME="sentOutOperation(O)"><!-- --></A><H3>
|
||||
sentOutOperation</H3>
|
||||
<PRE>
|
||||
public void <B>sentOutOperation</B>(<A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="type parameter in UnmergedOperationsQueue">O</A> operationSentOut)</PRE>
|
||||
<DL>
|
||||
<DD>After an operation has been locally applied and needs to be propagated
|
||||
to the peer for which this is the queue of unmerged operations, the operation
|
||||
must be appended to this queue.
|
||||
<P>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="getUnmergedOperations(int)"><!-- --></A><H3>
|
||||
getUnmergedOperations</H3>
|
||||
<PRE>
|
||||
public java.util.List<<A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="type parameter in UnmergedOperationsQueue">O</A>> <B>getUnmergedOperations</B>(int numberOfConfirmedLocalOperations)</PRE>
|
||||
<DL>
|
||||
<DD>Returns a copied list of unmerged and stepwise transformed local
|
||||
operations starting at the requested local operation number.
|
||||
<P>
|
||||
<DD><DL>
|
||||
<DT><B>Parameters:</B><DD><CODE>numberOfConfirmedLocalOperations</CODE> - A value of 0 means that the remote peer has not confirmed the
|
||||
merge of any local operation yet.</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="updateWithTransformed(int,com.sap.runlet.operationaltransformation.Operation)"><!-- --></A><A NAME="updateWithTransformed(int, O)"><!-- --></A><H3>
|
||||
updateWithTransformed</H3>
|
||||
<PRE>
|
||||
public void <B>updateWithTransformed</B>(int localOperationNumber,
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="type parameter in UnmergedOperationsQueue">O</A> transformedOperation)</PRE>
|
||||
<DL>
|
||||
<DD>Replaces the local operation with number <tt>localOperationNumber</tt> in the queue by
|
||||
<tt>transformedOperation</tt>.
|
||||
<P>
|
||||
<DD><DL>
|
||||
<DT><B>Parameters:</B><DD><CODE>localOperationNumber</CODE> - starts with 0</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="confirm(int)"><!-- --></A><H3>
|
||||
confirm</H3>
|
||||
<PRE>
|
||||
public void <B>confirm</B>(int numberOfMergedOperations)</PRE>
|
||||
<DL>
|
||||
<DD>Cleans up the queue so that only unconfirmed / unmerged operations
|
||||
remain. Afterwards, <A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html#getUnmergedOperations(int)"><CODE>asking for an
|
||||
unmerged operation</CODE></A> with an argument for
|
||||
<tt>numberOfConfirmedLocalOperations</tt> smaller than
|
||||
<tt>numberOfMergedOperations</tt> passed to this call will result in an
|
||||
exception.
|
||||
<P>
|
||||
<DD><DL>
|
||||
<DT><B>Parameters:</B><DD><CODE>numberOfMergedOperations</CODE> - tells how many operations that emerged from the local peer the
|
||||
remote peer has confirmed to have merged.</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<A NAME="toString()"><!-- --></A><H3>
|
||||
toString</H3>
|
||||
<PRE>
|
||||
public java.lang.String <B>toString</B>()</PRE>
|
||||
<DL>
|
||||
<DD><DL>
|
||||
<DT><B>Overrides:</B><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE></DL>
|
||||
</DD>
|
||||
<DD><DL>
|
||||
</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation"><B>PREV CLASS</B></A>
|
||||
NEXT CLASS</FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="UnmergedOperationsQueue.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
SUMMARY: NESTED | FIELD | <A HREF="#constructor_summary">CONSTR</A> | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||||
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||||
DETAIL: FIELD | <A HREF="#constructor_detail">CONSTR</A> | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-55
@@ -1,55 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
com.sap.runlet.operationaltransformation
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white">
|
||||
<FONT size="+1" CLASS="FrameTitleFont">
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html" target="classFrame">com.sap.runlet.operationaltransformation</A></FONT>
|
||||
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
|
||||
<TR>
|
||||
<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
|
||||
Interfaces</FONT>
|
||||
<FONT CLASS="FrameItemFont">
|
||||
<BR>
|
||||
<A HREF="Operation.html" title="interface in com.sap.runlet.operationaltransformation" target="classFrame"><I>Operation</I></A>
|
||||
<BR>
|
||||
<A HREF="Peer.html" title="interface in com.sap.runlet.operationaltransformation" target="classFrame"><I>Peer</I></A>
|
||||
<BR>
|
||||
<A HREF="Transformer.html" title="interface in com.sap.runlet.operationaltransformation" target="classFrame"><I>Transformer</I></A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
|
||||
<TR>
|
||||
<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
|
||||
Classes</FONT>
|
||||
<FONT CLASS="FrameItemFont">
|
||||
<BR>
|
||||
<A HREF="AbstractOperation.html" title="class in com.sap.runlet.operationaltransformation" target="classFrame">AbstractOperation</A>
|
||||
<BR>
|
||||
<A HREF="ClientServerOperationPair.html" title="class in com.sap.runlet.operationaltransformation" target="classFrame">ClientServerOperationPair</A>
|
||||
<BR>
|
||||
<A HREF="PeerImpl.html" title="class in com.sap.runlet.operationaltransformation" target="classFrame">PeerImpl</A>
|
||||
<BR>
|
||||
<A HREF="StatesAndOperations.html" title="class in com.sap.runlet.operationaltransformation" target="classFrame">StatesAndOperations</A>
|
||||
<BR>
|
||||
<A HREF="UnmergedOperationsQueue.html" title="class in com.sap.runlet.operationaltransformation" target="classFrame">UnmergedOperationsQueue</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-265
@@ -1,265 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
com.sap.runlet.operationaltransformation
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="com.sap.runlet.operationaltransformation";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
PREV PACKAGE
|
||||
NEXT PACKAGE</FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/package-summary.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<H2>
|
||||
Package com.sap.runlet.operationaltransformation
|
||||
</H2>
|
||||
|
||||
Use the contents of this package for so-called <em>operational transformations</em>.
|
||||
<P>
|
||||
<B>See:</B>
|
||||
<BR>
|
||||
<A HREF="#package_description"><B>Description</B></A>
|
||||
<P>
|
||||
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Interface Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD WIDTH="15%"><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation<S></A></B></TD>
|
||||
<TD>A change operation can be applied to some start state of some
|
||||
universe and transforms that universe into a target state.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD WIDTH="15%"><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer<O extends Operation<S>,S></A></B></TD>
|
||||
<TD>Accepts change operations from clients and maintains a shared state.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD WIDTH="15%"><B><A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation">Transformer<O extends Operation<?>></A></B></TD>
|
||||
<TD> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
<P>
|
||||
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Class Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD WIDTH="15%"><B><A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="class in com.sap.runlet.operationaltransformation">AbstractOperation<S></A></B></TD>
|
||||
<TD> </TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD WIDTH="15%"><B><A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="class in com.sap.runlet.operationaltransformation">ClientServerOperationPair<O extends Operation<?>></A></B></TD>
|
||||
<TD> </TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD WIDTH="15%"><B><A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation">PeerImpl<O extends Operation<S>,S></A></B></TD>
|
||||
<TD>A very simple peer implementation for operational transformations that starts
|
||||
out with a provided initial state and then receives operations which it applies
|
||||
to its state.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD WIDTH="15%"><B><A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="class in com.sap.runlet.operationaltransformation">StatesAndOperations<O extends Operation<S>,S></A></B></TD>
|
||||
<TD>Maintains a list of states and the operations that transformed the i-th into
|
||||
the i+1st, starting with an initial state.</TD>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD WIDTH="15%"><B><A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="class in com.sap.runlet.operationaltransformation">UnmergedOperationsQueue<O extends Operation<S>,S></A></B></TD>
|
||||
<TD> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
<P>
|
||||
<A NAME="package_description"><!-- --></A><H2>
|
||||
Package com.sap.runlet.operationaltransformation Description
|
||||
</H2>
|
||||
|
||||
<P>
|
||||
<p>
|
||||
Use the contents of this package for so-called <em>operational transformations</em>.
|
||||
This can be used to synchronize the states of a number of clients with a single server.
|
||||
The synchronization is performed asynchronously. The construction of the transformation
|
||||
function guarantees to lead to eventual consistency across clients and server.
|
||||
Read more about the general background of the algorithm on which this is based
|
||||
<a href="../docs/JupiterCollaborationSystem_Nichols.pdf">here</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To establish a server to which clients can connect, first decide how your <em>state</em>
|
||||
is encoded on which the <em>operations</em> will perform changes to transition from one
|
||||
state to the next. Then, design your operations class. The trickiest part comes next. You
|
||||
have to define a transformer that maps a pair of your operations to another pair of
|
||||
operations of the same type. The transformer has to implement the
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation"><CODE>Transformer</CODE></A> interface, in particular
|
||||
the <A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html#transform(O, O)"><CODE>Transformer.transform(O, O)</CODE></A> method. The
|
||||
transformation function assumes that both input operations have been applied to the same
|
||||
state, one on a client, the other one on the server. The resulting operation for the client
|
||||
applied on the client must lead to a state equal to the state reached on the server by
|
||||
applying the resulting operation for the server to the server's state.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Put formally, if <em>t</em> is a transformer, and
|
||||
if we have <em>s_c</em> as the state on the client and <em>s_s</em> as the state
|
||||
on the server, and <em>c</em> as the operation that was executed in state <em>s_c</em> on the
|
||||
client, and <em>s</em> as the operation executed on the server in state <em>s_s</em>, then the
|
||||
following condition must hold:<br>
|
||||
<pre>
|
||||
t.transform(c, s).getClientOp().applyTo(c.applyTo(s_c).equals(
|
||||
t.transform(c, s).getServerOp().applyTo(s.applyTo(s_s))
|
||||
</pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
You can create servers and clients, e.g., as follows:
|
||||
<pre>
|
||||
server = new <A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><CODE>PeerImpl</CODE></A><MyOperationType, MyStateType>(
|
||||
"Server", new MyTransformer(), /* initial state */ new MyStateType(...), /* server */ true);
|
||||
client1 = new <A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><CODE>PeerImpl</CODE></A><MyOperationType, MyStateType>("Client1", new MyTransformer(), server);
|
||||
client2 = new <A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><CODE>PeerImpl</CODE></A><MyOperationType, MyStateType>("Client2", new MyTransformer(), server);
|
||||
</pre>
|
||||
|
||||
After that, you can start sending operations to the clients using the
|
||||
<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(com.sap.runlet.operationaltransformation.Peer, O, int)"><CODE>Peer.apply(com.sap.runlet.operationaltransformation.Peer<O, S>, O, int)</CODE></A> method as follows:
|
||||
<pre>
|
||||
client1.<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(com.sap.runlet.operationaltransformation.Peer, O, int)"><CODE>apply</CODE></A>(new MyOperationType(...));
|
||||
client2.<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#apply(com.sap.runlet.operationaltransformation.Peer, O, int)"><CODE>apply</CODE></A>(new MyOperationType(...));
|
||||
...
|
||||
</pre>
|
||||
and those changes will eventually get synchronized across all clients and the server. You can
|
||||
obtain the current state of a peer using the <A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html#getCurrentState()"><CODE>Peer.getCurrentState()</CODE></A>
|
||||
operation.
|
||||
</p>
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
PREV PACKAGE
|
||||
NEXT PACKAGE</FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/package-summary.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="package-summary.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
-155
@@ -1,155 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.6.0_14) on Thu Jul 30 14:17:57 CEST 2009 -->
|
||||
<TITLE>
|
||||
com.sap.runlet.operationaltransformation Class Hierarchy
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2009-07-30">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="com.sap.runlet.operationaltransformation Class Hierarchy";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ========= START OF TOP NAVBAR ======= -->
|
||||
<A NAME="navbar_top"><!-- --></A>
|
||||
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
PREV
|
||||
NEXT</FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/package-tree.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_top"></A>
|
||||
<!-- ========= END OF TOP NAVBAR ========= -->
|
||||
|
||||
<HR>
|
||||
<CENTER>
|
||||
<H2>
|
||||
Hierarchy For Package com.sap.runlet.operationaltransformation
|
||||
</H2>
|
||||
</CENTER>
|
||||
<H2>
|
||||
Class Hierarchy
|
||||
</H2>
|
||||
<UL>
|
||||
<LI TYPE="circle">java.lang.Object<UL>
|
||||
<LI TYPE="circle">com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/AbstractOperation.html" title="class in com.sap.runlet.operationaltransformation"><B>AbstractOperation</B></A><S> (implements com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation">Operation</A><S>)
|
||||
<LI TYPE="circle">com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/ClientServerOperationPair.html" title="class in com.sap.runlet.operationaltransformation"><B>ClientServerOperationPair</B></A><O><LI TYPE="circle">com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/PeerImpl.html" title="class in com.sap.runlet.operationaltransformation"><B>PeerImpl</B></A><O,S> (implements com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation">Peer</A><O,S>)
|
||||
<LI TYPE="circle">com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/StatesAndOperations.html" title="class in com.sap.runlet.operationaltransformation"><B>StatesAndOperations</B></A><O,S><LI TYPE="circle">com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.html" title="class in com.sap.runlet.operationaltransformation"><B>UnmergedOperationsQueue</B></A><O,S></UL>
|
||||
</UL>
|
||||
<H2>
|
||||
Interface Hierarchy
|
||||
</H2>
|
||||
<UL>
|
||||
<LI TYPE="circle">java.lang.Cloneable<UL>
|
||||
<LI TYPE="circle">com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/Operation.html" title="interface in com.sap.runlet.operationaltransformation"><B>Operation</B></A><S></UL>
|
||||
<LI TYPE="circle">com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/Peer.html" title="interface in com.sap.runlet.operationaltransformation"><B>Peer</B></A><O,S><LI TYPE="circle">com.sap.runlet.operationaltransformation.<A HREF="../../../../com/sap/runlet/operationaltransformation/Transformer.html" title="interface in com.sap.runlet.operationaltransformation"><B>Transformer</B></A><O></UL>
|
||||
<HR>
|
||||
|
||||
|
||||
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||||
<A NAME="navbar_bottom"><!-- --></A>
|
||||
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||||
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||||
<TR>
|
||||
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||||
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||||
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||||
<TR ALIGN="center" VALIGN="top">
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../com/sap/runlet/operationaltransformation/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
|
||||
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Tree</B></FONT> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||||
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
</TD>
|
||||
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||||
</EM>
|
||||
</TD>
|
||||
</TR>
|
||||
|
||||
<TR>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
PREV
|
||||
NEXT</FONT></TD>
|
||||
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||||
<A HREF="../../../../index.html?com/sap/runlet/operationaltransformation/package-tree.html" target="_top"><B>FRAMES</B></A>
|
||||
<A HREF="package-tree.html" target="_top"><B>NO FRAMES</B></A>
|
||||
<SCRIPT type="text/javascript">
|
||||
<!--
|
||||
if(window==top) {
|
||||
document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||||
}
|
||||
//-->
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
|
||||
</NOSCRIPT>
|
||||
|
||||
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="skip-navbar_bottom"></A>
|
||||
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 57 B |
@@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 80
|
||||
/svn/monet/!svn/ver/7755/trunk/ngpm/com.sap.runlet.operationaltransformation/src
|
||||
END
|
||||
@@ -1,31 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/src
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-08-26T06:41:31.887030Z
|
||||
7755
|
||||
d046040
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
com
|
||||
dir
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 84
|
||||
/svn/monet/!svn/ver/7755/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com
|
||||
END
|
||||
@@ -1,31 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-08-26T06:41:31.887030Z
|
||||
7755
|
||||
d046040
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
sap
|
||||
dir
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 88
|
||||
/svn/monet/!svn/ver/7755/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap
|
||||
END
|
||||
@@ -1,31 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-08-26T06:41:31.887030Z
|
||||
7755
|
||||
d046040
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
runlet
|
||||
dir
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 95
|
||||
/svn/monet/!svn/ver/7755/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet
|
||||
END
|
||||
@@ -1,31 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-08-26T06:41:31.887030Z
|
||||
7755
|
||||
d046040
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
operationaltransformation
|
||||
dir
|
||||
|
||||
-59
@@ -1,59 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 121
|
||||
/svn/monet/!svn/ver/7755/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation
|
||||
END
|
||||
UnmergedOperationsQueue.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 150
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/UnmergedOperationsQueue.java
|
||||
END
|
||||
package.html
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 134
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/package.html
|
||||
END
|
||||
Transformer.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 138
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/Transformer.java
|
||||
END
|
||||
Operation.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 136
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/Operation.java
|
||||
END
|
||||
AbstractOperation.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 144
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/AbstractOperation.java
|
||||
END
|
||||
ClientServerOperationPair.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 152
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/ClientServerOperationPair.java
|
||||
END
|
||||
Peer.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 131
|
||||
/svn/monet/!svn/ver/7755/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/Peer.java
|
||||
END
|
||||
PeerImpl.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 135
|
||||
/svn/monet/!svn/ver/7755/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/PeerImpl.java
|
||||
END
|
||||
StatesAndOperations.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 146
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/StatesAndOperations.java
|
||||
END
|
||||
-337
@@ -1,337 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-08-26T06:41:31.887030Z
|
||||
7755
|
||||
d046040
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
AbstractOperation.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:51:34.968750Z
|
||||
d732c59e20359bd198a33923b2f2d809
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
361
|
||||
|
||||
ClientServerOperationPair.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:51:43.062500Z
|
||||
bbb0a1b071ec1902c32a01c097de8e37
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
450
|
||||
|
||||
Operation.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T12:03:50.375000Z
|
||||
554af7f7c8f9950b2c3b028713c5dca5
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
742
|
||||
|
||||
Peer.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-09-09T09:21:12.312500Z
|
||||
a213381a03c1b1ca53d5266b07e6db9e
|
||||
2009-08-26T06:41:31.887030Z
|
||||
7755
|
||||
d046040
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4176
|
||||
|
||||
PeerImpl.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-09-09T09:21:12.359375Z
|
||||
1ae5677b824ab53f5e384ae1e294af16
|
||||
2009-08-26T06:41:31.887030Z
|
||||
7755
|
||||
d046040
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
9644
|
||||
|
||||
StatesAndOperations.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T12:03:50.515625Z
|
||||
564632bf246ea174f06feb9b8275e9ea
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1264
|
||||
|
||||
Transformer.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:54:15.703125Z
|
||||
d5a71d7815754f28c22802dd06c746d3
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
539
|
||||
|
||||
UnmergedOperationsQueue.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T11:53:59.046875Z
|
||||
515f02687bcb23fb5542688142243a25
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
3248
|
||||
|
||||
package.html
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T12:14:25.406250Z
|
||||
41ed1dde8ca42604ac0c99dd9cbb47b9
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
3188
|
||||
|
||||
test
|
||||
dir
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
|
||||
public abstract class AbstractOperation<S> implements Operation<S> {
|
||||
@SuppressWarnings("unchecked")
|
||||
public AbstractOperation<S> clone() {
|
||||
try {
|
||||
return (AbstractOperation<S>) super.clone();
|
||||
} catch (CloneNotSupportedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
|
||||
public class ClientServerOperationPair<O extends Operation<?>> {
|
||||
private O clientOp;
|
||||
private O serverOp;
|
||||
|
||||
public ClientServerOperationPair(O clientOp, O serverOp) {
|
||||
super();
|
||||
this.clientOp = clientOp;
|
||||
this.serverOp = serverOp;
|
||||
}
|
||||
|
||||
public O getClientOp() {
|
||||
return clientOp;
|
||||
}
|
||||
|
||||
public O getServerOp() {
|
||||
return serverOp;
|
||||
}
|
||||
}
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
|
||||
/**
|
||||
* A change operation can be applied to some start state of some
|
||||
* universe and transforms that universe into a target state.
|
||||
*
|
||||
* @author Axel Uhl D043530
|
||||
*
|
||||
* @param <S> the class that models the state, on instances of which operations perform changes
|
||||
*/
|
||||
public interface Operation<S> extends Cloneable {
|
||||
public Operation<S> clone();
|
||||
|
||||
/**
|
||||
* Applies this operation to the state <tt>toState</tt>, producing a new target state
|
||||
* which is returned.
|
||||
*
|
||||
* @param toState the state to which to apply this operation
|
||||
* @return the state produced by applying this operation to <tt>toState</tt>
|
||||
*/
|
||||
S applyTo(S toState);
|
||||
}
|
||||
-99
@@ -1,99 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
|
||||
/**
|
||||
* Accepts change operations from clients and maintains a shared state. If new
|
||||
* clients connect, the full state can be sent to the client for initial
|
||||
* synchronization. When a change {@link Operation} is received from a client
|
||||
* that operation will be based on some state. Since that state the
|
||||
* server may have applied one or more change operations already. In order to
|
||||
* synchronize the requesting client, the server transforms all in-between
|
||||
* change operations for the requesting client and sends those transformation
|
||||
* results back to the requesting client. The client's operation, in turn, is
|
||||
* disseminated to all other clients for them to merge into their local replica
|
||||
* of the global state.
|
||||
*
|
||||
* @author Axel Uhl D043530
|
||||
*
|
||||
* @param <O> the type of operations that can be applied to the states
|
||||
* @param <S> the type of the states on which the operations perform changes
|
||||
*/
|
||||
public interface Peer<O extends Operation<S>, S> {
|
||||
|
||||
/**
|
||||
* Enumeration representing the two valid roles a peer can have. There must
|
||||
* be exactly one server, multiple clients are allowed.
|
||||
*
|
||||
* @author Jan Karstens D046040
|
||||
*
|
||||
*/
|
||||
public enum Role {
|
||||
SERVER, CLIENT
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a peer with this peer for replication. From this point on, this
|
||||
* peer will remember which operations it has forwarded to that peer for
|
||||
* later transformation jobs for operations coming in from that client.<p>
|
||||
*
|
||||
* The <tt>peer</tt> is expected to set the state returned by this operation
|
||||
* as its initial state.
|
||||
*
|
||||
* @return the current server state; the calling client can use this as its
|
||||
* initial state
|
||||
*/
|
||||
S addPeer(Peer<O, S> peer);
|
||||
|
||||
/**
|
||||
* Usually, the framework handles calls to this method and framework users
|
||||
* should therefore not need to call this method.
|
||||
* <p>
|
||||
*
|
||||
* Synchronizes an <tt>operation</tt> from the <tt>source</tt> peer to this
|
||||
* peer. The <tt>source</tt> peer specifies how many operations from this
|
||||
* peer it already merged into its operations sequence before having
|
||||
* executed <tt>operation</tt>.
|
||||
* <p>
|
||||
*
|
||||
* The operation has to be transformed using this peer's operational
|
||||
* transformation and using the sequence of operations applied to the
|
||||
* operation's start state up to this peer's current state. This results in
|
||||
* the operation that needs to be applied to the current state to produce
|
||||
* the next state.
|
||||
* <p>
|
||||
*
|
||||
* After applying this possibly transformed operation to this peer's current
|
||||
* state and thus producing a new current state, all registered peers except
|
||||
* <tt>source</tt> are notified about the change by sending them the
|
||||
* transformed operation.
|
||||
*
|
||||
*/
|
||||
void apply(Peer<O, S> source, O operation, int numberOfOperationsSourceHasMergedFromThis);
|
||||
|
||||
/**
|
||||
* Applies a change operation locally to the current peer's state.
|
||||
*/
|
||||
void apply(O operation);
|
||||
|
||||
/**
|
||||
* Tells this peer that the <tt>source</tt> peer has successfully merged
|
||||
* <tt>numberOfMergedOperations</tt> altogether coming from this peer
|
||||
* into its operation sequence. This peer can take this as an opportunity
|
||||
* to clean up the queue and remove the transformed copies of all operations
|
||||
* up to number <tt>numberOfMergedOperations-1</tt>.
|
||||
*/
|
||||
void confirm(Peer<O, S> source, int numberOfMergedOperations);
|
||||
|
||||
/**
|
||||
* Tells the current state in which the peer is. This is the state constructed by
|
||||
* the sequence of calls to {@link #apply(Operation)} and the merged in notifications
|
||||
* from other peers.
|
||||
*/
|
||||
S getCurrentState();
|
||||
|
||||
/**
|
||||
* Blocks until the queue of tasks that works on achieving consistency across peers
|
||||
* has completely drained. This can be useful for testing purposes when you want to
|
||||
* wait until consistency has been reached across clients and server.
|
||||
*/
|
||||
void waitForNotRunning();
|
||||
}
|
||||
-255
@@ -1,255 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/**
|
||||
* A very simple peer implementation for operational transformations that starts
|
||||
* out with a provided initial state and then receives operations which it applies
|
||||
* to its state. It manages a set of clients. Using the <tt>server</tt> constructor
|
||||
* parameter one can configure whether this peer is a client or a server.
|
||||
*
|
||||
* @author Axel Uhl D043530
|
||||
*
|
||||
* @param <O> type of change operations to be processed by this server
|
||||
* @param <S> type of state managed by this server to which the operations can be applied
|
||||
*/
|
||||
public class PeerImpl<O extends Operation<S>, S> implements Peer<O, S> {
|
||||
|
||||
private String name;
|
||||
|
||||
private StatesAndOperations<O, S> statesAndOperations;
|
||||
|
||||
/**
|
||||
* Tells if this peer acts in the server or client role. This is used to determine in which
|
||||
* direction to apply the operational transformation.
|
||||
*/
|
||||
private Role role;
|
||||
|
||||
/**
|
||||
* Tells if this peer is currently actively running, with a certain number of pending / running requests
|
||||
*/
|
||||
private int running = 0;
|
||||
|
||||
/**
|
||||
* Queues operations sent out to a peer in {@link #updatePeers(Operation, Peer)} and whose
|
||||
* merging has not yet been confirmed by that peer. Those messages are transformed when an
|
||||
* operation from that peer is applied. When applying an operation to the peer has been
|
||||
* confirmed, the first operation from the queue is removed because operations sent
|
||||
* from this peer to the remote peer are processed in order.
|
||||
*/
|
||||
private Map<Peer<O, S>, UnmergedOperationsQueue<O, S>> unmergedOperationsForPeer = new HashMap<Peer<O, S>, UnmergedOperationsQueue<O, S>>();
|
||||
|
||||
/**
|
||||
* Remembers per peer how many of that peer's operations this peer has already
|
||||
* applied locally.
|
||||
*/
|
||||
private Map<Peer<O, S>, Integer> numberOfMergedOperations = new HashMap<Peer<O, S>, Integer>();
|
||||
|
||||
private Transformer<O> transformer;
|
||||
|
||||
/**
|
||||
* The background task handler which sends out the asynchronous updates to the peers.
|
||||
*/
|
||||
private ExecutorService merger;
|
||||
|
||||
public PeerImpl(Transformer<O> transformer, S initialState, Role role) {
|
||||
this.transformer = transformer;
|
||||
statesAndOperations = new StatesAndOperations<O, S>(initialState);
|
||||
this.role = role;
|
||||
this.merger = Executors.newSingleThreadExecutor();
|
||||
}
|
||||
|
||||
public PeerImpl(String name, Transformer<O> transformer, S initialState, Role role) {
|
||||
this(transformer, initialState, role);
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a client peer and connects it to the <tt>server</tt> peer, establishing
|
||||
* the two-way link between client and server peers. The initial state is taken from
|
||||
* the server.
|
||||
*/
|
||||
public PeerImpl(Transformer<O> transformer, Peer<O, S> server) {
|
||||
this.transformer = transformer;
|
||||
S initialState = server.addPeer(this);
|
||||
statesAndOperations = new StatesAndOperations<O, S>(initialState);
|
||||
this.role = Role.CLIENT;
|
||||
this.merger = Executors.newSingleThreadExecutor();
|
||||
addPeer(server);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a client peer with a name and connects it to the
|
||||
* <tt>server</tt> peer, establishing the two-way link between client and
|
||||
* server peers. The initial state is taken from the server.
|
||||
*/
|
||||
public PeerImpl(String name, Transformer<O> transformer, Peer<O, S> server) {
|
||||
this(transformer, server);
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finalize() {
|
||||
merger.shutdown();
|
||||
}
|
||||
|
||||
private Transformer<O> getTransformer() {
|
||||
return transformer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public S addPeer(Peer<O, S> peer) {
|
||||
if ( role == Role.CLIENT && getPeers().size() > 0) {
|
||||
throw new RuntimeException("A client must be connected to at most one server");
|
||||
}
|
||||
unmergedOperationsForPeer.put(peer, new UnmergedOperationsQueue<O, S>());
|
||||
numberOfMergedOperations.put(peer, 0);
|
||||
return getCurrentState();
|
||||
}
|
||||
|
||||
private Collection<Peer<O, S>> getPeers() {
|
||||
return unmergedOperationsForPeer.keySet();
|
||||
}
|
||||
|
||||
public S getCurrentState() {
|
||||
return statesAndOperations.getCurrentState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void apply(O operation) {
|
||||
taskStarted();
|
||||
statesAndOperations.apply(operation);
|
||||
updatePeers(operation, /* except */ null);
|
||||
taskFinished();
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void apply(final Peer<O, S> source, O operation,
|
||||
final int numberOfOperationsSourceHasMergedFromThis) {
|
||||
taskStarted();
|
||||
if (!getPeers().contains(source)) {
|
||||
throw new RuntimeException("Peer "+source+" not registered with peer "+this);
|
||||
}
|
||||
// Starting from base up to current, compute transformed operation sequence to send
|
||||
// to client; this will create a sequence of states for the client which eventually
|
||||
// leads up to a state that equals the server's current state.
|
||||
O transformedOp = operation;
|
||||
UnmergedOperationsQueue<O, S> unmergedOperationsForSource = unmergedOperationsForPeer.get(source);
|
||||
int localOpNumber = numberOfOperationsSourceHasMergedFromThis;
|
||||
for (O unconfirmedOperation : unmergedOperationsForSource.getUnmergedOperations(numberOfOperationsSourceHasMergedFromThis)) {
|
||||
if (role == Role.SERVER) {
|
||||
ClientServerOperationPair<O> pair = getTransformer().transform(transformedOp, unconfirmedOperation);
|
||||
transformedOp = pair.getClientOp();
|
||||
unmergedOperationsForSource.updateWithTransformed(localOpNumber, pair.getServerOp());
|
||||
} else {
|
||||
ClientServerOperationPair<O> pair = getTransformer().transform(unconfirmedOperation, transformedOp);
|
||||
transformedOp = pair.getServerOp();
|
||||
unmergedOperationsForSource.updateWithTransformed(localOpNumber, pair.getClientOp());
|
||||
}
|
||||
localOpNumber++;
|
||||
}
|
||||
statesAndOperations.apply(transformedOp); // produce a new current state
|
||||
final int numberOfMergedOperationsFromSource = numberOfMergedOperations.get(source)+1;
|
||||
numberOfMergedOperations.put(source, numberOfMergedOperationsFromSource);
|
||||
// It's important that the following call to confirm is synchronized with the
|
||||
// sending of updates to the source peer. Therefore, the confirm call is executed
|
||||
// in the same serializing background thread:
|
||||
scheduleTask(new Runnable() {
|
||||
public void run() {
|
||||
source.confirm(PeerImpl.this, numberOfMergedOperationsFromSource);
|
||||
}
|
||||
});
|
||||
updatePeers(transformedOp, /* except */source);
|
||||
taskFinished();
|
||||
}
|
||||
|
||||
/**
|
||||
* Propagates the changes described by <tt>operation</tt> to all registered
|
||||
* peers (except the peer identified by <tt>except</tt> if not <tt>null</tt>
|
||||
* ). For each peer, the operation is sent along to that peer's
|
||||
* {@link #apply(Peer, Operation, int)} method together with the
|
||||
* {@link #numberOfMergedOperations number of operations currently merged
|
||||
* from that peer}.
|
||||
*/
|
||||
private synchronized void updatePeers(final O operation, Peer<O, S> except) {
|
||||
for (final Peer<O, S> peer : getPeers()) {
|
||||
if (except == null || !except.equals(peer)) {
|
||||
unmergedOperationsForPeer.get(peer).sentOutOperation(operation);
|
||||
// remember the number of merged operations while still in synchronized block
|
||||
final int numberOfMergedOpsForPeer = numberOfMergedOperations.get(peer);
|
||||
scheduleTask(new Runnable() {
|
||||
public void run() {
|
||||
/*
|
||||
* Thoughts on locking: The peer runs the folling apply(...) call synchronized.
|
||||
* Therefore, it can't take other apply calls (local or from other peers) during
|
||||
* that time. It may, though, have pending tasks in its updatePeers that can
|
||||
* continue to run. This may include updates for this peer which would be received
|
||||
* by this peer's apply(...) method.
|
||||
*/
|
||||
peer.apply(PeerImpl.this, operation, numberOfMergedOpsForPeer);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
if (name != null) {
|
||||
return name;
|
||||
} else {
|
||||
return (role == Role.SERVER?"server":"client")+" "+super.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirm(Peer<O, S> source, int numberOfMergedOperations) {
|
||||
unmergedOperationsForPeer.get(source).confirm(numberOfMergedOperations);
|
||||
}
|
||||
|
||||
/**
|
||||
* Records that a new task is scheduled by incrementing {@link #running} by one, then
|
||||
* schedules the <tt>runnable</tt> with the {@link #merger} executor service. The
|
||||
* <tt>runnable</tt> is wrapped such that when its execution has finished,
|
||||
* {@link #taskFinished()} will be called such that {@link #running} is decremented
|
||||
* properly again and waiting clients in {@link #waitForNotRunning()} can be unblocked.
|
||||
*/
|
||||
private void scheduleTask(final Runnable runnable) {
|
||||
taskStarted();
|
||||
merger.execute(new Runnable() {
|
||||
public void run() {
|
||||
runnable.run();
|
||||
taskFinished();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void taskStarted() {
|
||||
running++;
|
||||
}
|
||||
|
||||
/**
|
||||
* Must be called by all tasks submitted to the {@link #merger} when finished.
|
||||
* Unblocks {@link #waitForNotRunning()} if the merger's queue got empty by this.
|
||||
*/
|
||||
private synchronized void taskFinished() {
|
||||
running--;
|
||||
if (running == 0) {
|
||||
notifyAll();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void waitForNotRunning() {
|
||||
while (running > 0) {
|
||||
try {
|
||||
wait();
|
||||
} catch (InterruptedException e) {
|
||||
// ignore interruption, try again
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-42
@@ -1,42 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Maintains a list of states and the operations that transformed the i-th into
|
||||
* the i+1st, starting with an initial state. Using {@link #apply(Operation)},
|
||||
* operation/state pairs can be appended to the end.
|
||||
* <p>
|
||||
*
|
||||
* @author Axel Uhl D043530
|
||||
*
|
||||
*/
|
||||
public class StatesAndOperations<O extends Operation<S>, S> {
|
||||
private List<S> states = new LinkedList<S>();
|
||||
private List<O> operations = new LinkedList<O>();
|
||||
|
||||
public StatesAndOperations(S initialState) {
|
||||
states.add(initialState);
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies the <tt>operation</tt> to the {@link #getCurrentState() current
|
||||
* state} and records both, the new current state and the operation.
|
||||
*
|
||||
* @return the new current state that results from applying
|
||||
* <tt>operation</tt> to the state that was current when the
|
||||
* operation was invoked.
|
||||
*/
|
||||
public synchronized S apply(O operation) {
|
||||
S result = operation.applyTo(getCurrentState());
|
||||
states.add(result);
|
||||
operations.add(operation);
|
||||
return result;
|
||||
}
|
||||
|
||||
public S getCurrentState() {
|
||||
return states.get(states.size() - 1);
|
||||
}
|
||||
|
||||
}
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
|
||||
public interface Transformer<O extends Operation<?>> {
|
||||
/**
|
||||
* Takes an operation from the client and an operation from the server, both
|
||||
* based on the same state. The complementary pair of operations is computed
|
||||
* such that if the client applies the server operation returned, and the
|
||||
* server applies the client operation returned, both end up in equal states
|
||||
* again.
|
||||
*/
|
||||
ClientServerOperationPair<O> transform(O clientOp, O serverOp);
|
||||
}
|
||||
-91
@@ -1,91 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class UnmergedOperationsQueue<O extends Operation<S>, S> {
|
||||
/**
|
||||
* As the {@link #unmergedOperationsForPeer} queues are cleaned up whenever merge
|
||||
* confirmations are received from peers, we need to remember which local operation
|
||||
* number the first element in the queue resulted from.
|
||||
*/
|
||||
private int numberOfFirstInList;
|
||||
|
||||
private List<O> unmergedOperations;
|
||||
|
||||
public UnmergedOperationsQueue() {
|
||||
numberOfFirstInList = 0;
|
||||
unmergedOperations = new ArrayList<O>(5);
|
||||
}
|
||||
|
||||
/**
|
||||
* After an operation has been locally applied and needs to be propagated
|
||||
* to the peer for which this is the queue of unmerged operations, the operation
|
||||
* must be appended to this queue.
|
||||
*/
|
||||
public synchronized void sentOutOperation(O operationSentOut) {
|
||||
unmergedOperations.add(operationSentOut);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a copied list of unmerged and stepwise transformed local
|
||||
* operations starting at the requested local operation number.
|
||||
*
|
||||
* @param numberOfConfirmedLocalOperations
|
||||
* A value of 0 means that the remote peer has not confirmed the
|
||||
* merge of any local operation yet.
|
||||
*/
|
||||
public synchronized List<O> getUnmergedOperations(int numberOfConfirmedLocalOperations) {
|
||||
return new ArrayList<O>(unmergedOperations.subList(
|
||||
numberOfConfirmedLocalOperations-numberOfFirstInList,
|
||||
unmergedOperations.size()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces the local operation with number <tt>localOperationNumber</tt> in the queue by
|
||||
* <tt>transformedOperation</tt>.
|
||||
*
|
||||
* @param localOperationNumber starts with 0
|
||||
*/
|
||||
public synchronized void updateWithTransformed(int localOperationNumber, O transformedOperation) {
|
||||
unmergedOperations.set(localOperationNumber-numberOfFirstInList, transformedOperation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleans up the queue so that only unconfirmed / unmerged operations
|
||||
* remain. Afterwards, {@link #getUnmergedOperations(int) asking for an
|
||||
* unmerged operation} with an argument for
|
||||
* <tt>numberOfConfirmedLocalOperations</tt> smaller than
|
||||
* <tt>numberOfMergedOperations</tt> passed to this call will result in an
|
||||
* exception.
|
||||
*
|
||||
* @param numberOfMergedOperations
|
||||
* tells how many operations that emerged from the local peer the
|
||||
* remote peer has confirmed to have merged.
|
||||
*/
|
||||
public synchronized void confirm(int numberOfMergedOperations) {
|
||||
for (int i=numberOfFirstInList; i<numberOfMergedOperations; i++) {
|
||||
unmergedOperations.remove(0);
|
||||
}
|
||||
numberOfFirstInList = numberOfMergedOperations;
|
||||
}
|
||||
|
||||
public synchronized String toString() {
|
||||
int i=numberOfFirstInList;
|
||||
StringBuilder result = new StringBuilder();
|
||||
result.append('[');
|
||||
boolean first = true;
|
||||
for (O op : unmergedOperations) {
|
||||
if (!first) {
|
||||
result.append(", ");
|
||||
} else {
|
||||
first = false;
|
||||
}
|
||||
result.append(i);
|
||||
result.append(": ");
|
||||
result.append(op);
|
||||
}
|
||||
result.append(']');
|
||||
return result.toString();
|
||||
}
|
||||
}
|
||||
-58
@@ -1,58 +0,0 @@
|
||||
<body>
|
||||
<p>
|
||||
Use the contents of this package for so-called <em>operational transformations</em>.
|
||||
This can be used to synchronize the states of a number of clients with a single server.
|
||||
The synchronization is performed asynchronously. The construction of the transformation
|
||||
function guarantees to lead to eventual consistency across clients and server.
|
||||
Read more about the general background of the algorithm on which this is based
|
||||
<a href="../docs/JupiterCollaborationSystem_Nichols.pdf">here</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To establish a server to which clients can connect, first decide how your <em>state</em>
|
||||
is encoded on which the <em>operations</em> will perform changes to transition from one
|
||||
state to the next. Then, design your operations class. The trickiest part comes next. You
|
||||
have to define a transformer that maps a pair of your operations to another pair of
|
||||
operations of the same type. The transformer has to implement the
|
||||
{@link com.sap.runlet.operationaltransformation.Transformer} interface, in particular
|
||||
the {@link com.sap.runlet.operationaltransformation.Transformer#transform} method. The
|
||||
transformation function assumes that both input operations have been applied to the same
|
||||
state, one on a client, the other one on the server. The resulting operation for the client
|
||||
applied on the client must lead to a state equal to the state reached on the server by
|
||||
applying the resulting operation for the server to the server's state.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Put formally, if <em>t</em> is a transformer, and
|
||||
if we have <em>s_c</em> as the state on the client and <em>s_s</em> as the state
|
||||
on the server, and <em>c</em> as the operation that was executed in state <em>s_c</em> on the
|
||||
client, and <em>s</em> as the operation executed on the server in state <em>s_s</em>, then the
|
||||
following condition must hold:<br>
|
||||
<pre>
|
||||
t.transform(c, s).getClientOp().applyTo(c.applyTo(s_c).equals(
|
||||
t.transform(c, s).getServerOp().applyTo(s.applyTo(s_s))
|
||||
</pre>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
You can create servers and clients, e.g., as follows:
|
||||
<pre>
|
||||
server = new {@link com.sap.runlet.operationaltransformation.PeerImpl PeerImpl}<MyOperationType, MyStateType>(
|
||||
"Server", new MyTransformer(), /* initial state */ new MyStateType(...), /* server */ true);
|
||||
client1 = new {@link com.sap.runlet.operationaltransformation.PeerImpl PeerImpl}<MyOperationType, MyStateType>("Client1", new MyTransformer(), server);
|
||||
client2 = new {@link com.sap.runlet.operationaltransformation.PeerImpl PeerImpl}<MyOperationType, MyStateType>("Client2", new MyTransformer(), server);
|
||||
</pre>
|
||||
|
||||
After that, you can start sending operations to the clients using the
|
||||
{@link com.sap.runlet.operationaltransformation.Peer#apply} method as follows:
|
||||
<pre>
|
||||
client1.{@link com.sap.runlet.operationaltransformation.Peer#apply apply}(new MyOperationType(...));
|
||||
client2.{@link com.sap.runlet.operationaltransformation.Peer#apply apply}(new MyOperationType(...));
|
||||
...
|
||||
</pre>
|
||||
and those changes will eventually get synchronized across all clients and the server. You can
|
||||
obtain the current state of a peer using the {@link com.sap.runlet.operationaltransformation.Peer#getCurrentState}
|
||||
operation.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 126
|
||||
/svn/monet/!svn/ver/7755/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/test
|
||||
END
|
||||
OperationalTransformationTests.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 162
|
||||
/svn/monet/!svn/ver/7755/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/test/OperationalTransformationTests.java
|
||||
END
|
||||
-73
@@ -1,73 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/test
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-08-26T06:41:31.887030Z
|
||||
7755
|
||||
d046040
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
empty
|
||||
|
||||
OperationalTransformationTests.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-09-09T09:21:11.984375Z
|
||||
c6ff5315b3ae61ceddfbe71b4ff90362
|
||||
2009-08-26T06:41:31.887030Z
|
||||
7755
|
||||
d046040
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
6997
|
||||
|
||||
util
|
||||
dir
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-197
@@ -1,197 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation.test;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import com.sap.runlet.operationaltransformation.AbstractOperation;
|
||||
import com.sap.runlet.operationaltransformation.ClientServerOperationPair;
|
||||
import com.sap.runlet.operationaltransformation.Peer;
|
||||
import com.sap.runlet.operationaltransformation.PeerImpl;
|
||||
import com.sap.runlet.operationaltransformation.Transformer;
|
||||
import com.sap.runlet.operationaltransformation.Peer.Role;
|
||||
import com.sap.runlet.operationaltransformation.test.util.Base64;
|
||||
|
||||
public class OperationalTransformationTests extends TestCase {
|
||||
private Peer<StringInsertOperation, StringState> server;
|
||||
private Peer<StringInsertOperation, StringState> client1, client2;
|
||||
|
||||
public static class StringInsertOperation extends AbstractOperation<StringState> {
|
||||
private int pos;
|
||||
private String s;
|
||||
public StringInsertOperation(int pos, String s) {
|
||||
this.pos = pos;
|
||||
this.s = s;
|
||||
}
|
||||
public StringInsertOperation clone() {
|
||||
return (StringInsertOperation) super.clone();
|
||||
}
|
||||
public int getPos() {
|
||||
return pos;
|
||||
}
|
||||
public String getS() {
|
||||
return s;
|
||||
}
|
||||
public String toString() {
|
||||
return "insert("+getPos()+", \""+getS()+"\")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public StringState applyTo(StringState toState) {
|
||||
return toState.apply(this);
|
||||
}
|
||||
}
|
||||
|
||||
public static class StringInsertTransformer implements Transformer<StringInsertOperation> {
|
||||
@Override
|
||||
public ClientServerOperationPair<StringInsertOperation> transform(StringInsertOperation clientOp, StringInsertOperation serverOp) {
|
||||
StringInsertOperation resultClientOp;
|
||||
StringInsertOperation resultServerOp;
|
||||
if (clientOp.getPos() >= serverOp.getPos()) {
|
||||
resultServerOp = serverOp;
|
||||
resultClientOp = new StringInsertOperation(clientOp.getPos()+serverOp.getS().length(), clientOp.getS());
|
||||
} else {
|
||||
resultClientOp = clientOp;
|
||||
resultServerOp = new StringInsertOperation(serverOp.getPos()+clientOp.getS().length(), serverOp.getS());
|
||||
}
|
||||
return new ClientServerOperationPair<StringInsertOperation>(resultClientOp, resultServerOp);
|
||||
}
|
||||
}
|
||||
|
||||
public static class StringState {
|
||||
private String state;
|
||||
private UUID id;
|
||||
|
||||
public String getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public boolean equals(Object o) {
|
||||
return o instanceof StringState &&
|
||||
this.getState().equals(((StringState) o).getState()) &&
|
||||
this.id.equals(((StringState) o).id);
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return getState().hashCode() ^ id.hashCode();
|
||||
}
|
||||
|
||||
public StringState(String state) {
|
||||
super();
|
||||
id = UUID.randomUUID();
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public StringState apply(StringInsertOperation operation) {
|
||||
String s = this.getState().substring(0, operation.getPos()) +
|
||||
operation.getS()+this.getState().substring(operation.getPos());
|
||||
StringState result = new StringState(s);
|
||||
return result;
|
||||
}
|
||||
|
||||
private UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
protected void setId(UUID id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return "\""+getState()+"\" @ "+getId();
|
||||
}
|
||||
}
|
||||
|
||||
public static class SimpleClient extends PeerImpl<StringInsertOperation, StringState> {
|
||||
public SimpleClient(String name, StringState initialState) {
|
||||
super(name, new StringInsertTransformer(), initialState, Role.SERVER);
|
||||
}
|
||||
}
|
||||
|
||||
public void setUp() {
|
||||
server = new PeerImpl<StringInsertOperation, StringState>(
|
||||
"Server", new StringInsertTransformer(), new StringState(""), Role.SERVER);
|
||||
client1 = new PeerImpl<StringInsertOperation, StringState>("Client1", new StringInsertTransformer(), server);
|
||||
client2 = new PeerImpl<StringInsertOperation, StringState>("Client2", new StringInsertTransformer(), server);
|
||||
}
|
||||
|
||||
public void testBasicTransformation() {
|
||||
client1.apply(new StringInsertOperation(0, "abc"));
|
||||
client2.apply(new StringInsertOperation(0, "def"));
|
||||
client1.waitForNotRunning();
|
||||
client2.waitForNotRunning();
|
||||
server.waitForNotRunning();
|
||||
assertEquals(server.getCurrentState().getState(), client1.getCurrentState().getState());
|
||||
assertEquals(server.getCurrentState().getState(), client2.getCurrentState().getState());
|
||||
assertEquals(6, server.getCurrentState().getState().length());
|
||||
assertTrue(server.getCurrentState().getState().equals("abcdef") || server.getCurrentState().getState().equals("defabc"));
|
||||
}
|
||||
|
||||
public void testTwoMassInserts() {
|
||||
final int COUNT = 100;
|
||||
for (int i = 0; i < COUNT; i++) {
|
||||
client1.apply(new StringInsertOperation(0, "abc"));
|
||||
client2.apply(new StringInsertOperation(0, "def"));
|
||||
}
|
||||
client1.waitForNotRunning();
|
||||
client2.waitForNotRunning();
|
||||
server.waitForNotRunning();
|
||||
assertEquals(server.getCurrentState().getState(), client1.getCurrentState().getState());
|
||||
assertEquals(server.getCurrentState().getState(), client2.getCurrentState().getState());
|
||||
assertEquals(6*COUNT, server.getCurrentState().getState().length());
|
||||
}
|
||||
|
||||
/**
|
||||
* Randomizes the number of changes applied to each client per iteration,
|
||||
* the insert position and the string to be inserted.
|
||||
*/
|
||||
public void testRandomInserts() {
|
||||
final int COUNT = 100;
|
||||
Random r = new Random();
|
||||
int totalLength = 0;
|
||||
for (int i = 0; i < COUNT; i++) {
|
||||
for (int j = r.nextInt(10); j > 0; j--) {
|
||||
byte[] b = new byte[r.nextInt(10)];
|
||||
r.nextBytes(b);
|
||||
String s = Base64.encode(b);
|
||||
client1.apply(new StringInsertOperation(
|
||||
r.nextInt(client1.getCurrentState().getState().length()+1), s));
|
||||
totalLength += s.length();
|
||||
}
|
||||
for (int j = r.nextInt(10); j > 0; j--) {
|
||||
byte[] b = new byte[r.nextInt(10)];
|
||||
r.nextBytes(b);
|
||||
String s = Base64.encode(b);
|
||||
client2.apply(new StringInsertOperation(
|
||||
r.nextInt(client2.getCurrentState().getState().length()+1), s));
|
||||
totalLength += s.length();
|
||||
}
|
||||
}
|
||||
client1.waitForNotRunning();
|
||||
client2.waitForNotRunning();
|
||||
server.waitForNotRunning();
|
||||
assertEquals(server.getCurrentState().getState(), client1.getCurrentState().getState());
|
||||
assertEquals(server.getCurrentState().getState(), client2.getCurrentState().getState());
|
||||
assertEquals(totalLength, server.getCurrentState().getState().length());
|
||||
}
|
||||
|
||||
public void testTwoMassInsertsWithServerReplica() {
|
||||
Peer<StringInsertOperation, StringState> server2 = new PeerImpl<StringInsertOperation, StringState>("Server2",
|
||||
new StringInsertTransformer(), server);
|
||||
final int COUNT = 100;
|
||||
for (int i = 0; i < COUNT; i++) {
|
||||
client1.apply(new StringInsertOperation(0, "abc"));
|
||||
client2.apply(new StringInsertOperation(0, "def"));
|
||||
}
|
||||
client1.waitForNotRunning();
|
||||
client2.waitForNotRunning();
|
||||
server.waitForNotRunning();
|
||||
server2.waitForNotRunning();
|
||||
assertEquals(server.getCurrentState().getState(), client1.getCurrentState().getState());
|
||||
assertEquals(server.getCurrentState().getState(), client2.getCurrentState().getState());
|
||||
assertEquals(server.getCurrentState().getState(), server2.getCurrentState().getState());
|
||||
assertEquals(6*COUNT, server2.getCurrentState().getState().length());
|
||||
}
|
||||
|
||||
}
|
||||
Executable → Regular
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
package com.sap.sailing.operationaltransformation;
|
||||
|
||||
public abstract class AbstractOperation<S> implements Operation<S> {
|
||||
@SuppressWarnings("unchecked")
|
||||
|
||||
Executable → Regular
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
package com.sap.sailing.operationaltransformation;
|
||||
|
||||
public class ClientServerOperationPair<O extends Operation<?>> {
|
||||
private O clientOp;
|
||||
|
||||
Executable → Regular
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
package com.sap.sailing.operationaltransformation;
|
||||
|
||||
/**
|
||||
* A change operation can be applied to some start state of some
|
||||
|
||||
Executable → Regular
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
package com.sap.sailing.operationaltransformation;
|
||||
|
||||
/**
|
||||
* Accepts change operations from clients and maintains a shared state. If new
|
||||
|
||||
Executable → Regular
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
package com.sap.sailing.operationaltransformation;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
|
||||
Executable → Regular
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
package com.sap.sailing.operationaltransformation;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
Executable → Regular
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
package com.sap.sailing.operationaltransformation;
|
||||
|
||||
public interface Transformer<O extends Operation<?>> {
|
||||
/**
|
||||
|
||||
Executable → Regular
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.runlet.operationaltransformation;
|
||||
package com.sap.sailing.operationaltransformation;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
Executable → Regular
-11
@@ -1,11 +0,0 @@
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 131
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/test/util
|
||||
END
|
||||
Base64.java
|
||||
K 25
|
||||
svn:wc:ra_dav:version-url
|
||||
V 143
|
||||
/svn/monet/!svn/ver/7651/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/test/util/Base64.java
|
||||
END
|
||||
-70
@@ -1,70 +0,0 @@
|
||||
10
|
||||
|
||||
dir
|
||||
9910
|
||||
https://forge.sap.corp/svn/monet/trunk/ngpm/com.sap.runlet.operationaltransformation/src/com/sap/runlet/operationaltransformation/test/util
|
||||
https://forge.sap.corp/svn/monet
|
||||
|
||||
|
||||
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
8e1b717f-a215-9248-8963-3bf2ea82000e
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
empty
|
||||
|
||||
Base64.java
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-07-30T12:31:05.390625Z
|
||||
e8f4864c6e3971e407e14d13f2fdccb4
|
||||
2009-07-30T13:54:09.892881Z
|
||||
7651
|
||||
d043530
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
7965
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 10
|
||||
text/plain
|
||||
END
|
||||
-210
@@ -1,210 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation.test.util;
|
||||
|
||||
/**
|
||||
* Implements a BASE64 encoder and decoder. Class <code>Base64</code> provides
|
||||
* static encoding- and decoding-methods for describing binary data through
|
||||
* printable characters. The implementation is compliant to RFC 1521.
|
||||
*
|
||||
* @copyright @version $Revision: #1 $.
|
||||
* @author Stefan Kusterer, Last modified by $Author: d038253 $, Change list
|
||||
* $Change: 156641 $.
|
||||
*/
|
||||
public class Base64 {
|
||||
|
||||
protected static final char[] CHAR_LOOKUP_ARRAY = {
|
||||
/* 0 */'A', /* 1 */'B', /* 2 */'C', /* 3 */'D',
|
||||
/* 4 */'E', /* 5 */'F', /* 6 */'G', /* 7 */'H',
|
||||
/* 8 */'I', /* 9 */'J', /* 10 */'K', /* 11 */'L',
|
||||
/* 12 */'M', /* 13 */'N', /* 14 */'O', /* 15 */'P',
|
||||
/* 16 */'Q', /* 17 */'R', /* 18 */'S', /* 19 */'T',
|
||||
/* 20 */'U', /* 21 */'V', /* 22 */'W', /* 23 */'X',
|
||||
/* 24 */'Y', /* 25 */'Z',
|
||||
/* 26 */'a', /* 27 */'b', /* 28 */'c', /* 29 */'d',
|
||||
/* 30 */'e', /* 31 */'f', /* 32 */'g', /* 33 */'h',
|
||||
/* 34 */'i', /* 35 */'j', /* 36 */'k', /* 37 */'l',
|
||||
/* 38 */'m', /* 39 */'n', /* 40 */'o', /* 41 */'p',
|
||||
/* 42 */'q', /* 43 */'r', /* 44 */'s', /* 45 */'t',
|
||||
/* 46 */'u', /* 47 */'v', /* 48 */'w', /* 49 */'x',
|
||||
/* 50 */'y', /* 51 */'z',
|
||||
/* 52 */'0', /* 53 */'1', /* 54 */'2', /* 55 */'3',
|
||||
/* 56 */'4', /* 57 */'5', /* 58 */'6', /* 59 */'7',
|
||||
/* 60 */'8', /* 61 */'9',
|
||||
/* 62 */'+', /* 63 */'/',
|
||||
/* pad */'=' };
|
||||
|
||||
protected static final int[] VALUE_LOOKUP_ARRAY = new int[128];
|
||||
|
||||
static // Initializer
|
||||
{
|
||||
for ( char i = 0; i < VALUE_LOOKUP_ARRAY.length; i++ ) {
|
||||
if ( CHAR_LOOKUP_ARRAY[0] <= i && i <= CHAR_LOOKUP_ARRAY[25] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = ( i - CHAR_LOOKUP_ARRAY[0] );
|
||||
} else if ( CHAR_LOOKUP_ARRAY[26] <= i && i <= CHAR_LOOKUP_ARRAY[51] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = ( i - CHAR_LOOKUP_ARRAY[26] ) + 26;
|
||||
} else if ( CHAR_LOOKUP_ARRAY[52] <= i && i <= CHAR_LOOKUP_ARRAY[61] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = ( i - CHAR_LOOKUP_ARRAY[52] ) + 52;
|
||||
} else if ( i == CHAR_LOOKUP_ARRAY[62] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = 62;
|
||||
} else if ( i == CHAR_LOOKUP_ARRAY[63] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = 63;
|
||||
} else if ( i == CHAR_LOOKUP_ARRAY[64] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = -1;
|
||||
} else {
|
||||
VALUE_LOOKUP_ARRAY[i] = -2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// do not allow to instantiate this class
|
||||
protected Base64( ) {
|
||||
// only static methods
|
||||
}
|
||||
|
||||
public final static byte[] decode(String in) {
|
||||
char[] c = new char[in.length()];
|
||||
in.getChars(0, in.length(), c, 0);
|
||||
return decode(c);
|
||||
}
|
||||
|
||||
/**
|
||||
* <code>decode</code> a given array of characters.
|
||||
*
|
||||
* @param in The input array of characters
|
||||
* @return The array of bytes
|
||||
*/
|
||||
public final static byte[] decode( char[] in ) {
|
||||
|
||||
if ( in == null || in.length == 0 ) {
|
||||
return new byte[0];
|
||||
}
|
||||
|
||||
int index_in;
|
||||
int index_out;
|
||||
int helper_1 = 0;
|
||||
int helper_2 = 0;
|
||||
int mod = 0;
|
||||
int in_length = in.length;
|
||||
int chr;
|
||||
|
||||
// Determine number of used characters: Ignore linebreaks etc. and count
|
||||
// trailing =-signes
|
||||
for ( index_in = 0; index_in < in.length; index_in++ ) {
|
||||
chr = in[index_in];
|
||||
if ( chr >= 128 ) {
|
||||
in_length--;
|
||||
} else if (VALUE_LOOKUP_ARRAY[chr] < 0) {
|
||||
in_length--;
|
||||
}
|
||||
}
|
||||
|
||||
// Allocate out-buffer
|
||||
byte out[] = new byte[( in_length >>> 2 ) * 3 + ( ( in_length & 0x03 ) > 0 ? ( in_length & 0x03 ) - 1 : 0 )];
|
||||
|
||||
// Do the real decoding
|
||||
for ( index_in = 0, index_out = 0; index_in < in.length && index_out < out.length; index_in++ ) {
|
||||
chr = in[index_in];
|
||||
if ( chr > 127 || VALUE_LOOKUP_ARRAY[chr] == -2 ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
helper_1 = helper_2;
|
||||
helper_2 = VALUE_LOOKUP_ARRAY[chr] > 0 ? VALUE_LOOKUP_ARRAY[chr] : 0;
|
||||
|
||||
switch ( mod ) {
|
||||
case 0:
|
||||
// no operation
|
||||
break;
|
||||
case 1:
|
||||
out[index_out++] = (byte) ( ( helper_1 << 2 ) & 0xFC | ( helper_2 >>> 4 ) & 0x03 );
|
||||
break;
|
||||
case 2:
|
||||
out[index_out++] = (byte) ( ( helper_1 << 4 ) & 0xF0 | ( helper_2 >>> 2 ) & 0x0F );
|
||||
break;
|
||||
case 3:
|
||||
out[index_out++] = (byte) ( ( helper_1 << 6 ) & 0xC0 | helper_2 & 0x3F );
|
||||
break;
|
||||
}
|
||||
|
||||
mod = ( mod < 3 ? mod + 1 : 0 );
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a charcter to an array of chars and insert linebreas if necessary
|
||||
*/
|
||||
private final static int writeToCharArray( char[] out, int idx, char chr ) {
|
||||
out[idx++] = chr;
|
||||
return idx;
|
||||
}
|
||||
|
||||
/**
|
||||
* <code>encode</code> a given array.
|
||||
*
|
||||
* @param in the input array of binary data
|
||||
* @return The array of characters
|
||||
*/
|
||||
public final static String encode( byte[] in ) {
|
||||
|
||||
if ( in == null ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
int index_in;
|
||||
int index_out;
|
||||
char chr;
|
||||
|
||||
// Allocate buffer for result: Consider chars for trailing =-signs
|
||||
// and linebreaks.
|
||||
char out[] = new char[( ( ( in.length + 2 ) / 3 ) << 2 )];
|
||||
|
||||
for ( index_in = 0, index_out = 0; index_in < in.length - 2; index_in += 3 ) {
|
||||
// compute first byte: highest six bits of first byte
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] >>> 2 ) & 0x3F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
// compute second byte: lowest two bits of first byte
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] << 4 ) & 0x30 |
|
||||
// and highest four bits of second byte
|
||||
( in[index_in + 1] >>> 4 ) & 0x0F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
// compute third byte: lowest four bits of second byte
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in + 1] << 2 ) & 0x3C |
|
||||
// and higest two bits of third byte
|
||||
( in[index_in + 2] >>> 6 ) & 0x03];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
// compute fourth byte: lowest six bits of third byte
|
||||
chr = CHAR_LOOKUP_ARRAY[in[index_in + 2] & 0x3F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
}
|
||||
|
||||
// take care of the last bytes (one or two)
|
||||
if ( index_in < in.length ) {
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] >>> 2 ) & 0x3F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
if ( index_in < in.length - 1 ) {
|
||||
// there are two remaining bytes
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] << 4 ) & 0x30 | ( in[index_in + 1] >>> 4 ) & 0x0F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in + 1] << 2 ) & 0x3F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
} else {
|
||||
// there is only one remaining byte
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] << 4 ) & 0x30];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
}
|
||||
}
|
||||
|
||||
// add padding =-signs if required
|
||||
while ( index_out < out.length ) {
|
||||
index_out = writeToCharArray( out, index_out, CHAR_LOOKUP_ARRAY[64] );
|
||||
}
|
||||
|
||||
return new String(out);
|
||||
}
|
||||
}
|
||||
-210
@@ -1,210 +0,0 @@
|
||||
package com.sap.runlet.operationaltransformation.test.util;
|
||||
|
||||
/**
|
||||
* Implements a BASE64 encoder and decoder. Class <code>Base64</code> provides
|
||||
* static encoding- and decoding-methods for describing binary data through
|
||||
* printable characters. The implementation is compliant to RFC 1521.
|
||||
*
|
||||
* @copyright @version $Revision: #1 $.
|
||||
* @author Stefan Kusterer, Last modified by $Author: d038253 $, Change list
|
||||
* $Change: 156641 $.
|
||||
*/
|
||||
public class Base64 {
|
||||
|
||||
protected static final char[] CHAR_LOOKUP_ARRAY = {
|
||||
/* 0 */'A', /* 1 */'B', /* 2 */'C', /* 3 */'D',
|
||||
/* 4 */'E', /* 5 */'F', /* 6 */'G', /* 7 */'H',
|
||||
/* 8 */'I', /* 9 */'J', /* 10 */'K', /* 11 */'L',
|
||||
/* 12 */'M', /* 13 */'N', /* 14 */'O', /* 15 */'P',
|
||||
/* 16 */'Q', /* 17 */'R', /* 18 */'S', /* 19 */'T',
|
||||
/* 20 */'U', /* 21 */'V', /* 22 */'W', /* 23 */'X',
|
||||
/* 24 */'Y', /* 25 */'Z',
|
||||
/* 26 */'a', /* 27 */'b', /* 28 */'c', /* 29 */'d',
|
||||
/* 30 */'e', /* 31 */'f', /* 32 */'g', /* 33 */'h',
|
||||
/* 34 */'i', /* 35 */'j', /* 36 */'k', /* 37 */'l',
|
||||
/* 38 */'m', /* 39 */'n', /* 40 */'o', /* 41 */'p',
|
||||
/* 42 */'q', /* 43 */'r', /* 44 */'s', /* 45 */'t',
|
||||
/* 46 */'u', /* 47 */'v', /* 48 */'w', /* 49 */'x',
|
||||
/* 50 */'y', /* 51 */'z',
|
||||
/* 52 */'0', /* 53 */'1', /* 54 */'2', /* 55 */'3',
|
||||
/* 56 */'4', /* 57 */'5', /* 58 */'6', /* 59 */'7',
|
||||
/* 60 */'8', /* 61 */'9',
|
||||
/* 62 */'+', /* 63 */'/',
|
||||
/* pad */'=' };
|
||||
|
||||
protected static final int[] VALUE_LOOKUP_ARRAY = new int[128];
|
||||
|
||||
static // Initializer
|
||||
{
|
||||
for ( char i = 0; i < VALUE_LOOKUP_ARRAY.length; i++ ) {
|
||||
if ( CHAR_LOOKUP_ARRAY[0] <= i && i <= CHAR_LOOKUP_ARRAY[25] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = ( i - CHAR_LOOKUP_ARRAY[0] );
|
||||
} else if ( CHAR_LOOKUP_ARRAY[26] <= i && i <= CHAR_LOOKUP_ARRAY[51] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = ( i - CHAR_LOOKUP_ARRAY[26] ) + 26;
|
||||
} else if ( CHAR_LOOKUP_ARRAY[52] <= i && i <= CHAR_LOOKUP_ARRAY[61] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = ( i - CHAR_LOOKUP_ARRAY[52] ) + 52;
|
||||
} else if ( i == CHAR_LOOKUP_ARRAY[62] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = 62;
|
||||
} else if ( i == CHAR_LOOKUP_ARRAY[63] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = 63;
|
||||
} else if ( i == CHAR_LOOKUP_ARRAY[64] ) {
|
||||
VALUE_LOOKUP_ARRAY[i] = -1;
|
||||
} else {
|
||||
VALUE_LOOKUP_ARRAY[i] = -2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// do not allow to instantiate this class
|
||||
protected Base64( ) {
|
||||
// only static methods
|
||||
}
|
||||
|
||||
public final static byte[] decode(String in) {
|
||||
char[] c = new char[in.length()];
|
||||
in.getChars(0, in.length(), c, 0);
|
||||
return decode(c);
|
||||
}
|
||||
|
||||
/**
|
||||
* <code>decode</code> a given array of characters.
|
||||
*
|
||||
* @param in The input array of characters
|
||||
* @return The array of bytes
|
||||
*/
|
||||
public final static byte[] decode( char[] in ) {
|
||||
|
||||
if ( in == null || in.length == 0 ) {
|
||||
return new byte[0];
|
||||
}
|
||||
|
||||
int index_in;
|
||||
int index_out;
|
||||
int helper_1 = 0;
|
||||
int helper_2 = 0;
|
||||
int mod = 0;
|
||||
int in_length = in.length;
|
||||
int chr;
|
||||
|
||||
// Determine number of used characters: Ignore linebreaks etc. and count
|
||||
// trailing =-signes
|
||||
for ( index_in = 0; index_in < in.length; index_in++ ) {
|
||||
chr = in[index_in];
|
||||
if ( chr >= 128 ) {
|
||||
in_length--;
|
||||
} else if (VALUE_LOOKUP_ARRAY[chr] < 0) {
|
||||
in_length--;
|
||||
}
|
||||
}
|
||||
|
||||
// Allocate out-buffer
|
||||
byte out[] = new byte[( in_length >>> 2 ) * 3 + ( ( in_length & 0x03 ) > 0 ? ( in_length & 0x03 ) - 1 : 0 )];
|
||||
|
||||
// Do the real decoding
|
||||
for ( index_in = 0, index_out = 0; index_in < in.length && index_out < out.length; index_in++ ) {
|
||||
chr = in[index_in];
|
||||
if ( chr > 127 || VALUE_LOOKUP_ARRAY[chr] == -2 ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
helper_1 = helper_2;
|
||||
helper_2 = VALUE_LOOKUP_ARRAY[chr] > 0 ? VALUE_LOOKUP_ARRAY[chr] : 0;
|
||||
|
||||
switch ( mod ) {
|
||||
case 0:
|
||||
// no operation
|
||||
break;
|
||||
case 1:
|
||||
out[index_out++] = (byte) ( ( helper_1 << 2 ) & 0xFC | ( helper_2 >>> 4 ) & 0x03 );
|
||||
break;
|
||||
case 2:
|
||||
out[index_out++] = (byte) ( ( helper_1 << 4 ) & 0xF0 | ( helper_2 >>> 2 ) & 0x0F );
|
||||
break;
|
||||
case 3:
|
||||
out[index_out++] = (byte) ( ( helper_1 << 6 ) & 0xC0 | helper_2 & 0x3F );
|
||||
break;
|
||||
}
|
||||
|
||||
mod = ( mod < 3 ? mod + 1 : 0 );
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a charcter to an array of chars and insert linebreas if necessary
|
||||
*/
|
||||
private final static int writeToCharArray( char[] out, int idx, char chr ) {
|
||||
out[idx++] = chr;
|
||||
return idx;
|
||||
}
|
||||
|
||||
/**
|
||||
* <code>encode</code> a given array.
|
||||
*
|
||||
* @param in the input array of binary data
|
||||
* @return The array of characters
|
||||
*/
|
||||
public final static String encode( byte[] in ) {
|
||||
|
||||
if ( in == null ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
int index_in;
|
||||
int index_out;
|
||||
char chr;
|
||||
|
||||
// Allocate buffer for result: Consider chars for trailing =-signs
|
||||
// and linebreaks.
|
||||
char out[] = new char[( ( ( in.length + 2 ) / 3 ) << 2 )];
|
||||
|
||||
for ( index_in = 0, index_out = 0; index_in < in.length - 2; index_in += 3 ) {
|
||||
// compute first byte: highest six bits of first byte
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] >>> 2 ) & 0x3F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
// compute second byte: lowest two bits of first byte
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] << 4 ) & 0x30 |
|
||||
// and highest four bits of second byte
|
||||
( in[index_in + 1] >>> 4 ) & 0x0F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
// compute third byte: lowest four bits of second byte
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in + 1] << 2 ) & 0x3C |
|
||||
// and higest two bits of third byte
|
||||
( in[index_in + 2] >>> 6 ) & 0x03];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
// compute fourth byte: lowest six bits of third byte
|
||||
chr = CHAR_LOOKUP_ARRAY[in[index_in + 2] & 0x3F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
}
|
||||
|
||||
// take care of the last bytes (one or two)
|
||||
if ( index_in < in.length ) {
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] >>> 2 ) & 0x3F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
if ( index_in < in.length - 1 ) {
|
||||
// there are two remaining bytes
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] << 4 ) & 0x30 | ( in[index_in + 1] >>> 4 ) & 0x0F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in + 1] << 2 ) & 0x3F];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
} else {
|
||||
// there is only one remaining byte
|
||||
chr = CHAR_LOOKUP_ARRAY[( in[index_in] << 4 ) & 0x30];
|
||||
index_out = writeToCharArray( out, index_out, chr );
|
||||
}
|
||||
}
|
||||
|
||||
// add padding =-signs if required
|
||||
while ( index_out < out.length ) {
|
||||
index_out = writeToCharArray( out, index_out, CHAR_LOOKUP_ARRAY[64] );
|
||||
}
|
||||
|
||||
return new String(out);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user