fixed cassandra persistenc STM tests + added generic Map and Seq traits to Transactional datastructures

This commit is contained in:
Jonas Boner 2009-05-13 19:28:55 +02:00
parent 1a06a67cfc
commit 9349bc3ad8
18 changed files with 689 additions and 439 deletions

View file

@ -792,11 +792,9 @@
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cassandra/cassandra/0.3.0-dev/cassandra-0.3.0-dev.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cassandra/cassandra/0.3.0-dev/cassandra-0.3.0-dev-javadoc.jar!/" />
</JAVADOC>
<JAVADOC />
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cassandra/cassandra/0.3.0-dev/cassandra-0.3.0-dev-sources.jar!/" />
<root url="file://$PROJECT_DIR$/../../java/cassandra/src/java" />
</SOURCES>
</library>
<library name="Maven: com.facebook:thrift:1.0">
@ -949,6 +947,83 @@
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Akka Runtime Libs">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/grizzly-http-1.8.6.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/slf4j-api-1.4.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/velocity-1.5.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/grizzly-rcm-1.8.6.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-dbcp-1.2.2.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/grizzly-portunif-1.8.6.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/grizzly-framework-1.8.6.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jdom-1.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jaxb-api-2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/guice-jsr250-2.0-SNAPSHOT.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/zookeeper-3.1.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/scalatest-0.9.5.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/camel-core-2.0-SNAPSHOT.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jersey-server-1.0.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/asm-3.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/configgy-1.2.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-cli-1.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/akka-util-java.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/rome-0.9.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/log4j-1.2.15.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jsr311-api-1.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/grizzly-http-servlet-1.8.6.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-javaflow-1.0-SNAPSHOT.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/voldemort-0.4a.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/junit-4.5.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-httpclient-3.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/stax-api-1.0-2.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/scala-library-2.7.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/grizzly-servlet-webserver-1.8.6.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/cglib-2.2.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jetty-6.1.6rc0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/cassandra-0.3.0-dev.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jersey-json-1.0.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jersey-atom-1.0.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/grizzly-http-utils-1.8.6.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/voldemort-contrib-0.4a.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-lang-2.4.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/xerces.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/libfb303.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/protobuf-java-2.0.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/colt-1.2.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/je-3.3.62.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/asm-all-2.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/catalina-ant.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/mina-core-2.0.0-M2-SNAPSHOT.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/slf4j-log4j12-1.4.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jersey-core-1.0.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/JSAP-2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/activation-1.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/guice-core-2.0-SNAPSHOT.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/pcj.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/libthrift.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-logging-1.0.4.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-codec-1.3.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jaxb-impl-2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-collections-3.2.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jetty-util-6.1.6rc0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/servlet-api-2.5.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-pool-1.4.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/lucene-core-2.2.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jsr250-api-1.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/aopalliance-1.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/stringtemplate-3.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/jettison-1.0.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/high-scale-lib.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/google-collect-snapshot-20090211.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/mina-integration-scala-2.0.0-M2-SNAPSHOT.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/junit4runner-1.0.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-io-1.3.2.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/commons-math-1.1.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/antlr-3.1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
<UsedPathMacros>
<macro name="MAVEN_REPOSITORY" description="Maven Local Repostiry" />

761
akka.iws
View file

