completed cassandra read/write (and bench) + added transactional vector and ref + cleaned up transactional state hierarchy + rewrote tx state wiring

This commit is contained in:
Jonas Boner 2009-04-27 19:55:57 +02:00
parent e9f7162245
commit 7dec0a747c
60 changed files with 4481 additions and 6283 deletions

View file

@ -1,51 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library" exported="">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/../kernel/build/classes" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module" module-name="util-java" exported="" />
<orderEntry type="module" module-name="kernel" exported="" />
<orderEntry type="module-library" exported="">
<library>
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-core/2.0-SNAPSHOT/guice-core-2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library" exported="">
<library>
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-jsr250/2.0-SNAPSHOT/guice-jsr250-2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/../lib/junit-4.5.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library" exported="">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/../kernel/build/classes" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module" module-name="util-java" exported="" />
<orderEntry type="module-library" exported="">
<library>
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-core/2.0-SNAPSHOT/guice-core-2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library" exported="">
<library>
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-jsr250/2.0-SNAPSHOT/guice-jsr250-2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/../lib/junit-4.5.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>

View file

@ -1,74 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="api-java" default="default" basedir=".">
<description>Builds, tests, and runs the project api-java.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="api-java-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="api-java" default="default" basedir=".">
<description>Builds, tests, and runs the project api-java.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="api-java-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,8 @@
build.xml.data.CRC32=3e53666f
build.xml.script.CRC32=b65508dc
build.xml.stylesheet.CRC32=958a1d3e
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=3e53666f
nbproject/build-impl.xml.script.CRC32=0784ec5f
nbproject/build-impl.xml.stylesheet.CRC32=65b8de21
build.xml.data.CRC32=3e53666f
build.xml.script.CRC32=b65508dc
build.xml.stylesheet.CRC32=958a1d3e@1.25.0.45
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=3e53666f
nbproject/build-impl.xml.script.CRC32=1b57f6f0
nbproject/build-impl.xml.stylesheet.CRC32=ce896a9e@1.25.0.45

View file

@ -1,7 +1,6 @@
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
jaxws.endorsed.dir=C:\\Program Files\\NetBeans 6.5.1\\java2\\modules\\ext\\jaxws21\\api:C:\\Program Files\\NetBeans 6.5.1\\ide10\\modules\\ext\\jaxb\\api
user.properties.file=C:\\Documents and Settings\\jboner\\.netbeans\\6.5\\build.properties
compile.on.save=true
do.depend=false
do.jar=true
javac.debug=true
javadoc.preview=true
user.properties.file=/Users/jboner/.netbeans/dev/build.properties

View file