@ -2,18 +2,22 @@
<project relativePaths="false" version="4">
<component name="ChangeListManager">
<list default="true" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/PersistentStateTest.java" afterPath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/PersistentStateTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/akka-api-java.iml" afterPath="$PROJECT_DIR$/api-java/akka-api-java.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java" afterPath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java" />
<change type="DELETED" beforePath="$PROJECT_DIR$/kernel/.project" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/kernel/.classpath" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/akka-kernel.iml" afterPath="$PROJECT_DIR$/kernel/akka-kernel.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/Supervisor.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/Supervisor.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/Kernel.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/Kernel.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/Transaction.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/Transaction.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka.ipr" afterPath="$PROJECT_DIR$/akka.ipr" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/ActiveObjectGuiceConfiguratorTest.java" afterPath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/ActiveObjectGuiceConfiguratorTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka.iws" afterPath="$PROJECT_DIR$/akka.iws" />
<change type="DELETED" beforePath="$PROJECT_DIR$/api-java/.project" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/kernel/.settings/ch.epfl.lamp.sdt.core.prefs" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/util-java/.classpath" afterPath="$PROJECT_DIR$/util-java/.classpath" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/CassandraNode.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/CassandraNode.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/pom.xml" afterPath="$PROJECT_DIR$/kernel/pom.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/util-java/.project" afterPath="$PROJECT_DIR$/util-java/.project" />
<change type="DELETED" beforePath="$PROJECT_DIR$/kernel/.settings/org.eclipse.jdt.ui.prefs" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/api-java/.classpath" afterPath="" />
<change type="DELETED" beforePath="$PROJECT_DIR$/kernel/.settings/org.eclipse.jdt.core.prefs" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/cassandra-0.3.0-dev.jar" afterPath="$PROJECT_DIR$/lib/cassandra-0.3.0-dev.jar" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/.classpath" afterPath="$PROJECT_DIR$/api-java/.classpath" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config/storage-conf.xml" afterPath="$PROJECT_DIR$/config/storage-conf.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/State.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/State.scala" />
</list>
<ignored path="akka.iws" />
<ignored path=".idea/workspace.xml" />
@ -46,32 +50,6 @@
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala" line="106" class="Class at ActiveObject.scala:106" package="">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/kernel/src/main/scala/Transaction.scala" line="60" class="Class at Transaction.scala:60" package="">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
</line_breakpoints>
<breakpoint_any>
<breakpoint>
@ -133,43 +111,72 @@
<file leaf-file-name="Transaction.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/Transaction.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="38" column="18" selection-start="1067" selection-end="1067" vertical-scroll-proportion="0.0">
<state line="60" column="0" selection-start="2011" selection-end="2011" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PersistentStateTest.java" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="PersistentStateTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/PersistentStateTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="13" selection-start="439" selection-end="439" vertical-scroll-proportion="-0.23751687">
<state line="136" column="23" selection-start="4907" selection-end="4907" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="State.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/State.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="93" column="6" selection-start="3023" selection-end="3023" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GenericServer.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/GenericServer.scala">
<file leaf-file-name="InMemoryStateTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="94" column="9" selection-start="2880" selection-end="2880" vertical-scroll-proportion="0.0">
<state line="156" column="35" selection-start="5349" selection-end="5349" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ActiveObject.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala">
<file leaf-file-name="ActiveObjectGuiceConfiguratorTest.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/ActiveObjectGuiceConfiguratorTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="106" column="0" selection-start="3497" selection-end="3497" vertical-scroll-proportion="-5.0384617">
<state line="68" column="0" selection-start="2215" selection-end="2215" vertical-scroll-proportion="0.39889196">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Option.scala" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/../../../bin/scala-2.7.3.final/src/scala-library-src.jar!/scala/Option.scala">
<file leaf-file-name="ActiveObjectGuiceConfiguratorForJava.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="38" column="0" selection-start="1292" selection-end="1292" vertical-scroll-proportion="0.0">
<state line="19" column="6" selection-start="533" selection-end="533" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CassandraNode.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/CassandraNode.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="0" selection-start="907" selection-end="907" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Kernel.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/Kernel.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="76" column="27" selection-start="2390" selection-end="2390" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -230,6 +237,32 @@
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: org.scala-lang:scala-library:2.7.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="scala-library-2.7.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@ -319,6 +352,36 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="scala" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="collection" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
@ -350,6 +413,106 @@
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Akka Runtime Libs" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Akka Runtime Libs" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="cassandra-0.3.0-dev.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Akka Runtime Libs" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="cassandra-0.3.0-dev.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="db" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Akka Runtime Libs" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="cassandra-0.3.0-dev.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="db" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="CommitLog" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@ -428,8 +591,38 @@
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="InMemoryStateTest" />
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ActiveObjectGuiceConfiguratorTest" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
@ -462,6 +655,78 @@
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PersistentStatefulImpl" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PersistentClasherImpl" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="InMemStatefulImpl" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@ -490,14 +755,6 @@
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="&lt; 1.6 &gt;" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@ -509,84 +766,10 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="&lt; 1.6 &gt;" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="classes.jar" />
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="&lt; 1.6 &gt;" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="classes.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="lang" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="&lt; 1.6 &gt;" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="classes.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="lang" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Class" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</component>
<component name="ProjectReloadState">
@ -607,19 +790,19 @@
</navigator>
</component>
<component name="PropertiesComponent">
<property name="GoToClass.includeJavaFiles" value="false" />
<property name="project.structure.proportion" value="0.15" />
<property name="GoToClass.includeJavaFiles" value="false" />
<property name="MemberChooser.copyJavadoc" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder2" value="2" />
<property name="options.splitter.main.proportions" value="0.3" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder2" value="2" />
<property name="options.splitter.main.proportions" value="0.3" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth3" value="697" />
<property name="GoToFile.includeJavaFiles" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth0" value="200" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth2" value="210" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="GoToClass.includeLibraries" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth2" value="217" />
<property name="GoToClass.includeLibraries" value="false" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder0" value="0" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder3" value="3" />
<property name="MemberChooser.showClasses" value="true" />
@ -631,12 +814,12 @@
<property name="RunManagerConfig.showSettingsBeforeRunnig" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder0" value="0" />
<property name="project.structure.last.edited" value="Modules" />
<property name="MemberChooser.sorted" value="false" />
<property name="options.searchVisible" value="true" />
<property name="MemberChooser.sorted" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder1" value="1" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth1" value="221" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth3" value="711" />
<property name="dynamic.classpath" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth3" value="711" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth1" value="228" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder1" value="1" />
</component>
@ -645,108 +828,7 @@
<recent name="se.scalablesolutions.akka.api" />
</key>
</component>
<component name="RestoreUpdateTree">
<UpdateInfo date="5/13/09 7:38 AM" ActionInfo="_Update">
<UpdatedFiles>
<FILE-GROUP>
<option name="myUpdateName" value="Updated from server" />
<option name="myStatusName" value="Changed on server" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="CHANGED_ON_SERVER" />
<FILE-GROUP>
<option name="myUpdateName" value="Updated" />
<option name="myStatusName" value="Changed" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="UPDATED" />
<PATH>$PROJECT_DIR$/akka.iws</PATH>
<PATH>$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java</PATH>
<PATH>$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala</PATH>
<PATH>$PROJECT_DIR$/kernel/src/main/scala/Transaction.scala</PATH>
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Created" />
<option name="myStatusName" value="Created" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="CREATED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Deleted" />
<option name="myStatusName" value="Deleted" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="true" />
<option name="myId" value="REMOVED_FROM_REPOSITORY" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Restored" />
<option name="myStatusName" value="Will be restored" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="RESTORED" />
</FILE-GROUP>
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Modified" />
<option name="myStatusName" value="Modified" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MODIFIED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Skipped" />
<option name="myStatusName" value="Skipped" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="SKIPPED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Merged with conflicts" />
<option name="myStatusName" value="Will be merged with conflicts" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MERGED_WITH_CONFLICTS" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Merged" />
<option name="myStatusName" value="Will be merged" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="MERGED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Not in repository" />
<option name="myStatusName" value="Not in repository" />
<option name="mySupportsDeletion" value="true" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="UNKNOWN" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Locally added" />
<option name="myStatusName" value="Locally added" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="LOCALLY_ADDED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Locally removed" />
<option name="myStatusName" value="Locally removed" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="LOCALLY_REMOVED" />
</FILE-GROUP>
<FILE-GROUP>
<option name="myUpdateName" value="Switched" />
<option name="myStatusName" value="Switched" />
<option name="mySupportsDeletion" value="false" />
<option name="myCanBeAbsent" value="false" />
<option name="myId" value="SWITCHED" />
</FILE-GROUP>
</UpdatedFiles>
</UpdateInfo>
</component>
<component name="RunManager" selected="JUnit.InMemoryStateTest">
<component name="RunManager" selected="JUnit.PersistentStateTest">
<tempConfiguration default="false" name="Scala Console" type="ScalaScriptConsoleRunConfiguration" factoryName="Scala Console">
<module name="" />
<setting name="vmparams" value="" />
@ -849,7 +931,7 @@
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="" />
<module name="akka-kernel" />
<envs />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
@ -911,11 +993,42 @@
<option name="Make" value="true" />
</method>
</configuration>
<list size="4">
<configuration default="false" name="PersistentStateTest" type="JUnit" factoryName="JUnit" enabled="false" merge="false" sample_coverage="true" runner="emma">
<module name="akka-api-java" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="PACKAGE_NAME" value="se.scalablesolutions.akka.api" />
<option name="MAIN_CLASS_NAME" value="se.scalablesolutions.akka.api.PersistentStateTest" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-Dcassandra -Dstorage-config=config/ -Dpidfile=akka.pid" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="ADDITIONAL_CLASS_PATH" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="58465" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method>
<option name="Make" value="true" />
</method>
</configuration>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="Application.Kernel" />
<item index="1" class="java.lang.String" itemvalue="JUnit.CamelSpec" />
<item index="2" class="java.lang.String" itemvalue="JUnit.InMemoryStateTest" />
<item index="3" class="java.lang.String" itemvalue="Scala Console.Scala Console" />
<item index="3" class="java.lang.String" itemvalue="JUnit.PersistentStateTest" />
<item index="4" class="java.lang.String" itemvalue="Scala Console.Scala Console" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@ -978,14 +1091,14 @@
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="12" side_tool="false" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24945927" sideWeight="0.6875" order="1" side_tool="false" />
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32879376" sideWeight="0.5" order="7" side_tool="false" />
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32780612" sideWeight="0.5" order="7" side_tool="false" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="true" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4719388" sideWeight="0.5" order="2" side_tool="false" x="4" y="22" width="1436" height="878" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39989322" sideWeight="0.75" order="0" side_tool="false" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39923468" sideWeight="0.5" order="3" side_tool="false" />
<window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" />
<window_info id="REST Client" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32908162" sideWeight="0.5" order="-1" side_tool="false" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32780612" sideWeight="0.5" order="10" side_tool="false" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" />
<window_info id="REST Client" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32908162" sideWeight="0.5" order="7" side_tool="false" />
<window_info id="FindBugs-IDEA" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32976654" sideWeight="0.5" order="9" side_tool="false" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24965987" sideWeight="0.5" order="2" side_tool="false" />
@ -1032,124 +1145,116 @@
</buildFile>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/CamelSpec.scala">
<entry file="jar://$PROJECT_DIR$/lib/cassandra-0.3.0-dev.jar!/org/apache/cassandra/db/CommitLog.class">
<provider selected="true" editor-type-id="text-editor">
<state line="83" column="0" selection-start="2548" selection-end="2548" vertical-scroll-proportion="0.0">
<state line="85" column="0" selection-start="4012" selection-end="4012" vertical-scroll-proportion="1.8144927">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/Kernel.scala">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/Supervisor.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="33" column="0" selection-start="932" selection-end="932" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="159" column="23" selection-start="6771" selection-end="6771" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="62" column="8" selection-start="2385" selection-end="2385" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar:///System/Library/Frameworks/JavaVM.framework/Home/../Classes/classes.jar!/java/lang/Class.class">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/net/lag/configgy/1.2/configgy-1.2.jar!/net/lag/logging/Logger.class">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/../../../bin/scala-2.7.3.final/src/scala-library-src.jar!/scala/Function1.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="0" selection-start="1217" selection-end="1217" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/../../../bin/scala-2.7.3.final/src/scala-library-src.jar!/scala/collection/mutable/ArrayBuffer.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="0" selection-start="972" selection-end="972" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="uml://se.scalablesolutions.akka.kernel.config.ActiveObjectGuiceConfiguratorForJava">
<provider selected="true" editor-type-id="UmlClassDiagramEditorProvider">
<state>
<classes>
<class fqn="java.lang.Object" x="0.0" y="142.0" />
<class fqn="se.scalablesolutions.akka.kernel.config.ActiveObjectGuiceConfiguratorForJava" x="0.0" y="0.0" />
<class fqn="scala.ScalaObject" x="0.0" y="71.0" />
</classes>
<packages />
<edges />
<settings isCamel="false" isColorManagerEnabled="true" isFieldsVisible="false" isConstructorsVisible="false" isMethodsVisible="false" isShowDependencies="false" isShowInnerClasses="false" defaultVisibility="private" isPropertiesVisible="false" zoom="1.0" x="153.0" y="84.0" />
<SelectedNodes>
<node fqn="se.scalablesolutions.akka.kernel.config.ActiveObjectGuiceConfiguratorForJava" />
</SelectedNodes>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/GenericServer.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="94" column="9" selection-start="2880" selection-end="2880" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/../../../bin/scala-2.7.3.final/src/scala-library-src.jar!/scala/Option.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="38" column="0" selection-start="1292" selection-end="1292" vertical-scroll-proportion="0.0">
<state line="13" column="0" selection-start="296" selection-end="296" vertical-scroll-proportion="0.11080332">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="106" column="0" selection-start="3497" selection-end="3497" vertical-scroll-proportion="-5.0384617">
<state line="166" column="0" selection-start="5624" selection-end="5624" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java">
<entry file="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.7.3/scala-library-2.7.3-sources.jar!/scala/collection/mutable/HashSet.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="13" selection-start="428" selection-end="428" vertical-scroll-proportion="0.0">
<state line="30" column="0" selection-start="970" selection-end="970" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/junit-4.5.jar!/junit/framework/Assert.class">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/Kernel.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<state line="76" column="27" selection-start="2390" selection-end="2390" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/Transaction.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="38" column="18" selection-start="1067" selection-end="1067" vertical-scroll-proportion="0.0">
<state line="60" column="0" selection-start="2011" selection-end="2011" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="6" selection-start="533" selection-end="533" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/CassandraNode.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="0" selection-start="907" selection-end="907" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.7.3/scala-library-2.7.3-sources.jar!/scala/RandomAccessSeq.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/PersistentStateTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="13" selection-start="439" selection-end="439" vertical-scroll-proportion="-0.23751687">
<state line="136" column="23" selection-start="4907" selection-end="4907" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/collection/HashTrie.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="75" column="33" selection-start="2678" selection-end="2678" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/DataFlowVariable.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="142" column="0" selection-start="3633" selection-end="4159" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/collection/Vector.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="44" column="120" selection-start="1815" selection-end="1830" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/State.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="93" column="6" selection-start="3023" selection-end="3023" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="156" column="35" selection-start="5349" selection-end="5349" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/ActiveObjectGuiceConfiguratorTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="68" column="0" selection-start="2215" selection-end="2215" vertical-scroll-proportion="0.39889196">
<folding />
</state>
</provider>