@ -1,185 +1,217 @@
application.title=api-java
application.vendor=jboner
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
# Uncomment to specify the preferred debugger connection transport:
#debug.transport=dt_socket
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/api-java.jar
dist.javadoc.dir=${dist.dir}/javadoc
excludes=
file.reference.activation-1.1.jar=../lib/activation-1.1.jar
file.reference.akka-util-java.jar=../lib/akka-util-java.jar
file.reference.aopalliance-1.0.jar=../lib/aopalliance-1.0.jar
file.reference.asm-3.1.jar=../lib/asm-3.1.jar
file.reference.catalina-ant.jar=../lib/catalina-ant.jar
file.reference.cglib-2.2.jar=../lib/cglib-2.2.jar
file.reference.colt-1.2.0.jar=../lib/colt-1.2.0.jar
file.reference.commons-codec-1.3.jar=../lib/commons-codec-1.3.jar
file.reference.commons-collections-3.1.jar=../lib/commons-collections-3.1.jar
file.reference.commons-dbcp-1.2.2.jar=../lib/commons-dbcp-1.2.2.jar
file.reference.commons-httpclient-3.1.jar=../lib/commons-httpclient-3.1.jar
file.reference.commons-io-1.3.2.jar=../lib/commons-io-1.3.2.jar
file.reference.commons-lang-2.1.jar=../lib/commons-lang-2.1.jar
file.reference.commons-logging.jar=../lib/commons-logging.jar
file.reference.commons-pool-1.4.jar=../lib/commons-pool-1.4.jar
file.reference.configgy-1.2.jar=../lib/configgy-1.2.jar
file.reference.google-collect-snapshot-20090211.jar=../lib/google-collect-snapshot-20090211.jar
file.reference.grizzly-framework-1.8.6.3.jar=../lib/grizzly-framework-1.8.6.3.jar
file.reference.grizzly-http-1.8.6.3.jar=../lib/grizzly-http-1.8.6.3.jar
file.reference.grizzly-http-servlet-1.8.6.3.jar=../lib/grizzly-http-servlet-1.8.6.3.jar
file.reference.grizzly-http-utils-1.8.6.3.jar=../lib/grizzly-http-utils-1.8.6.3.jar
file.reference.grizzly-portunif-1.8.6.3.jar=../lib/grizzly-portunif-1.8.6.3.jar
file.reference.grizzly-rcm-1.8.6.3.jar=../lib/grizzly-rcm-1.8.6.3.jar
file.reference.grizzly-servlet-webserver-1.8.6.3.jar=../lib/grizzly-servlet-webserver-1.8.6.3.jar
file.reference.guice-core-2.0-SNAPSHOT.jar=../lib/guice-core-2.0-SNAPSHOT.jar
file.reference.guice-jsr250-2.0-SNAPSHOT.jar=../lib/guice-jsr250-2.0-SNAPSHOT.jar
file.reference.jaxb-api-2.1.jar=../lib/jaxb-api-2.1.jar
file.reference.jaxb-impl-2.1.jar=../lib/jaxb-impl-2.1.jar
file.reference.jdom-1.0.jar=../lib/jdom-1.0.jar
file.reference.je-3.3.62.jar=../lib/je-3.3.62.jar
file.reference.jersey-atom-1.0.1.jar=../lib/jersey-atom-1.0.1.jar
file.reference.jersey-core-1.0.1.jar=../lib/jersey-core-1.0.1.jar
file.reference.jersey-json-1.0.1.jar=../lib/jersey-json-1.0.1.jar
file.reference.jersey-server-1.0.1.jar=../lib/jersey-server-1.0.1.jar
file.reference.jettison-1.0.1.jar=../lib/jettison-1.0.1.jar
file.reference.jetty-6.1.6rc0.jar=../lib/jetty-6.1.6rc0.jar
file.reference.jetty-util-6.1.6rc0.jar=../lib/jetty-util-6.1.6rc0.jar
file.reference.jsr250-api-1.0.jar=../lib/jsr250-api-1.0.jar
file.reference.jsr311-api-1.0.jar=../lib/jsr311-api-1.0.jar
file.reference.junit-3.8.2.jar=../lib/junit-3.8.2.jar
file.reference.libthrift-20080411p1.jar=../lib/libthrift-20080411p1.jar
file.reference.log4j-1.2.13.jar=../lib/log4j-1.2.13.jar
file.reference.main-java=src/main/java
file.reference.mina-core-2.0.0-M2-SNAPSHOT.jar=../lib/mina-core-2.0.0-M2-SNAPSHOT.jar
file.reference.mina-integration-scala-2.0.0-M2-SNAPSHOT.jar=../lib/mina-integration-scala-2.0.0-M2-SNAPSHOT.jar
file.reference.protobuf-java-2.0.3.jar=../lib/protobuf-java-2.0.3.jar
file.reference.rome-0.9.jar=../lib/rome-0.9.jar
file.reference.scala-library-2.7.3.jar=../lib/scala-library-2.7.3.jar
file.reference.scalatest-0.9.5.jar=../lib/scalatest-0.9.5.jar
file.reference.scalatest-0.9.5.zip=../lib/scalatest-0.9.5.zip
file.reference.servlet-api-2.5.jar=../lib/servlet-api-2.5.jar
file.reference.slf4j-api-1.4.3.jar=../lib/slf4j-api-1.4.3.jar
file.reference.slf4j-log4j12-1.4.3.jar=../lib/slf4j-log4j12-1.4.3.jar
file.reference.stax-api-1.0-2.jar=../lib/stax-api-1.0-2.jar
file.reference.test-java=src/test/java
file.reference.velocity-1.5.jar=../lib/velocity-1.5.jar
file.reference.voldemort-0.4a.jar=../lib/voldemort-0.4a.jar
file.reference.voldemort-contrib-0.4a.jar=../lib/voldemort-contrib-0.4a.jar
file.reference.xerces.jar=../lib/xerces.jar
file.reference.zookeeper-3.1.0.jar=../lib/zookeeper-3.1.0.jar
includes=**
jar.compress=false
javac.classpath=\
${reference.akka-kernel.jar}:\
${file.reference.guice-core-2.0-SNAPSHOT.jar}:\
${file.reference.guice-jsr250-2.0-SNAPSHOT.jar}:\
${file.reference.activation-1.1.jar}:\
${file.reference.aopalliance-1.0.jar}:\
${file.reference.asm-3.1.jar}:\
${file.reference.catalina-ant.jar}:\
${file.reference.cglib-2.2.jar}:\
${file.reference.colt-1.2.0.jar}:\
${file.reference.akka-util-java.jar}:\
${file.reference.commons-codec-1.3.jar}:\
${file.reference.commons-collections-3.1.jar}:\
${file.reference.commons-dbcp-1.2.2.jar}:\
${file.reference.commons-httpclient-3.1.jar}:\
${file.reference.commons-io-1.3.2.jar}:\
${file.reference.commons-lang-2.1.jar}:\
${file.reference.commons-logging.jar}:\
${file.reference.commons-pool-1.4.jar}:\
${file.reference.configgy-1.2.jar}:\
${file.reference.google-collect-snapshot-20090211.jar}:\
${file.reference.grizzly-framework-1.8.6.3.jar}:\
${file.reference.grizzly-http-1.8.6.3.jar}:\
${file.reference.grizzly-http-servlet-1.8.6.3.jar}:\
${file.reference.grizzly-http-utils-1.8.6.3.jar}:\
${file.reference.grizzly-portunif-1.8.6.3.jar}:\
${file.reference.grizzly-rcm-1.8.6.3.jar}:\
${file.reference.grizzly-servlet-webserver-1.8.6.3.jar}:\
${file.reference.jaxb-api-2.1.jar}:\
${file.reference.jaxb-impl-2.1.jar}:\
${file.reference.jdom-1.0.jar}:\
${file.reference.je-3.3.62.jar}:\
${file.reference.jersey-atom-1.0.1.jar}:\
${file.reference.jersey-core-1.0.1.jar}:\
${file.reference.jersey-json-1.0.1.jar}:\
${file.reference.jersey-server-1.0.1.jar}:\
${file.reference.jettison-1.0.1.jar}:\
${file.reference.jetty-6.1.6rc0.jar}:\
${file.reference.jetty-util-6.1.6rc0.jar}:\
${file.reference.jsr250-api-1.0.jar}:\
${file.reference.jsr311-api-1.0.jar}:\
${file.reference.junit-3.8.2.jar}:\
${file.reference.libthrift-20080411p1.jar}:\
${file.reference.log4j-1.2.13.jar}:\
${file.reference.mina-core-2.0.0-M2-SNAPSHOT.jar}:\
${file.reference.mina-integration-scala-2.0.0-M2-SNAPSHOT.jar}:\
${file.reference.protobuf-java-2.0.3.jar}:\
${file.reference.rome-0.9.jar}:\
${file.reference.scala-library-2.7.3.jar}:\
${file.reference.scalatest-0.9.5.jar}:\
${file.reference.scalatest-0.9.5.zip}:\
${file.reference.servlet-api-2.5.jar}:\
${file.reference.slf4j-api-1.4.3.jar}:\
${file.reference.slf4j-log4j12-1.4.3.jar}:\
${file.reference.stax-api-1.0-2.jar}:\
${file.reference.velocity-1.5.jar}:\
${file.reference.voldemort-0.4a.jar}:\
${file.reference.voldemort-contrib-0.4a.jar}:\
${file.reference.xerces.jar}:\
${file.reference.zookeeper-3.1.0.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.source=1.5
javac.target=1.5
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}:\
${libs.junit_4.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
main.class=
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
project.akka-kernel=../kernel
reference.akka-kernel.jar=${project.akka-kernel}/dist/akka-kernel.jar
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=${file.reference.main-java}
test.src.dir=${file.reference.test-java}
application.title=api-java
application.vendor=jboner
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
# Uncomment to specify the preferred debugger connection transport:
#debug.transport=dt_socket
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/api-java.jar
dist.javadoc.dir=${dist.dir}/javadoc
excludes=
file.reference.activation-1.1.jar=../lib/activation-1.1.jar
file.reference.akka-util-java.jar=../lib/akka-util-java.jar
file.reference.antlr-3.1.3.jar=../lib/antlr-3.1.3.jar
file.reference.aopalliance-1.0.jar=../lib/aopalliance-1.0.jar
file.reference.asm-3.1.jar=../lib/asm-3.1.jar
file.reference.asm-all-2.2.1.jar=../lib/asm-all-2.2.1.jar
file.reference.cassandra.jar=../lib/cassandra.jar
file.reference.catalina-ant.jar=../lib/catalina-ant.jar
file.reference.cglib-2.2.jar=../lib/cglib-2.2.jar
file.reference.colt-1.2.0.jar=../lib/colt-1.2.0.jar
file.reference.commons-cli-1.1.jar=../lib/commons-cli-1.1.jar
file.reference.commons-codec-1.3.jar=../lib/commons-codec-1.3.jar
file.reference.commons-collections-3.2.1.jar=../lib/commons-collections-3.2.1.jar
file.reference.commons-dbcp-1.2.2.jar=../lib/commons-dbcp-1.2.2.jar
file.reference.commons-httpclient-3.1.jar=../lib/commons-httpclient-3.1.jar
file.reference.commons-io-1.3.2.jar=../lib/commons-io-1.3.2.jar
file.reference.commons-javaflow-1.0-SNAPSHOT.jar=../lib/commons-javaflow-1.0-SNAPSHOT.jar
file.reference.commons-lang-2.4.jar=../lib/commons-lang-2.4.jar
file.reference.commons-logging-1.0.4.jar=../lib/commons-logging-1.0.4.jar
file.reference.commons-math-1.1.jar=../lib/commons-math-1.1.jar
file.reference.commons-pool-1.4.jar=../lib/commons-pool-1.4.jar
file.reference.configgy-1.2.jar=../lib/configgy-1.2.jar
file.reference.google-collect-snapshot-20090211.jar=../lib/google-collect-snapshot-20090211.jar
file.reference.grizzly-framework-1.8.6.3.jar=../lib/grizzly-framework-1.8.6.3.jar
file.reference.grizzly-http-1.8.6.3.jar=../lib/grizzly-http-1.8.6.3.jar
file.reference.grizzly-http-servlet-1.8.6.3.jar=../lib/grizzly-http-servlet-1.8.6.3.jar
file.reference.grizzly-http-utils-1.8.6.3.jar=../lib/grizzly-http-utils-1.8.6.3.jar
file.reference.grizzly-portunif-1.8.6.3.jar=../lib/grizzly-portunif-1.8.6.3.jar
file.reference.grizzly-rcm-1.8.6.3.jar=../lib/grizzly-rcm-1.8.6.3.jar
file.reference.grizzly-servlet-webserver-1.8.6.3.jar=../lib/grizzly-servlet-webserver-1.8.6.3.jar
file.reference.guice-core-2.0-SNAPSHOT.jar=../lib/guice-core-2.0-SNAPSHOT.jar
file.reference.guice-jsr250-2.0-SNAPSHOT.jar=../lib/guice-jsr250-2.0-SNAPSHOT.jar
file.reference.high-scale-lib.jar=../lib/high-scale-lib.jar
file.reference.jaxb-api-2.1.jar=../lib/jaxb-api-2.1.jar
file.reference.jaxb-impl-2.1.jar=../lib/jaxb-impl-2.1.jar
file.reference.jdom-1.0.jar=../lib/jdom-1.0.jar
file.reference.je-3.3.62.jar=../lib/je-3.3.62.jar
file.reference.jersey-atom-1.0.1.jar=../lib/jersey-atom-1.0.1.jar
file.reference.jersey-core-1.0.1.jar=../lib/jersey-core-1.0.1.jar
file.reference.jersey-json-1.0.1.jar=../lib/jersey-json-1.0.1.jar
file.reference.jersey-server-1.0.1.jar=../lib/jersey-server-1.0.1.jar
file.reference.jettison-1.0.1.jar=../lib/jettison-1.0.1.jar
file.reference.jetty-6.1.6rc0.jar=../lib/jetty-6.1.6rc0.jar
file.reference.jetty-util-6.1.6rc0.jar=../lib/jetty-util-6.1.6rc0.jar
file.reference.JSAP-2.1.jar=../lib/JSAP-2.1.jar
file.reference.jsr250-api-1.0.jar=../lib/jsr250-api-1.0.jar
file.reference.jsr311-api-1.0.jar=../lib/jsr311-api-1.0.jar
file.reference.junit-3.8.2.jar=../lib/junit-3.8.2.jar
file.reference.junit-4.5.jar=../lib/junit-4.5.jar
file.reference.junit4runner-1.0-SNAPSHOT.jar=../lib/junit4runner-1.0-SNAPSHOT.jar
file.reference.libfb303.jar=../lib/libfb303.jar
file.reference.libthrift-20080411p1.jar=../lib/libthrift-20080411p1.jar
file.reference.libthrift.jar=../lib/libthrift.jar
file.reference.log4j-1.2.15.jar=../lib/log4j-1.2.15.jar
file.reference.lucene-core-2.2.0.jar=../lib/lucene-core-2.2.0.jar
file.reference.main-java=src/main/java
file.reference.mina-core-2.0.0-M2-SNAPSHOT.jar=../lib/mina-core-2.0.0-M2-SNAPSHOT.jar
file.reference.mina-integration-scala-2.0.0-M2-SNAPSHOT.jar=../lib/mina-integration-scala-2.0.0-M2-SNAPSHOT.jar
file.reference.pcj.jar=../lib/pcj.jar
file.reference.protobuf-java-2.0.3.jar=../lib/protobuf-java-2.0.3.jar
file.reference.rome-0.9.jar=../lib/rome-0.9.jar
file.reference.scala-library-2.7.3.jar=../lib/scala-library-2.7.3.jar
file.reference.scala-library-2.7.3.zip=../lib/scala-library-2.7.3.zip
file.reference.scalatest-0.9.5.jar=../lib/scalatest-0.9.5.jar
file.reference.scalatest-0.9.5.zip=../lib/scalatest-0.9.5.zip
file.reference.servlet-api-2.5.jar=../lib/servlet-api-2.5.jar
file.reference.slf4j-api-1.4.3.jar=../lib/slf4j-api-1.4.3.jar
file.reference.slf4j-log4j12-1.4.3.jar=../lib/slf4j-log4j12-1.4.3.jar
file.reference.stax-api-1.0-2.jar=../lib/stax-api-1.0-2.jar
file.reference.stringtemplate-3.0.jar=../lib/stringtemplate-3.0.jar
file.reference.test-java=src/test/java
file.reference.velocity-1.5.jar=../lib/velocity-1.5.jar
file.reference.voldemort-0.4a.jar=../lib/voldemort-0.4a.jar
file.reference.voldemort-contrib-0.4a.jar=../lib/voldemort-contrib-0.4a.jar
file.reference.xerces.jar=../lib/xerces.jar
file.reference.zookeeper-3.1.0.jar=../lib/zookeeper-3.1.0.jar
includes=**
jar.compress=false
javac.classpath=\
${reference.akka-kernel.jar}:\
${file.reference.activation-1.1.jar}:\
${file.reference.akka-util-java.jar}:\
${file.reference.antlr-3.1.3.jar}:\
${file.reference.aopalliance-1.0.jar}:\
${file.reference.asm-3.1.jar}:\
${file.reference.asm-all-2.2.1.jar}:\
${file.reference.cassandra.jar}:\
${file.reference.catalina-ant.jar}:\
${file.reference.cglib-2.2.jar}:\
${file.reference.colt-1.2.0.jar}:\
${file.reference.commons-cli-1.1.jar}:\
${file.reference.commons-codec-1.3.jar}:\
${file.reference.commons-collections-3.2.1.jar}:\
${file.reference.commons-dbcp-1.2.2.jar}:\
${file.reference.commons-httpclient-3.1.jar}:\
${file.reference.commons-io-1.3.2.jar}:\
${file.reference.commons-javaflow-1.0-SNAPSHOT.jar}:\
${file.reference.commons-lang-2.4.jar}:\
${file.reference.commons-logging-1.0.4.jar}:\
${file.reference.commons-math-1.1.jar}:\
${file.reference.commons-pool-1.4.jar}:\
${file.reference.configgy-1.2.jar}:\
${file.reference.google-collect-snapshot-20090211.jar}:\
${file.reference.grizzly-framework-1.8.6.3.jar}:\
${file.reference.grizzly-http-1.8.6.3.jar}:\
${file.reference.grizzly-http-servlet-1.8.6.3.jar}:\
${file.reference.grizzly-http-utils-1.8.6.3.jar}:\
${file.reference.grizzly-portunif-1.8.6.3.jar}:\
${file.reference.grizzly-rcm-1.8.6.3.jar}:\
${file.reference.grizzly-servlet-webserver-1.8.6.3.jar}:\
${file.reference.guice-core-2.0-SNAPSHOT.jar}:\
${file.reference.guice-jsr250-2.0-SNAPSHOT.jar}:\
${file.reference.high-scale-lib.jar}:\
${file.reference.jaxb-api-2.1.jar}:\
${file.reference.jaxb-impl-2.1.jar}:\
${file.reference.jdom-1.0.jar}:\
${file.reference.je-3.3.62.jar}:\
${file.reference.jersey-atom-1.0.1.jar}:\
${file.reference.jersey-core-1.0.1.jar}:\
${file.reference.jersey-json-1.0.1.jar}:\
${file.reference.jersey-server-1.0.1.jar}:\
${file.reference.jettison-1.0.1.jar}:\
${file.reference.jetty-6.1.6rc0.jar}:\
${file.reference.jetty-util-6.1.6rc0.jar}:\
${file.reference.JSAP-2.1.jar}:\
${file.reference.jsr250-api-1.0.jar}:\
${file.reference.jsr311-api-1.0.jar}:\
${file.reference.junit-3.8.2.jar}:\
${file.reference.junit-4.5.jar}:\
${file.reference.junit4runner-1.0-SNAPSHOT.jar}:\
${file.reference.libfb303.jar}:\
${file.reference.libthrift-20080411p1.jar}:\
${file.reference.libthrift.jar}:\
${file.reference.log4j-1.2.15.jar}:\
${file.reference.lucene-core-2.2.0.jar}:\
${file.reference.mina-core-2.0.0-M2-SNAPSHOT.jar}:\
${file.reference.mina-integration-scala-2.0.0-M2-SNAPSHOT.jar}:\
${file.reference.pcj.jar}:\
${file.reference.protobuf-java-2.0.3.jar}:\
${file.reference.rome-0.9.jar}:\
${file.reference.scala-library-2.7.3.jar}:\
${file.reference.scala-library-2.7.3.zip}:\
${file.reference.scalatest-0.9.5.jar}:\
${file.reference.scalatest-0.9.5.zip}:\
${file.reference.servlet-api-2.5.jar}:\
${file.reference.slf4j-api-1.4.3.jar}:\
${file.reference.slf4j-log4j12-1.4.3.jar}:\
${file.reference.stax-api-1.0-2.jar}:\
${file.reference.stringtemplate-3.0.jar}:\
${file.reference.velocity-1.5.jar}:\
${file.reference.voldemort-0.4a.jar}:\
${file.reference.voldemort-contrib-0.4a.jar}:\
${file.reference.xerces.jar}:\
${file.reference.zookeeper-3.1.0.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.source=1.5
javac.target=1.5
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}:\
${libs.junit_4.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
main.class=
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
project.akka-kernel=../kernel
reference.akka-kernel.jar=${project.akka-kernel}/dist/akka-kernel.jar
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=${file.reference.main-java}
test.src.dir=${file.reference.test-java}

View file

@ -1,26 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>api-java</name>
<minimum-ant-version>1.6.5</minimum-ant-version>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
<reference>
<foreign-project>akka-kernel</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
</references>
</configuration>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>api-java</name>
<minimum-ant-version>1.6.5</minimum-ant-version>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
<reference>
<foreign-project>akka-kernel</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
</references>
</configuration>
</project>

View file

@ -103,58 +103,58 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
} catch (RuntimeException e) {
}
}
}
interface Foo {
public String foo(String msg);
@oneway public void bar(String msg);
public void longRunning();
public void throwsException();
public Bar getBar();
interface Foo {
public String foo(String msg);
@oneway public void bar(String msg);
public void longRunning();
public void throwsException();
public Bar getBar();
}
class FooImpl implements Foo {
@Inject private Bar bar;
public Bar getBar() {
return bar;
}
class FooImpl implements Foo {
@Inject private Bar bar;
public Bar getBar() {
return bar;
}
public String foo(String msg) {
return msg + "return_foo ";
}
public void bar(String msg) {
bar.bar(msg);
}
public void longRunning() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
}
public void throwsException() {
throw new RuntimeException("expected");
public String foo(String msg) {
return msg + "return_foo ";
}
public void bar(String msg) {
bar.bar(msg);
}
public void longRunning() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
}
}
interface Bar {
@oneway void bar(String msg);
Ext getExt();
public void throwsException() {
throw new RuntimeException("expected");
}
}
class BarImpl implements Bar {
@Inject private Ext ext;
public Ext getExt() {
return ext;
}
public void bar(String msg) {
}
interface Bar {
@oneway void bar(String msg);
Ext getExt();
}
class BarImpl implements Bar {
@Inject private Ext ext;
public Ext getExt() {
return ext;
}
interface Ext {
void ext();
public void bar(String msg) {
}
}
class ExtImpl implements Ext {
public void ext() {
}
interface Ext {
void ext();
}
class ExtImpl implements Ext {
public void ext() {
}
}

View file

@ -14,7 +14,6 @@ import com.google.inject.Scopes;
import junit.framework.TestCase;
public class InMemoryStateTest extends TestCase {
static String messageLog = "";
@ -22,57 +21,50 @@ public class InMemoryStateTest extends TestCase {
protected void setUp() {
conf.configureActiveObjects(
new RestartStrategy(new AllForOne(), 3, 5000), new Component[]{
new Component(
Stateful.class,
StatefulImpl.class,
new LifeCycle(new Permanent(), 1000),
10000000),
new Component(
Failer.class,
FailerImpl.class,
new LifeCycle(new Permanent(), 1000),
1000),
new Component(
Clasher.class,
ClasherImpl.class,
new LifeCycle(new Permanent(), 1000),
100000)
new RestartStrategy(new AllForOne(), 3, 5000),
new Component[] {
new Component(InMemStateful.class, InMemStatefulImpl.class, new LifeCycle(new Permanent(), 1000), 10000000),
new Component(InMemFailer.class, InMemFailerImpl.class, new LifeCycle(new Permanent(), 1000), 1000),
new Component(InMemClasher.class, InMemClasherImpl.class, new LifeCycle(new Permanent(), 1000), 100000)
}).inject().supervise();
}
// public void testShouldNotRollbackStateForStatefulServerInCaseOfSuccess() {
// Stateful stateful = conf.getActiveObject(Stateful.class);
// stateful.setState("stateful", "init"); // set init state
// stateful.success("stateful", "new state"); // transactional
// assertEquals("new state", stateful.getState("stateful"));
// }
//
// public void testShouldRollbackStateForStatefulServerInCaseOfFailure() {
// Stateful stateful = conf.getActiveObject(Stateful.class);
// stateful.setState("stateful", "init"); // set init state
//
// Failer failer = conf.getActiveObject(Failer.class);
// try {
// stateful.failure("stateful", "new state", failer); // call failing transactional method
// fail("should have thrown an exception");
// } catch (RuntimeException e) { } // expected
// assertEquals("init", stateful.getState("stateful")); // check that state is == init state
// }
// public void testShouldNotRollbackStateForStatefulServerInCaseOfSuccess() {
// Stateful stateful = conf.getActiveObject(Stateful.class);
// stateful.setState("stateful", "init"); // set init state
// stateful.success("stateful", "new state"); // transactional
// assertEquals("new state", stateful.getState("stateful"));
// }
//
// public void testShouldRollbackStateForStatefulServerInCaseOfFailure() {
// Stateful stateful = conf.getActiveObject(Stateful.class);
// stateful.setState("stateful", "init"); // set init state
//
// Failer failer = conf.getActiveObject(Failer.class);
// try {
// stateful.failure("stateful", "new state", failer); // call failing
// transactional method
// fail("should have thrown an exception");
// } catch (RuntimeException e) { } // expected
// assertEquals("init", stateful.getState("stateful")); // check that state is
// == init state
// }
public void testShouldRollbackStateForStatefulServerInCaseOfMessageClash() {
Stateful stateful = conf.getActiveObject(Stateful.class);
InMemStateful stateful = conf.getActiveObject(InMemStateful.class);
stateful.setState("stateful", "init"); // set init state
Clasher clasher = conf.getActiveObject(Clasher.class);
InMemClasher clasher = conf.getActiveObject(InMemClasher.class);
clasher.setState("clasher", "init"); // set init state
// try {
// stateful.clashOk("stateful", "new state", clasher);
// } catch (RuntimeException e) { } // expected
// assertEquals("new state", stateful.getState("stateful")); // check that state is == init state
// assertEquals("was here", clasher.getState("clasher")); // check that state is == init state
// try {
// stateful.clashOk("stateful", "new state", clasher);
// } catch (RuntimeException e) { } // expected
// assertEquals("new state", stateful.getState("stateful")); // check that
// state is == init state
// assertEquals("was here", clasher.getState("clasher")); // check that
// state is == init state
try {
stateful.clashNotOk("stateful", "new state", clasher);
@ -80,113 +72,111 @@ public class InMemoryStateTest extends TestCase {
} catch (RuntimeException e) {
System.out.println(e);
} // expected
assertEquals("init", stateful.getState("stateful")); // check that state is == init state
//assertEquals("init", clasher.getState("clasher")); // check that state is == init state
}
interface Stateful {
// transactional
@transactional
public void success(String key, String msg);
@transactional
public void failure(String key, String msg, Failer failer);
@transactional
public void clashOk(String key, String msg, Clasher clasher);
@transactional
public void clashNotOk(String key, String msg, Clasher clasher);
// non-transactional
public String getState(String key);
public void setState(String key, String value);
}
class StatefulImpl implements Stateful {
@state
private
InMemoryState<String, Object> state = new InMemoryState<String, Object>();
public String getState(String key) {
return (String) state.get(key);
}
public void setState(String key, String msg) {
state.put(key, msg);
}
public void success(String key, String msg) {
state.put(key, msg);
}
public void failure(String key, String msg, Failer failer) {
state.put(key, msg);
failer.fail();
}
public void clashOk(String key, String msg, Clasher clasher) {
state.put(key, msg);
clasher.clash();
}
public void clashNotOk(String key, String msg, Clasher clasher) {
state.put(key, msg);
clasher.clash();
clasher.clash();
}
}
interface Failer {
public void fail();
}
class FailerImpl implements Failer {
public void fail() {
throw new RuntimeException("expected");
}
}
interface Clasher {
public void clash();
public String getState(String key);
public void setState(String key, String value);
}
class ClasherImpl implements Clasher {
@state
private InMemoryState<String, Object> state = new InMemoryState<String, Object>();
public String getState(String key) {
return (String) state.get(key);
}
public void setState(String key, String msg) {
state.put(key, msg);
}
public void clash() {
state.put("clasher", "was here");
// spend some time here
for (long i = 0; i < 1000000000; i++) {
for (long j = 0; j < 10000000; j++) {
j += i;
}
}
// FIXME: this statement gives me this error:
// se.scalablesolutions.akka.kernel.ActiveObjectException:
// Unexpected message [!(scala.actors.Channel@c2b2f6,ErrRef[Right(null)])] to
// [GenericServer[se.scalablesolutions.akka.api.StatefulImpl]] from
// [GenericServer[se.scalablesolutions.akka.api.ClasherImpl]]]
//try { Thread.sleep(1000); } catch (InterruptedException e) {}
}
assertEquals("init", stateful.getState("stateful")); // check that state is
// == init state
// assertEquals("init", clasher.getState("clasher")); // check that state is
// == init state
}
}
interface InMemStateful {
// transactional
@transactional
public void success(String key, String msg);
@transactional
public void failure(String key, String msg, InMemFailer failer);
@transactional
public void clashOk(String key, String msg, InMemClasher clasher);
@transactional
public void clashNotOk(String key, String msg, InMemClasher clasher);
// non-transactional
public String getState(String key);
public void setState(String key, String value);
}
class InMemStatefulImpl implements InMemStateful {
@state
private InMemoryState<String, Object> state = new InMemoryState<String, Object>();
public String getState(String key) {
return (String) state.get(key);
}
public void setState(String key, String msg) {
state.put(key, msg);
}
public void success(String key, String msg) {
state.put(key, msg);
}
public void failure(String key, String msg, InMemFailer failer) {
state.put(key, msg);
failer.fail();
}
public void clashOk(String key, String msg, InMemClasher clasher) {
state.put(key, msg);
clasher.clash();
}
public void clashNotOk(String key, String msg, InMemClasher clasher) {
state.put(key, msg);
clasher.clash();
clasher.clash();
}
}
interface InMemFailer {
public void fail();
}
class InMemFailerImpl implements InMemFailer {
public void fail() {
throw new RuntimeException("expected");
}
}
interface InMemClasher {
public void clash();
public String getState(String key);
public void setState(String key, String value);
}
class InMemClasherImpl implements InMemClasher {
@state
private InMemoryState<String, Object> state = new InMemoryState<String, Object>();
public String getState(String key) {
return (String) state.get(key);
}
public void setState(String key, String msg) {
state.put(key, msg);
}
public void clash() {
state.put("clasher", "was here");
// spend some time here
for (long i = 0; i < 1000000000; i++) {
for (long j = 0; j < 10000000; j++) {
j += i;
}
}
// FIXME: this statement gives me this error:
// se.scalablesolutions.akka.kernel.ActiveObjectException:
// Unexpected message [!(scala.actors.Channel@c2b2f6,ErrRef[Right(null)])]
// to
// [GenericServer[se.scalablesolutions.akka.api.StatefulImpl]] from
// [GenericServer[se.scalablesolutions.akka.api.ClasherImpl]]]
// try { Thread.sleep(1000); } catch (InterruptedException e) {}
}
}

View file

@ -14,7 +14,6 @@ import com.google.inject.Scopes;
import junit.framework.TestCase;
public class PersistentStateTest extends TestCase {
static String messageLog = "";
@ -22,131 +21,121 @@ public class PersistentStateTest extends TestCase {
protected void setUp() {
conf.configureActiveObjects(
new RestartStrategy(new AllForOne(), 3, 5000), new Component[]{
new Component(
Stateful.class,
StatefulImpl.class,
new LifeCycle(new Permanent(), 1000),
10000000),
new Component(
Failer.class,
FailerImpl.class,
new LifeCycle(new Permanent(), 1000),
1000),
new Component(
Clasher.class,
ClasherImpl.class,
new LifeCycle(new Permanent(), 1000),
100000)
new RestartStrategy(new AllForOne(), 3, 5000),
new Component[] {
new Component(PersistentStateful.class, PersistentStatefulImpl.class, new LifeCycle(new Permanent(), 1000), 10000000),
new Component(PersistentFailer.class, PersistentFailerImpl.class, new LifeCycle(new Permanent(), 1000), 1000),
new Component(PersistentClasher.class, PersistentClasherImpl.class, new LifeCycle(new Permanent(), 1000), 100000)
}).inject().supervise();
}
public void testShouldNotRollbackStateForStatefulServerInCaseOfSuccess() {
Stateful stateful = conf.getActiveObject(Stateful.class);
PersistentStateful stateful = conf.getActiveObject(PersistentStateful.class);
stateful.setState("stateful", "init"); // set init state
stateful.success("stateful", "new state"); // transactional
assertEquals("new state", stateful.getState("stateful"));
}
}
interface Stateful {
// transactional
@transactional
public void success(String key, String msg);
interface PersistentStateful {
// transactional
@transactional
public void success(String key, String msg);
@transactional
public void failure(String key, String msg, Failer failer);
@transactional
public void failure(String key, String msg, PersistentFailer failer);
@transactional
public void clashOk(String key, String msg, Clasher clasher);
@transactional
public void clashOk(String key, String msg, PersistentClasher clasher);
@transactional
public void clashNotOk(String key, String msg, Clasher clasher);
@transactional
public void clashNotOk(String key, String msg, PersistentClasher clasher);
// non-transactional
public String getState(String key);
// non-transactional
public String getState(String key);
public void setState(String key, String value);
public void setState(String key, String value);
}
class PersistentStatefulImpl implements PersistentStateful {
@state
private InMemoryState<String, Object> state = new InMemoryState<String, Object>();
public String getState(String key) {
return (String) state.get(key);
}
class StatefulImpl implements Stateful {
@state
private InMemoryState<String, Object> state = new InMemoryState<String, Object>();
public String getState(String key) {
return (String) state.get(key);
}
public void setState(String key, String msg) {
state.put(key, msg);
}
public void success(String key, String msg) {
state.put(key, msg);
}
public void failure(String key, String msg, Failer failer) {
state.put(key, msg);
failer.fail();
}
public void clashOk(String key, String msg, Clasher clasher) {
state.put(key, msg);
clasher.clash();
}
public void clashNotOk(String key, String msg, Clasher clasher) {
state.put(key, msg);
clasher.clash();
clasher.clash();
}
public void setState(String key, String msg) {
state.put(key, msg);
}
interface Failer {
public void fail();
public void success(String key, String msg) {
state.put(key, msg);
}
class FailerImpl implements Failer {
public void fail() {
throw new RuntimeException("expected");
}
public void failure(String key, String msg, PersistentFailer failer) {
state.put(key, msg);
failer.fail();
}
interface Clasher {
public void clash();
public String getState(String key);
public void setState(String key, String value);
public void clashOk(String key, String msg, PersistentClasher clasher) {
state.put(key, msg);
clasher.clash();
}
class ClasherImpl implements Clasher {
@state
private InMemoryState<String, Object> state = new InMemoryState<String, Object>();
public void clashNotOk(String key, String msg, PersistentClasher clasher) {
state.put(key, msg);
clasher.clash();
clasher.clash();
}
}
public String getState(String key) {
return (String) state.get(key);
}
interface PersistentFailer {
public void fail();
}
public void setState(String key, String msg) {
state.put(key, msg);
}
class PersistentFailerImpl implements PersistentFailer {
public void fail() {
throw new RuntimeException("expected");
}
}
public void clash() {
state.put("clasher", "was here");
// spend some time here
for (long i = 0; i < 1000000000; i++) {
for (long j = 0; j < 10000000; j++) {
j += i;
}
interface PersistentClasher {
public void clash();
public String getState(String key);
public void setState(String key, String value);
}
class PersistentClasherImpl implements PersistentClasher {
@state
private InMemoryState<String, Object> state = new InMemoryState<String, Object>();
public String getState(String key) {
return (String) state.get(key);
}
public void setState(String key, String msg) {
state.put(key, msg);
}
public void clash() {
state.put("clasher", "was here");
// spend some time here
for (long i = 0; i < 1000000000; i++) {
for (long j = 0; j < 10000000; j++) {
j += i;
}
// FIXME: this statement gives me this error:
// se.scalablesolutions.akka.kernel.ActiveObjectException:
// Unexpected message [!(scala.actors.Channel@c2b2f6,ErrRef[Right(null)])] to
// [GenericServer[se.scalablesolutions.akka.api.StatefulImpl]] from
// [GenericServer[se.scalablesolutions.akka.api.ClasherImpl]]]
//try { Thread.sleep(1000); } catch (InterruptedException e) {}
}
// FIXME: this statement gives me this error:
// se.scalablesolutions.akka.kernel.ActiveObjectException:
// Unexpected message [!(scala.actors.Channel@c2b2f6,ErrRef[Right(null)])]
// to
// [GenericServer[se.scalablesolutions.akka.api.StatefulImpl]] from
// [GenericServer[se.scalablesolutions.akka.api.ClasherImpl]]]
// try { Thread.sleep(1000); } catch (InterruptedException e) {}
}
}