View file

@ -51,7 +51,10 @@
<classpathentry kind="var" path="M2_REPO/com/facebook/thrift/1.0/thrift-1.0.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/util-java"/>
<classpathentry kind="lib" path="/akka-kernel/target/akka-kernel-0.1.jar"/>
<classpathentry kind="lib" path="/akka-kernel/target/akka-kernel-0.1.jar" sourcepath="/akka-kernel/src/main/scala"/>
<classpathentry kind="lib" path="/util-java/target/akka-util-java-0.1.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/commons-collections-3.2.1.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/commons-lang-2.4.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/high-scale-lib.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>

View file

@ -0,0 +1,5 @@
#Wed May 13 10:49:41 CEST 2009
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.source=1.5

View file

@ -57,6 +57,16 @@
<orderEntry type="library" name="Maven: org.jmock:jmock:2.4.0" level="project" />
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.1" level="project" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/../config" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Akka Runtime Libs" level="project" />
</component>
</module>

View file

@ -66,7 +66,7 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
String str = conf.getActiveObject("string");
fail("exception should have been thrown");
} catch (Exception e) {
assertEquals("Class java.lang.String has not been put under supervision (by passing in the config to the supervise() method", e.getMessage());
assertEquals("Class string has not been put under supervision (by passing in the config to the supervise() method", e.getMessage());
}
}

View file

@ -107,7 +107,7 @@ class InMemStatefulImpl implements InMemStateful {
private TransactionalMap<String, String> state = new InMemoryTransactionalMap<String, String>();
public String getState(String key) {
return state.get(key);
return state.get(key).get();
}
public void setState(String key, String msg) {
@ -158,7 +158,7 @@ class InMemClasherImpl implements InMemClasher {
private TransactionalMap<String, Object> state = new InMemoryTransactionalMap<String, Object>();
public String getState(String key) {
return (String) state.get(key);
return (String) state.get(key).get();
}
public void setState(String key, String msg) {

View file

@ -6,7 +6,13 @@ package se.scalablesolutions.akka.api;
import se.scalablesolutions.akka.annotation.*;
import se.scalablesolutions.akka.kernel.config.*;
import se.scalablesolutions.akka.kernel.config.JavaConfig.AllForOne;
import se.scalablesolutions.akka.kernel.config.JavaConfig.Component;
import se.scalablesolutions.akka.kernel.config.JavaConfig.LifeCycle;
import se.scalablesolutions.akka.kernel.config.JavaConfig.Permanent;
import se.scalablesolutions.akka.kernel.config.JavaConfig.RestartStrategy;
import static se.scalablesolutions.akka.kernel.config.JavaConfig.*;
import se.scalablesolutions.akka.kernel.Kernel;
import se.scalablesolutions.akka.kernel.TransactionalMap;
import se.scalablesolutions.akka.kernel.CassandraPersistentTransactionalMap;
@ -15,26 +21,43 @@ import junit.framework.TestCase;
public class PersistentStateTest extends TestCase {
static String messageLog = "";
static {
Kernel.startCassandra();
}
final private ActiveObjectGuiceConfiguratorForJava conf = new ActiveObjectGuiceConfiguratorForJava();
protected void setUp() {
conf.configureActiveObjects(
new JavaConfig.RestartStrategy(new JavaConfig.AllForOne(), 3, 5000),
new Component[] {
new Component[] {
new Component("persistent-stateful", PersistentStateful.class, PersistentStatefulImpl.class, new LifeCycle(new Permanent(), 1000), 10000000),
new Component("persistent-failer", PersistentFailer.class, PersistentFailerImpl.class, new LifeCycle(new Permanent(), 1000), 1000),
new Component("persistent-clasher", PersistentClasher.class, PersistentClasherImpl.class, new LifeCycle(new Permanent(), 1000), 100000)
}).inject().supervise();
}).supervise();
}
protected void tearDown() {
conf.stop();
}
public void testShouldNotRollbackStateForStatefulServerInCaseOfSuccess() {
/*
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"));
*/
assertTrue(true);
PersistentStateful stateful = conf.getActiveObject("persistent-stateful");
stateful.setState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init"); // set init state
stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state"); // transactional
stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state"); // to trigger commit
assertEquals("new state", stateful.getState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess"));
}
public void testShouldRollbackStateForStatefulServerInCaseOfFailure() {
PersistentStateful stateful = conf.getActiveObject("persistent-stateful");
stateful.setState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init"); // set init state
PersistentFailer failer = conf.getActiveObject("persistent-failer");
try {
stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer); // call failing transactional method
fail("should have thrown an exception");
} catch (RuntimeException e) {
} // expected
assertEquals("init", stateful.getState("testShouldRollbackStateForStatefulServerInCaseOfFailure")); // check that state is == init state
}
}
@ -60,7 +83,7 @@ class PersistentStatefulImpl implements PersistentStateful {
private TransactionalMap state = new CassandraPersistentTransactionalMap(this);
public String getState(String key) {
return (String)state.get(key);
return (String)state.get(key).get();
}
public void setState(String key, String msg) {
@ -110,7 +133,7 @@ class PersistentClasherImpl implements PersistentClasher {
private TransactionalMap state = new CassandraPersistentTransactionalMap(this);
public String getState(String key) {
return (String)state.get(key);
return (String)state.get(key).get();
}
public void setState(String key, String msg) {

View file

@ -33,8 +33,8 @@
<StagingFileDirectory>/Users/jboner/src/scala/akka/storage/staging</StagingFileDirectory>
<CommitLogFastSync>false</CommitLogFastSync>
<Tables>
<Table Name = "akka">
<ColumnFamily ColumnSort="Name" Name="hashtrie"/>
<Table Name="akka">
<ColumnFamily ColumnSort="Name" Name="map"/>
<!--ColumnFamily ColumnType="Super" ColumnSort="Name" Name="Super2"/-->
</Table>
</Tables>

View file

@ -90,6 +90,7 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="Akka Runtime Libs" level="project" />
</component>
</module>

View file

@ -40,6 +40,18 @@
<artifactId>guice-jsr250</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
<version>3.1.0.BETA2</version>
</dependency>
<!-- For Jersey -->
<dependency>
<groupId>com.sun.grizzly</groupId>
<artifactId>grizzly-servlet-webserver</artifactId>
@ -60,11 +72,8 @@
<artifactId>jersey-atom</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
<version>3.1.0.BETA2</version>
</dependency>
<!-- For Cassandra -->
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra</artifactId>
@ -81,10 +90,11 @@
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.0-SNAPSHOT</version>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<!--dependency>
<groupId>voldemort</groupId>
<artifactId>voldemort</artifactId>
@ -100,6 +110,8 @@
<artifactId>zookeeper</artifactId>
<version>3.1.0</version>
</dependency-->
<!-- For third-party logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
@ -115,7 +127,9 @@
<artifactId>log4j</artifactId>
<version>1.2.13</version>
</dependency>
<dependency>
<!-- For Testing -->
<dependency>
<groupId>org.scala-tools.testing</groupId>
<artifactId>scalatest</artifactId>
<version>0.9.5</version>

View file

@ -15,6 +15,8 @@ import org.apache.cassandra.service._
*/
final object CassandraNode extends Logging {
// NOTE: requires command line options:
// -Dcassandra -Dstorage-config=config/ -Dpidfile=akka.pid
val TABLE_NAME = "akka"
val ACTOR_KEY_PREFIX = "actor"
val ACTOR_MAP_COLUMN_FAMILY = "map"
@ -23,11 +25,7 @@ final object CassandraNode extends Logging {
private[this] var serializer: Serializer = new JavaSerializationSerializer
// TODO: is this server thread-safe or needed to be wrapped up in an actor?
private[this] val server = {
val ctor = classOf[CassandraServer].getConstructor(Array[Class[_]]():_*)
ctor.setAccessible(true)
ctor.newInstance(Array[AnyRef]():_*).asInstanceOf[CassandraServer]
}
private[this] val server = classOf[CassandraServer].newInstance.asInstanceOf[CassandraServer]
def start = {
try {
@ -48,7 +46,8 @@ final object CassandraNode extends Logging {
ACTOR_KEY_PREFIX + ":" + actorName,
ACTOR_MAP_COLUMN_FAMILY + ":" + entry,
serializer.out(content),
System.currentTimeMillis)
System.currentTimeMillis,
false) // FIXME: what is this flag for?
}
def insertActorStorageEntries(actorName: String, entries: List[Tuple2[String, AnyRef]]) = {
@ -59,10 +58,11 @@ final object CassandraNode extends Logging {
cls.add(new column_t(entry._1, serializer.out(entry._2), System.currentTimeMillis))
columns.put(ACTOR_MAP_COLUMN_FAMILY, cls)
}
server.batch_insert_blocking(new batch_mutation_t(
server.batch_insert(new batch_mutation_t(
TABLE_NAME,
ACTOR_KEY_PREFIX + ":" + actorName,
columns))
columns),
false) // non-blocking
}
def getActorStorageEntryFor(actorName: String, entry: AnyRef): Option[AnyRef] = {

View file

@ -74,7 +74,7 @@ object Kernel extends Logging {
}
private def cassandraBenchmark = {
val NR_ENTRIES = 1000000
val NR_ENTRIES = 100000
println("=================================================")
var start = System.currentTimeMillis

View file

@ -7,6 +7,9 @@ package se.scalablesolutions.akka.kernel
import se.scalablesolutions.akka.collection._
import scala.collection.mutable.HashMap
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
trait Transactional {
private[kernel] def begin
private[kernel] def commit
@ -20,14 +23,40 @@ trait Transactional {
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
trait TransactionalMap[K, V] extends Transactional {
def put(key: K, value: V)
def remove(key: K)
def get(key: K): V
def contains(key: K): Boolean
def elements: Iterator[(K, V)]
def size: Int
def clear
trait TransactionalMap[K, V] extends Transactional with scala.collection.mutable.Map[K, V] {
def remove(key: K)
}
/**
* Not thread-safe, but should only be using from within an Actor, e.g. one single thread at a time.
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class InMemoryTransactionalMap[K, V] extends TransactionalMap[K, V] {
protected[kernel] var state = new HashTrie[K, V]
protected[kernel] var snapshot = state
// ---- For Transactional ----
override def begin = snapshot = state
override def commit = snapshot = state
override def rollback = state = snapshot
// ---- Overriding scala.collection.mutable.Map behavior ----
override def contains(key: K): Boolean = state.contains(key)
override def clear = state = new HashTrie[K, V]
override def size: Int = state.size
// ---- For scala.collection.mutable.Map ----
override def remove(key: K) = state = state - key
override def elements: Iterator[(K, V)] = state.elements
override def get(key: K): Option[V] = state.get(key)
override def put(key: K, value: V): Option[V] = {
val oldValue = state.get(key)
state = state.update(key, value)
oldValue
}
override def -=(key: K) = remove(key)
override def update(key: K, value: V) = put(key, value)
}
/**
@ -40,42 +69,21 @@ trait TransactionalMap[K, V] extends Transactional {
*/
abstract class PersistentTransactionalMap[K, V] extends TransactionalMap[K, V] {
protected[kernel] val changeSet = new HashMap[K, V]
override def begin = {
changeSet.clear
}
override def put(key: K, value: V) = {
changeSet += key -> value
}
override def remove(key: K) = {
changeSet -= key
}
def getRange(start: Int, count: Int)
}
/**
* Not thread-safe, but should only be using from within an Actor, e.g. one single thread at a time.
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class InMemoryTransactionalMap[K, V] extends TransactionalMap[K, V] {
protected[kernel] var state = new HashTrie[K, V]
protected[kernel] var snapshot = state
override def begin = snapshot = state
override def commit = snapshot = state
override def rollback = state = snapshot
override def put(key: K, value: V) = state = state.update(key, value)
override def get(key: K): V = state.get(key).getOrElse(throw new NoSuchElementException("No value for key [" + key + "]"))
override def remove(key: K) = state = state - key
override def contains(key: K): Boolean = state.contains(key)
override def elements: Iterator[(K, V)] = state.elements
override def size: Int = state.size
override def clear = state = new HashTrie[K, V]
def getRange(start: Int, count: Int)
// ---- For Transactional ----
override def begin = changeSet.clear
override def rollback = {}
// ---- For scala.collection.mutable.Map ----
override def put(key: K, value: V): Option[V] = {
changeSet += key -> value
None // always return None to speed up writes (else need to go to DB to get
}
override def remove(key: K) = changeSet -= key
override def -=(key: K) = remove(key)
override def update(key: K, value: V) = put(key, value)
}
/**
@ -83,11 +91,14 @@ class InMemoryTransactionalMap[K, V] extends TransactionalMap[K, V] {
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class CassandraPersistentTransactionalMap(actorNameInstance: AnyRef) extends PersistentTransactionalMap[String, AnyRef] {
val actorName = actorNameInstance.getClass.getName
override def begin = {}
override def rollback = {}
class CassandraPersistentTransactionalMap(actorNameInstance: AnyRef)
extends PersistentTransactionalMap[String, AnyRef] {
val actorName = actorNameInstance.getClass.getName
override def getRange(start: Int, count: Int) = CassandraNode.getActorStorageRange(actorName, start, count)
// ---- For Transactional ----
override def commit = {
// FIXME: should use batch function once the bug is resolved
for (entry <- changeSet) {
@ -96,28 +107,22 @@ class CassandraPersistentTransactionalMap(actorNameInstance: AnyRef) extends Per
}
}
override def get(key: String): AnyRef = CassandraNode.getActorStorageEntryFor(actorName, key)
.getOrElse(throw new NoSuchElementException("Could not find element for key [" + key + "]"))
override def contains(key: String): Boolean = CassandraNode.getActorStorageEntryFor(actorName, key).isDefined
override def size: Int = CassandraNode.getActorStorageSizeFor(actorName)
// ---- Overriding scala.collection.mutable.Map behavior ----
override def clear = CassandraNode.removeActorStorageFor(actorName)
override def getRange(start: Int, count: Int) = CassandraNode.getActorStorageRange(actorName, start, count)
override def elements: Iterator[Tuple2[String, AnyRef]] = {
override def contains(key: String): Boolean = CassandraNode.getActorStorageEntryFor(actorName, key).isDefined
override def size: Int = CassandraNode.getActorStorageSizeFor(actorName)
// ---- For scala.collection.mutable.Map ----
override def get(key: String): Option[AnyRef] = CassandraNode.getActorStorageEntryFor(actorName, key)
override def elements: Iterator[Tuple2[String, AnyRef]] = {
new Iterator[Tuple2[String, AnyRef]] {
private val originalList: List[Tuple2[String, AnyRef]] = CassandraNode.getActorStorageFor(actorName)
private var elements = originalList.reverse
override def next: Tuple2[String, AnyRef]= synchronized {
val element = elements.head
elements = elements.tail
element
}
}
override def hasNext: Boolean = synchronized { !elements.isEmpty }
}
}
@ -129,10 +134,9 @@ class CassandraPersistentTransactionalMap(actorNameInstance: AnyRef) extends Per
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
abstract class TransactionalVector[T] extends Transactional {
abstract class TransactionalVector[T] extends Transactional with RandomAccessSeq[T] {
def add(elem: T)
def get(index: Int): T
def size: Int
}
/**
@ -146,13 +150,19 @@ class InMemoryTransactionalVector[T] extends TransactionalVector[T] {
private[kernel] var state: Vector[T] = EmptyVector
private[kernel] var snapshot = state
override def add(elem: T) = state = state + elem
override def get(index: Int): T = state(index)
// ---- For Transactional ----
override def begin = snapshot = state
override def commit = snapshot = state
override def rollback = state = snapshot
override def add(elem: T) = state = state + elem
override def get(index: Int): T = state(index)
override def size: Int = state.size
// ---- For Seq ----
def length: Int = state.length
def apply(index: Int): T = state(index)
override def elements: Iterator[T] = state.elements
override def toList: List[T] = state.toList
}
/**

View file

@ -12,8 +12,6 @@ import se.scalablesolutions.akka.kernel.Helpers._
import se.scalablesolutions.akka.kernel.config.ScalaConfig._
//====================================================
/**
* Messages that the supervisor responds to and returns.
*
@ -178,7 +176,6 @@ class Supervisor(faultHandler: FaultHandlingStrategy) extends Actor with Logging
}
}
//====================================================
/**
* TODO: document
*
@ -203,7 +200,6 @@ abstract class FaultHandlingStrategy(val maxNrOfRetries: Int, val withinTimeRang
doHandleFailure(state, failedServer, reason)
}
private[kernel] def restart(serverContainer: GenericServerContainer, reason: AnyRef, state: SupervisorState) = {
preRestart(serverContainer)
serverContainer.lock.withWriteLock {

View file

@ -67,7 +67,10 @@ class Transaction extends Logging {
else false
}}.exists(_ == true)
} else false
if (haveAllPreCommitted) status = TransactionStatus.Completed
if (haveAllPreCommitted) {
participants.foreach(_.transactionalItems.foreach(_.commit))
status = TransactionStatus.Completed
}
else rollback(server)
}
participants.clear

Binary file not shown.

View file

@ -0,0 +1,5 @@
#Wed May 13 10:43:31 CEST 2009
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.source=1.5
org.eclipse.jdt.core.compiler.compliance=1.5