completed scala binary serialization'

This commit is contained in:
jboner 2009-07-27 21:21:28 +02:00
parent 2aca074b84
commit 7473afd9c4
10 changed files with 997 additions and 876 deletions

732
akka.iws
View file

@ -6,47 +6,12 @@
</component>
<component name="ChangeListManager">
<list default="true" id="212ccd86-01aa-4780-a2f0-0d130be5abd2" name="Test" comment="Test">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config/akka-reference.conf" afterPath="$PROJECT_DIR$/config/akka-reference.conf" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/fun-test-java/akka-fun-test-java.iml" afterPath="$PROJECT_DIR$/fun-test-java/akka-fun-test-java.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.gitignore" afterPath="$PROJECT_DIR$/.gitignore" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/akka-util-java-0.5.jar" afterPath="$PROJECT_DIR$/lib/akka-util-java-0.5.jar" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/scala-json-1.0.jar" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/src/main/scala/serialization/Serializable.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemFailer.java" afterPath="$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemFailer.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka.ipr" afterPath="$PROJECT_DIR$/akka.ipr" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/LICENSE" afterPath="$PROJECT_DIR$/LICENSE" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/bin/start-akka-server.sh" afterPath="$PROJECT_DIR$/bin/start-akka-server.sh" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteClient.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteClient.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/pom.xml" afterPath="$PROJECT_DIR$/kernel/pom.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/actor/ActiveObject.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/actor/ActiveObject.scala" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/util-java/src/main/java/se/scalablesolutions/akka/kernel/nio/protobuf/RemoteProtocol.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/util-java/pom.xml" afterPath="$PROJECT_DIR$/util-java/pom.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala" />
<change type="DELETED" beforePath="$PROJECT_DIR$/lib/protobuf-java-2.0.3.jar" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/test/scala/RemoteSupervisorSpec.scala" afterPath="$PROJECT_DIR$/kernel/src/test/scala/RemoteSupervisorSpec.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala" afterPath="$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala" />
<change type="DELETED" beforePath="$PROJECT_DIR$/kernel/src/main/scala/util/Serializer.scala" afterPath="" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/src/main/scala/serialization/Serializer.scala" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/sbinary-0.3.jar" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/PersistentFailer.java" afterPath="$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/PersistentFailer.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/test/scala/PersistentActorSpec.scala" afterPath="$PROJECT_DIR$/kernel/src/test/scala/PersistentActorSpec.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/akka-kernel.iml" afterPath="$PROJECT_DIR$/kernel/akka-kernel.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/akka-kernel-0.5.jar" afterPath="$PROJECT_DIR$/lib/akka-kernel-0.5.jar" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/test/scala/RemoteActorSpec.scala" afterPath="$PROJECT_DIR$/kernel/src/test/scala/RemoteActorSpec.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/state/CassandraStorage.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/state/CassandraStorage.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$/samples-scala/akka-samples-scala.iml" afterPath="$PROJECT_DIR$/samples-scala/akka-samples-scala.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/nio/RequestReply.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/nio/RequestReply.scala" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteProtocolBuilder.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka.iws" afterPath="$PROJECT_DIR$/akka.iws" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/src/main/scala/serialization/Binary.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteServer.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteServer.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/test/scala/InMemoryActorSpec.scala" afterPath="$PROJECT_DIR$/kernel/src/test/scala/InMemoryActorSpec.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/util-java/akka-util-java.iml" afterPath="$PROJECT_DIR$/util-java/akka-util-java.iml" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/lib/protobuf-java-2.1.0.jar" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/util-java/src/main/java/se/scalablesolutions/akka/kernel/nio/protobuf/RemoteProtocol.proto" afterPath="$PROJECT_DIR$/util-java/src/main/java/se/scalablesolutions/akka/kernel/nio/protobuf/RemoteProtocol.proto" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/samples-java/akka-samples-java.iml" afterPath="$PROJECT_DIR$/samples-java/akka-samples-java.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/README.textile" afterPath="$PROJECT_DIR$/README.textile" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/util/Helpers.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/util/Helpers.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/test/scala/Messages.scala" afterPath="$PROJECT_DIR$/kernel/src/test/scala/Messages.scala" />
</list>
<list readonly="true" id="6e842704-fac6-40e9-8a67-d02385f87db9" name="Default" comment="&#10;# Brief commit desciption here&#10;&#10;# Full commit description here (comment lines starting with '#' will not be included)&#10;&#10;" />
<ignored path=".idea/workspace.xml" />
@ -67,20 +32,7 @@
</component>
<component name="DebuggerManager">
<line_breakpoints>
<breakpoint url="file://$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteServer.scala" line="200" class="Class at RemoteServer.scala:200" 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/nio/RemoteServer.scala" line="201" class="Class at RemoteServer.scala:201" package="">
<breakpoint url="file://$PROJECT_DIR$/kernel/src/main/scala/serialization/Binary.scala" line="10" class="Class at Binary.scala:10" package="">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
@ -156,91 +108,73 @@
<component name="FileColors" enabled="false" enabledForTabs="false" />
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="RemoteInMemoryStateTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/RemoteInMemoryStateTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="14" selection-start="951" selection-end="951" 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/actor/ActiveObject.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="290" column="36" selection-start="13641" selection-end="13641" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Actor.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="0" selection-start="601" selection-end="601" vertical-scroll-proportion="-9.846154">
<state line="414" column="33" selection-start="14988" selection-end="14988" vertical-scroll-proportion="-24.615385">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JerseySpec.scala" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala">
<file leaf-file-name="RemoteProtocolBuilder.scala" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteProtocolBuilder.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="24" column="7" selection-start="690" selection-end="690" vertical-scroll-proportion="-0.541384">
<state line="14" column="0" selection-start="410" selection-end="410" vertical-scroll-proportion="0.18181819">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="RemoteClient.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteClient.scala">
<file leaf-file-name="RemoteSupervisorSpec.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/RemoteSupervisorSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="172" column="41" selection-start="7225" selection-end="7225" vertical-scroll-proportion="0.0">
<state line="638" column="28" selection-start="16462" selection-end="16462" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DefaultChannelPipeline.java" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.1.0.CR1/netty-3.1.0.CR1-sources.jar!/org/jboss/netty/channel/DefaultChannelPipeline.java">
<file leaf-file-name="Messages.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/Messages.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="568" column="0" selection-start="17716" selection-end="17716" vertical-scroll-proportion="0.0">
<state line="19" column="33" selection-start="564" selection-end="564" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Range.scala" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.7.5/scala-library-2.7.5-sources.jar!/scala/Range.scala">
<file leaf-file-name="RemoteActorSpec.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/RemoteActorSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="0" selection-start="1575" selection-end="1575" vertical-scroll-proportion="0.0">
<state line="27" column="6" selection-start="652" selection-end="652" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="RemoteProtocol.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/util-java/src/main/java/se/scalablesolutions/akka/kernel/nio/protobuf/RemoteProtocol.java">
<file leaf-file-name="Serializable.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/serialization/Serializable.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="81" column="0" selection-start="3337" selection-end="3337" vertical-scroll-proportion="0.0">
<state line="12" column="1" selection-start="340" selection-end="340" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="RemotePersistentStateTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/RemotePersistentStateTest.java">
<file leaf-file-name="Binary.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/serialization/Binary.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="39" column="14" selection-start="1538" selection-end="1538" vertical-scroll-proportion="0.0">
<state line="12" column="63" selection-start="429" selection-end="429" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PersistentStateful.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/PersistentStateful.java">
<file leaf-file-name="RemoteServer.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteServer.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="55" column="64" selection-start="1440" selection-end="1456" vertical-scroll-proportion="0.0">
<state line="117" column="45" selection-start="4575" selection-end="4575" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -259,9 +193,6 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/kernel/src/test/scala/InMemoryActorSpec.scala" />
<option value="$PROJECT_DIR$/kernel/src/test/scala/RemoteSupervisorSpec.scala" />
<option value="$PROJECT_DIR$/kernel/src/test/scala/PersistentActorSpec.scala" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteProtocolBuilder.scala" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/serialization/Serializable.scala" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/serialization/Serializer.scala" />
@ -270,11 +201,14 @@
<option value="$PROJECT_DIR$/config/akka-reference.conf" />
<option value="$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/PersistentFailer.java" />
<option value="$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemFailer.java" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteClient.scala" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteServer.scala" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/actor/ActiveObject.scala" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala" />
<option value="$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteClient.scala" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteServer.scala" />
<option value="$PROJECT_DIR$/kernel/src/test/scala/RemoteSupervisorSpec.scala" />
<option value="$PROJECT_DIR$/kernel/src/test/scala/Messages.scala" />
<option value="$PROJECT_DIR$/kernel/src/main/scala/serialization/Binary.scala" />
</list>
</option>
</component>
@ -339,6 +273,88 @@
<option name="myItemId" value="akka-util-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-util-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="Maven: com.google.protobuf:protobuf-java:2.1.0" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="protobuf-java-2.1.0.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-util-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="Maven: com.google.protobuf:protobuf-java:2.1.0" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="protobuf-java-2.1.0.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="protobuf" />
<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-util-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="Maven: com.google.protobuf:protobuf-java:2.1.0" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="protobuf-java-2.1.0.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="protobuf" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ByteString" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@ -488,11 +504,15 @@
<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.5" />
<option name="myItemId" value="Maven: sbinary:sbinary:0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="scala-library-2.7.5.jar" />
<option name="myItemId" value="sbinary-0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="sbinary" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@ -510,70 +530,14 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: org.jboss.netty:netty:3.1.0.CR1" />
<option name="myItemId" value="Maven: sbinary:sbinary:0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="netty-3.1.0.CR1.jar" />
<option name="myItemId" value="sbinary-0.3.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-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.jboss.netty:netty:3.1.0.CR1" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="netty-3.1.0.CR1.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="channel" />
<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="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: org.jboss.netty:netty:3.1.0.CR1" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="netty-3.1.0.CR1.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="channel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="DefaultChannelPipeline" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
@ -640,66 +604,6 @@
<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="util" />
<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="state" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
@ -781,226 +685,6 @@
<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="actor" />
<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>
<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-fun-test-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</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-fun-test-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="fun-test-java" />
<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-fun-test-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="fun-test-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>
<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-fun-test-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="fun-test-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="RemotePersistentStateTest" />
<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-fun-test-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="fun-test-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="RemoteInMemoryStateTest" />
<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-fun-test-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="fun-test-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="PersistentStateful" />
<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-fun-test-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="fun-test-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="PersistentFailer" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@ -1077,7 +761,7 @@
<property name="dynamic.classpath" value="false" />
<property name="MemberChooser.showClasses" value="true" />
<property name="project.structure.side.proportion" value="0.2" />
<property name="options.lastSelected" value="editor.preferences.import" />
<property name="options.lastSelected" value="preferences.pluginManager" />
<property name="GoToClass.toSaveIncludeLibraries" value="false" />
<property name="RunManagerConfig.showSettingsBeforeRunnig" value="false" />
</component>
@ -1093,7 +777,7 @@
<recent name="stm" />
</key>
</component>
<component name="RunManager" selected="JUnit.RemoteInMemoryStateTest">
<component name="RunManager" selected="JUnit.RemoteSupervisorSpec">
<configuration default="false" name="InMemoryStateTest.testRefShouldRollbackStateForStatefulServerInCaseOfFailure" type="JUnit" factoryName="JUnit" temporary="true" enabled="false" merge="false" sample_coverage="true" runner="emma">
<pattern>
<option name="PATTERN" value="se.scalablesolutions.akka.api.*" />
@ -2259,18 +1943,18 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="4" y="22" width="1436" height="878" extended-state="6" />
<editor active="true" />
<frame x="4" y="22" width="1916" height="1178" extended-state="6" />
<editor active="false" />
<layout>
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3294881" sideWeight="0.5212177" order="5" side_tool="false" />
<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="15" 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.24906267" sideWeight="0.5212177" 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.32749078" sideWeight="0.5" order="9" side_tool="false" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4362245" sideWeight="0.0" order="2" side_tool="false" x="4" y="22" width="1436" height="878" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.43542436" sideWeight="0.0" order="2" side_tool="false" x="4" y="22" width="1436" height="878" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32749078" sideWeight="0.5" order="6" side_tool="false" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.23576063" sideWeight="0.55484694" order="1" side_tool="false" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39795917" sideWeight="0.5" order="3" side_tool="false" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.1751473" sideWeight="0.59594095" order="1" side_tool="false" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3976015" sideWeight="0.5" order="3" side_tool="false" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.16818425" sideWeight="0.24354243" order="0" side_tool="true" x="1609" y="144" width="252" height="862" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3265306" sideWeight="0.5" order="13" side_tool="false" />
<window_info id="Web Preview" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32822478" sideWeight="0.5" order="16" side_tool="false" />
@ -2326,83 +2010,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/InMemoryActorSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="109" column="6" selection-start="3712" selection-end="3712" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/akka-reference.conf">
<provider selected="true" editor-type-id="text-editor">
<state line="55" column="24" selection-start="2115" selection-end="2115" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/PersistentFailer.java">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="61" selection-start="81" selection-end="101" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemFailer.java">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="56" selection-start="96" selection-end="96" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/RemoteSupervisorSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="172" column="41" selection-start="7225" selection-end="7225" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteServer.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="170" column="0" selection-start="7273" selection-end="7273" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/RemoteInMemoryStateTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="14" selection-start="951" selection-end="951" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteClient.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="172" column="41" selection-start="7225" selection-end="7225" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.1.0.CR1/netty-3.1.0.CR1-sources.jar!/org/jboss/netty/channel/DefaultChannelPipeline.java">
<provider selected="true" editor-type-id="text-editor">
<state line="568" column="0" selection-start="17716" selection-end="17716" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.7.5/scala-library-2.7.5-sources.jar!/scala/Range.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="0" selection-start="1575" selection-end="1575" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/util-java/src/main/java/se/scalablesolutions/akka/kernel/nio/protobuf/RemoteProtocol.java">
<provider selected="true" editor-type-id="text-editor">
<state line="81" column="0" selection-start="3337" selection-end="3337" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/fun-test-java/src/test/java/se/scalablesolutions/akka/api/RemotePersistentStateTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="39" column="14" selection-start="1538" selection-end="1538" vertical-scroll-proportion="0.0">
@ -2424,16 +2031,93 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="0" selection-start="601" selection-end="601" vertical-scroll-proportion="-9.846154">
<state line="24" column="7" selection-start="690" selection-end="690" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteClient.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="24" column="7" selection-start="690" selection-end="690" vertical-scroll-proportion="-0.541384">
<state line="75" column="75" selection-start="2766" selection-end="2766" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/actor/Actor.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="414" column="33" selection-start="14988" selection-end="14988" vertical-scroll-proportion="-24.615385">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/RemoteActorSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="27" column="6" selection-start="652" selection-end="652" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.1.0/protobuf-java-2.1.0-sources.jar!/com/google/protobuf/ByteString.java">
<provider selected="true" editor-type-id="text-editor">
<state line="153" column="0" selection-start="4874" selection-end="4874" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/sbinary/sbinary/0.3/sbinary-0.3.jar!/sbinary/DefaultProtocol.class">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="0" selection-start="147" selection-end="147" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/util-java/src/main/java/se/scalablesolutions/akka/kernel/nio/protobuf/RemoteProtocol.java">
<provider selected="true" editor-type-id="text-editor">
<state line="53" column="0" selection-start="2074" selection-end="2074" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/RemoteSupervisorSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="638" column="28" selection-start="16462" selection-end="16462" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/Messages.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="33" selection-start="564" selection-end="564" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/serialization/Serializable.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="1" selection-start="340" selection-end="340" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteServer.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="117" column="45" selection-start="4575" selection-end="4575" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/serialization/Binary.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="63" selection-start="429" selection-end="429" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/nio/RemoteProtocolBuilder.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="0" selection-start="410" selection-end="410" vertical-scroll-proportion="0.18181819">
<folding />
</state>
</provider>

View file

@ -3,9 +3,10 @@ package se.scalablesolutions.akka.api;
import com.google.inject.Inject;
import se.scalablesolutions.akka.annotation.oneway;
public class Foo {
public class Foo extends se.scalablesolutions.akka.serialization.Serializable.JavaJSON<Foo> {
@Inject
private Bar bar;
public Foo body() { return this; }
public Bar getBar() {
return bar;
}

View file

@ -207,7 +207,7 @@
<configuration>
<args>
<arg>-target:jvm-1.5</arg>
<arg>-unchecked</arg>
<!--arg>-unchecked</arg-->
</args>
<scalaVersion>${scala.version}</scalaVersion>
<vscaladocVersion>1.1</vscaladocVersion>

View file

@ -108,6 +108,9 @@ class RemoteClient(hostname: String, port: Int) extends Logging {
def deregisterSupervisorWithUuid(uuid: String) = supervisors.remove(uuid)
}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class RemoteClientPipelineFactory(futures: ConcurrentMap[Long, CompletableFutureResult],
supervisors: ConcurrentMap[String, Actor]) extends ChannelPipelineFactory {
def getPipeline: ChannelPipeline = {
@ -121,6 +124,9 @@ class RemoteClientPipelineFactory(futures: ConcurrentMap[Long, CompletableFuture
}
}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
@ChannelPipelineCoverage { val value = "all" }
class RemoteClientHandler(val futures: ConcurrentMap[Long, CompletableFutureResult],
val supervisors: ConcurrentMap[String, Actor])
@ -170,7 +176,6 @@ class RemoteClientHandler(val futures: ConcurrentMap[Long, CompletableFutureResu
private def parseException(reply: RemoteReply) = {
val exception = reply.getException
println("-------------- " + exception)
val exceptionType = Class.forName(exception.substring(0, exception.indexOf('$')))
val exceptionMessage = exception.substring(exception.indexOf('$') + 1, exception.length)
exceptionType

View file

@ -14,7 +14,7 @@ object RemoteProtocolBuilder {
def getMessage(request: RemoteRequest): AnyRef = {
request.getProtocol match {
case SerializationProtocol.SBINARY =>
val renderer = Class.forName(new String(request.getMessageManifest.toByteArray)).newInstance.asInstanceOf[SBinary]
val renderer = Class.forName(new String(request.getMessageManifest.toByteArray)).newInstance.asInstanceOf[SBinary[_ <: AnyRef]]
renderer.fromBytes(request.getMessage.toByteArray)
case SerializationProtocol.SCALA_JSON =>
val manifest = Serializer.Java.in(request.getMessageManifest.toByteArray, None).asInstanceOf[String]
@ -35,7 +35,7 @@ object RemoteProtocolBuilder {
def getMessage(reply: RemoteReply): AnyRef = {
reply.getProtocol match {
case SerializationProtocol.SBINARY =>
val renderer = Class.forName(new String(reply.getMessageManifest.toByteArray)).newInstance.asInstanceOf[SBinary]
val renderer = Class.forName(new String(reply.getMessageManifest.toByteArray)).newInstance.asInstanceOf[SBinary[_ <: AnyRef]]
renderer.fromBytes(reply.getMessage.toByteArray)
case SerializationProtocol.SCALA_JSON =>
val manifest = Serializer.Java.in(reply.getMessageManifest.toByteArray, None).asInstanceOf[String]
@ -54,8 +54,8 @@ object RemoteProtocolBuilder {
}
def setMessage(message: AnyRef, builder: RemoteRequest.Builder) = {
if (message.isInstanceOf[Serializable.SBinary]) {
val serializable = message.asInstanceOf[Serializable.SBinary]
if (message.isInstanceOf[Serializable.SBinary[_]]) {
val serializable = message.asInstanceOf[Serializable.SBinary[_ <: AnyRef]]
builder.setProtocol(SerializationProtocol.SBINARY)
builder.setMessage(ByteString.copyFrom(serializable.toBytes))
builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes))
@ -82,8 +82,8 @@ object RemoteProtocolBuilder {
}
def setMessage(message: AnyRef, builder: RemoteReply.Builder) = {
if (message.isInstanceOf[Serializable.SBinary]) {
val serializable = message.asInstanceOf[Serializable.SBinary]
if (message.isInstanceOf[Serializable.SBinary[_]]) {
val serializable = message.asInstanceOf[Serializable.SBinary[_ <: AnyRef]]
builder.setProtocol(SerializationProtocol.SBINARY)
builder.setMessage(ByteString.copyFrom(serializable.toBytes))
builder.setMessageManifest(ByteString.copyFrom(serializable.getClass.getName.getBytes))

View file

@ -62,6 +62,9 @@ object RemoteServer extends Logging {
}
}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class RemoteServerPipelineFactory extends ChannelPipelineFactory {
def getPipeline: ChannelPipeline = {
val p = Channels.pipeline()
@ -74,6 +77,9 @@ class RemoteServerPipelineFactory extends ChannelPipelineFactory {
}
}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
@ChannelPipelineCoverage { val value = "all" }
class RemoteServerHandler extends SimpleChannelUpstreamHandler with Logging {
private val activeObjectFactory = new ActiveObjectFactory

View file

@ -0,0 +1,375 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.serialization
// --- PRIMITIVES ---
case class BinaryString(val value: String) extends Serializable.SBinary[BinaryString] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]): BinaryString = BinaryString(fromByteArray[String](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigInt(val value: BigInt) extends Serializable.SBinary[BinaryBigInt] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigInt(fromByteArray[BigInt](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigDecimal(val value: BigDecimal) extends Serializable.SBinary[BinaryBigDecimal] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigDecimal(fromByteArray[BigDecimal](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryLong(val value: Long) extends Serializable.SBinary[BinaryLong] {
import sbinary.DefaultProtocol._
def this() = this(0L)
def fromBytes(bytes: Array[Byte]) = BinaryLong(fromByteArray[Long](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryInt(val value: Int) extends Serializable.SBinary[BinaryInt] {
import sbinary.DefaultProtocol._
def this() = this(0)
def fromBytes(bytes: Array[Byte]) = BinaryInt(fromByteArray[Int](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryDouble(val value: Double) extends Serializable.SBinary[BinaryDouble] {
import sbinary.DefaultProtocol._
def this() = this(0.0D)
def fromBytes(bytes: Array[Byte]) = BinaryDouble(fromByteArray[Double](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryFloat(val value: Float) extends Serializable.SBinary[BinaryFloat] {
import sbinary.DefaultProtocol._
def this() = this(0.0F)
def fromBytes(bytes: Array[Byte]) = BinaryFloat(fromByteArray[Float](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBoolean(val value: Boolean) extends Serializable.SBinary[BinaryBoolean] {
import sbinary.DefaultProtocol._
def this() = this(true)
def fromBytes(bytes: Array[Byte]) = BinaryBoolean(fromByteArray[Boolean](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryByte(val value: Byte) extends Serializable.SBinary[BinaryByte] {
import sbinary.DefaultProtocol._
def this() = this(0x00)
def fromBytes(bytes: Array[Byte]) = BinaryByte(fromByteArray[Byte](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryChar(val value: Char) extends Serializable.SBinary[BinaryChar] {
import sbinary.DefaultProtocol._
def this() = this(' ')
def fromBytes(bytes: Array[Byte]) = BinaryChar(fromByteArray[Char](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
// --- ARRAYS ---
case class BinaryStringArray(val value: Array[String]) extends Serializable.SBinary[BinaryStringArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringArray(fromByteArray[Array[String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigIntArray(val value: Array[BigInt]) extends Serializable.SBinary[BinaryBigIntArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigIntArray(fromByteArray[Array[BigInt]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigDecimalArray(val value: Array[BigDecimal]) extends Serializable.SBinary[BinaryBigDecimalArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigDecimalArray(fromByteArray[Array[BigDecimal]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryIntArray(val value: Array[Int]) extends Serializable.SBinary[BinaryIntArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryIntArray(fromByteArray[Array[Int]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryLongArray(val value: Array[Long]) extends Serializable.SBinary[BinaryLongArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryLongArray(fromByteArray[Array[Long]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryDoubleArray(val value: Array[Double]) extends Serializable.SBinary[BinaryDoubleArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryDoubleArray(fromByteArray[Array[Double]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryFloatArray(val value: Array[Float]) extends Serializable.SBinary[BinaryFloatArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryFloatArray(fromByteArray[Array[Float]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBooleanArray(val value: Array[Boolean]) extends Serializable.SBinary[BinaryBooleanArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBooleanArray(fromByteArray[Array[Boolean]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryByteArray(val value: Array[Byte]) extends Serializable.SBinary[BinaryByteArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryByteArray(fromByteArray[Array[Byte]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryClassArray(val value: Array[Class[_]]) extends Serializable.SBinary[BinaryClassArray] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryClassArray(fromByteArray[Array[Class[_]]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
// --- LISTS ---
case class BinaryStringList(val value: List[String]) extends Serializable.SBinary[BinaryStringList] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringList(fromByteArray[List[String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigIntList(val value: List[BigInt]) extends Serializable.SBinary[BinaryBigIntList] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigIntList(fromByteArray[List[BigInt]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigDecimalList(val value: List[BigDecimal]) extends Serializable.SBinary[BinaryBigDecimalList] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigDecimalList(fromByteArray[List[BigDecimal]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryLongList(val value: List[Long]) extends Serializable.SBinary[BinaryLongList] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryLongList(fromByteArray[List[Long]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryIntList(val value: List[Int]) extends Serializable.SBinary[BinaryIntList] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryIntList(fromByteArray[List[Int]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryDoubleList(val value: List[Double]) extends Serializable.SBinary[BinaryDoubleList] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryDoubleList(fromByteArray[List[Double]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryFloatList(val value: List[Float]) extends Serializable.SBinary[BinaryFloatList] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryFloatList(fromByteArray[List[Float]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBooleanList(val value: List[Boolean]) extends Serializable.SBinary[BinaryBooleanList] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBooleanList(fromByteArray[List[Boolean]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryClassList(val value: List[Class[_]]) extends Serializable.SBinary[BinaryClassList] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryClassList(fromByteArray[List[Class[_]]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
// --- TUPLES ---
case class BinaryStringStringTuple(val value: Tuple2[String, String]) extends Serializable.SBinary[BinaryStringStringTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringStringTuple(fromByteArray[Tuple2[String, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigIntBigIntTuple(val value: Tuple2[BigInt, BigInt]) extends Serializable.SBinary[BinaryBigIntBigIntTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigIntBigIntTuple(fromByteArray[Tuple2[BigInt, BigInt]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigDecimalBigDecimalTuple(val value: Tuple2[BigDecimal, BigDecimal]) extends Serializable.SBinary[BinaryBigDecimalBigDecimalTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigDecimalBigDecimalTuple(fromByteArray[Tuple2[BigDecimal, BigDecimal]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryLongLongTuple(val value: Tuple2[Long, Long]) extends Serializable.SBinary[BinaryLongLongTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryLongLongTuple(fromByteArray[Tuple2[Long, Long]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryIntIntTuple(val value: Tuple2[Int, Int]) extends Serializable.SBinary[BinaryIntIntTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryIntIntTuple(fromByteArray[Tuple2[Int, Int]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryDoubleDoubleTuple(val value: Tuple2[Double, Double]) extends Serializable.SBinary[BinaryDoubleDoubleTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryDoubleDoubleTuple(fromByteArray[Tuple2[Double, Double]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryFloatFloatTuple(val value: Tuple2[Float, Float]) extends Serializable.SBinary[BinaryFloatFloatTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryFloatFloatTuple(fromByteArray[Tuple2[Float, Float]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBooleanBooleanTuple(val value: Tuple2[Boolean, Boolean]) extends Serializable.SBinary[BinaryBooleanBooleanTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBooleanBooleanTuple(fromByteArray[Tuple2[Boolean, Boolean]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryClassClassTuple(val value: Tuple2[Class[_], Class[_]]) extends Serializable.SBinary[BinaryClassClassTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryClassClassTuple(fromByteArray[Tuple2[Class[_], Class[_]]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryByteArrayByteArrayTuple(val value: Tuple2[Array[Byte], Array[Byte]]) extends Serializable.SBinary[BinaryByteArrayByteArrayTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryByteArrayByteArrayTuple(fromByteArray[Tuple2[Array[Byte], Array[Byte]]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigIntStringTuple(val value: Tuple2[BigInt, String]) extends Serializable.SBinary[BinaryBigIntStringTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigIntStringTuple(fromByteArray[Tuple2[BigInt, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigDecimalStringTuple(val value: Tuple2[BigDecimal, String]) extends Serializable.SBinary[BinaryBigDecimalStringTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigDecimalStringTuple(fromByteArray[Tuple2[BigDecimal, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryLongStringTuple(val value: Tuple2[Long, String]) extends Serializable.SBinary[BinaryLongStringTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryLongStringTuple(fromByteArray[Tuple2[Long, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryIntStringTuple(val value: Tuple2[Int, String]) extends Serializable.SBinary[BinaryIntStringTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryIntStringTuple(fromByteArray[Tuple2[Int, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryDoubleStringTuple(val value: Tuple2[Double, String]) extends Serializable.SBinary[BinaryDoubleStringTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryDoubleStringTuple(fromByteArray[Tuple2[Double, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryFloatStringTuple(val value: Tuple2[Float, String]) extends Serializable.SBinary[BinaryFloatStringTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryFloatStringTuple(fromByteArray[Tuple2[Float, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBooleanStringTuple(val value: Tuple2[Boolean, String]) extends Serializable.SBinary[BinaryBooleanStringTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBooleanStringTuple(fromByteArray[Tuple2[Boolean, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryClassStringTuple(val value: Tuple2[Class[_], String]) extends Serializable.SBinary[BinaryClassStringTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryClassStringTuple(fromByteArray[Tuple2[Class[_], String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryStringByteArrayTuple(val value: Tuple2[String, Array[Byte]]) extends Serializable.SBinary[BinaryStringByteArrayTuple] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringByteArrayTuple(fromByteArray[Tuple2[String, Array[Byte]]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
// --- MAPS ---
case class BinaryStringStringMap(val value: Map[String, String]) extends Serializable.SBinary[BinaryStringStringMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringStringMap(fromByteArray[Map[String, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigIntStringMap(val value: Map[BigInt, String]) extends Serializable.SBinary[BinaryBigIntStringMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigIntStringMap(fromByteArray[Map[BigInt, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryBigDecimalStringMap(val value: Map[BigDecimal, String]) extends Serializable.SBinary[BinaryBigDecimalStringMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryBigDecimalStringMap(fromByteArray[Map[BigDecimal, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryLongStringMap(val value: Map[Long, String]) extends Serializable.SBinary[BinaryLongStringMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryLongStringMap(fromByteArray[Map[Long, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryIntStringMap(val value: Map[Int, String]) extends Serializable.SBinary[BinaryIntStringMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryIntStringMap(fromByteArray[Map[Int, String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryClassStringMap(val value: Map[Class[_], String]) extends Serializable.SBinary[BinaryClassStringMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryClassStringMap(fromByteArray[Map[Class[_], String]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryStringBigIntMap(val value: Map[String, BigInt]) extends Serializable.SBinary[BinaryStringBigIntMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringBigIntMap(fromByteArray[Map[String, BigInt]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryStringBigDecimalMap(val value: Map[String, BigDecimal]) extends Serializable.SBinary[BinaryStringBigDecimalMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringBigDecimalMap(fromByteArray[Map[String, BigDecimal]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryStringLongMap(val value: Map[String, Long]) extends Serializable.SBinary[BinaryStringLongMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringLongMap(fromByteArray[Map[String, Long]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryStringIntMap(val value: Map[String, Int]) extends Serializable.SBinary[BinaryStringIntMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringIntMap(fromByteArray[Map[String, Int]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryStringClassMap(val value: Map[String, Class[_]]) extends Serializable.SBinary[BinaryStringClassMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringClassMap(fromByteArray[Map[String, Class[_]]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}
case class BinaryStringByteArrayMap(val value: Map[String, Array[Byte]]) extends Serializable.SBinary[BinaryStringByteArrayMap] {
import sbinary.DefaultProtocol._
def this() = this(null)
def fromBytes(bytes: Array[Byte]) = BinaryStringByteArrayMap(fromByteArray[Map[String, Array[Byte]]](bytes))
def toBytes: Array[Byte] = toByteArray(value)
}

View file

@ -28,10 +28,43 @@ trait Serializable {
}
/**
* Serialization protocols.
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
object Serializable {
/**
* Example on how to use the SBinary serialization protocol:
* <pre>
* case class User(val usernamePassword: Tuple2[String, String],
* val email: String,
* val age: Int)
* extends Serializable.SBinary[User] {
* def this() = this(null, null, 0)
* import sbinary.DefaultProtocol._
* implicit object UserFormat extends Format[User] {
* def reads(in : Input) = User(
* read[Tuple2[String, String]](in),
* read[String](in),
* read[Int](in))
* def writes(out: Output, value: User) = {
* write[Tuple2[String, String]](out, value.usernamePassword)
* write[String](out, value.email)
* write[Int](out, value.age)
* }
* }
* def fromBytes(bytes: Array[Byte]) = fromByteArray[User](bytes)
* def toBytes: Array[Byte] = toByteArray(this)
* }
* </pre>
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
trait SBinary[T <: AnyRef] extends Serializable {
def fromBytes(bytes: Array[Byte]): T
def toBytes: Array[Byte]
}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
@ -43,7 +76,7 @@ object Serializable {
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
trait JavaJSON[T] extends JSON[T]{
abstract class JavaJSON[T] extends JSON[T]{
private val mapper = new ObjectMapper
def toJSON: String = {
@ -77,17 +110,4 @@ object Serializable {
def toBytes: Array[Byte]
def getSchema: Message
}
/**
* <pre>
* import sbinary.DefaultProtocol._
* def fromBytes(bytes: Array[Byte]) = fromByteArray[String](bytes)
* def toBytes: Array[Byte] = toByteArray(body)
* </pre>
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
trait SBinary extends Serializable {
def fromBytes(bytes: Array[Byte])
def toBytes: Array[Byte]
}
}

29
kernel/src/test/scala/Messages.scala Executable file → Normal file
View file

@ -4,9 +4,38 @@
package se.scalablesolutions.akka.kernel
import akka.serialization.Serializable
sealed abstract class TestMessage
case object Ping extends TestMessage
case object Pong extends TestMessage
case object OneWay extends TestMessage
case object Die extends TestMessage
case object NotifySupervisorExit extends TestMessage
case class User(val usernamePassword: Tuple2[String, String],
val email: String,
val age: Int)
extends Serializable.SBinary[User] {
def this() = this(null, null, 0)
import sbinary.DefaultProtocol._
implicit object UserFormat extends Format[User] {
def reads(in : Input) = User(
read[Tuple2[String, String]](in),
read[String](in),
read[Int](in))
def writes(out: Output, value: User) = {
write[Tuple2[String, String]](out, value.usernamePassword)
write[String](out, value.email)
write[Int](out, value.age)
}
}
def fromBytes(bytes: Array[Byte]) = fromByteArray[User](bytes)
def toBytes: Array[Byte] = toByteArray(this)
}
case class RemotePing extends TestMessage
case object RemotePong extends TestMessage
case object RemoteOneWay extends TestMessage
case object RemoteDie extends TestMessage
case object RemoteNotifySupervisorExit extends TestMessage

View file

@ -4,6 +4,7 @@
package se.scalablesolutions.akka.kernel
import akka.serialization.BinaryString
import kernel.nio.{RemoteClient, RemoteServer}
import kernel.actor.{Supervisor, SupervisorFactory, Actor, StartSupervisor}
import kernel.config.ScalaConfig._
@ -41,7 +42,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
expect("pong") {
(pingpong1 !! Ping).getOrElse("nil")
(pingpong1 !! BinaryString("Ping")).getOrElse("nil")
}
}
@ -51,7 +52,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
intercept(classOf[RuntimeException]) {
pingpong1 !! Die
pingpong1 !! BinaryString("Die")
}
Thread.sleep(500)
expect("DIE") {
@ -65,21 +66,21 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
expect("pong") {
(pingpong1 !! Ping).getOrElse("nil")
(pingpong1 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("ping") {
Log.messageLog
}
intercept(classOf[RuntimeException]) {
pingpong1 !! Die
pingpong1 !! BinaryString("Die")
}
Thread.sleep(500)
expect("pingDIE") {
Log.messageLog
}
expect("pong") {
(pingpong1 !! Ping).getOrElse("nil")
(pingpong1 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingDIEping") {
@ -93,7 +94,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
intercept(classOf[RuntimeException]) {
pingpong1 !! Die
pingpong1 !! BinaryString("Die")
}
Thread.sleep(500)
expect("DIE") {
@ -107,21 +108,21 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
expect("pong") {
(pingpong1 !! Ping).getOrElse("nil")
(pingpong1 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("ping") {
Log.messageLog
}
intercept(classOf[RuntimeException]) {
pingpong1 !! Die
pingpong1 !! BinaryString("Die")
}
Thread.sleep(500)
expect("pingDIE") {
Log.messageLog
}
expect("pong") {
(pingpong1 !! Ping).getOrElse("nil")
(pingpong1 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingDIEping") {
@ -135,7 +136,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
intercept(classOf[RuntimeException]) {
pingpong3 !! Die
pingpong3 !! BinaryString("Die")
}
Thread.sleep(500)
expect("DIE") {
@ -149,37 +150,37 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
expect("pong") {
(pingpong1 !! Ping).getOrElse("nil")
(pingpong1 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong2 !! Ping).getOrElse("nil")
(pingpong2 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong3 !! Ping).getOrElse("nil")
(pingpong3 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingpingping") {
Log.messageLog
}
intercept(classOf[RuntimeException]) {
pingpong2 !! Die
pingpong2 !! BinaryString("Die")
}
Thread.sleep(500)
expect("pingpingpingDIE") {
Log.messageLog
}
expect("pong") {
(pingpong1 !! Ping).getOrElse("nil")
(pingpong1 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong2 !! Ping).getOrElse("nil")
(pingpong2 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong3 !! Ping).getOrElse("nil")
(pingpong3 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingpingpingDIEpingpingping") {
@ -193,7 +194,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
intercept(classOf[RuntimeException]) {
pingpong2 !! Die
pingpong2 !! BinaryString("Die")
}
Thread.sleep(500)
expect("DIEDIEDIE") {
@ -207,37 +208,37 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
expect("pong") {
(pingpong1 !! Ping).getOrElse("nil")
(pingpong1 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong2 !! Ping).getOrElse("nil")
(pingpong2 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong3 !! Ping).getOrElse("nil")
(pingpong3 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingpingping") {
Log.messageLog
}
intercept(classOf[RuntimeException]) {
pingpong2 !! Die
pingpong2 !! BinaryString("Die")
}
Thread.sleep(500)
expect("pingpingpingDIEDIEDIE") {
Log.messageLog
}
expect("pong") {
(pingpong1 !! Ping).getOrElse("nil")
(pingpong1 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong2 !! Ping).getOrElse("nil")
(pingpong2 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong3 !! Ping).getOrElse("nil")
(pingpong3 !! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingpingpingDIEDIEDIEpingpingping") {
@ -251,7 +252,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
val sup = getSingleActorOneForOneSupervisor
sup ! StartSupervisor
Thread.sleep(500)
pingpong1 ! Die
pingpong1 ! BinaryString("Die")
Thread.sleep(500)
expect("DIE") {
Log.messageLog
@ -268,7 +269,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
expect("oneway") {
Log.oneWayLog
}
pingpong1 ! Die
pingpong1 ! BinaryString("Die")
Thread.sleep(500)
expect("DIE") {
Log.messageLog
@ -288,7 +289,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
intercept(classOf[RuntimeException]) {
pingpong1 ! Die
pingpong1 ! BinaryString("Die")
}
Thread.sleep(500)
expect("DIE") {
@ -302,21 +303,21 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
expect("pong") {
(pingpong1 ! Ping).getOrElse("nil")
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("ping") {
Log.messageLog
}
intercept(classOf[RuntimeException]) {
pingpong1 ! Die
pingpong1 ! BinaryString("Die")
}
Thread.sleep(500)
expect("pingDIE") {
Log.messageLog
}
expect("pong") {
(pingpong1 ! Ping).getOrElse("nil")
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingDIEping") {
@ -330,7 +331,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
intercept(classOf[RuntimeException]) {
pingpong3 ! Die
pingpong3 ! BinaryString("Die")
}
Thread.sleep(500)
expect("DIE") {
@ -344,37 +345,37 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
expect("pong") {
(pingpong1 ! Ping).getOrElse("nil")
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong2 ! Ping).getOrElse("nil")
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong3 ! Ping).getOrElse("nil")
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingpingping") {
Log.messageLog
}
intercept(classOf[RuntimeException]) {
pingpong2 ! Die
pingpong2 ! BinaryString("Die")
}
Thread.sleep(500)
expect("pingpingpingDIE") {
Log.messageLog
}
expect("pong") {
(pingpong1 ! Ping).getOrElse("nil")
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong2 ! Ping).getOrElse("nil")
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong3 ! Ping).getOrElse("nil")
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingpingpingDIEpingpingping") {
@ -388,7 +389,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
intercept(classOf[RuntimeException]) {
pingpong2 ! Die
pingpong2 ! BinaryString("Die")
}
Thread.sleep(500)
expect("DIEDIEDIE") {
@ -402,37 +403,37 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
sup ! StartSupervisor
Thread.sleep(500)
expect("pong") {
pingpong1 ! Ping
pingpong1 ! BinaryString("Ping")
}
Thread.sleep(500)
expect("pong") {
(pingpong2 ! Ping).getOrElse("nil")
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong3 ! Ping).getOrElse("nil")
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingpingping") {
Log.messageLog
}
intercept(classOf[RuntimeException]) {
pingpong2 ! Die
pingpong2 ! BinaryString("Die")
}
Thread.sleep(500)
expect("pingpingpingDIEDIEDIE") {
Log.messageLog
}
expect("pong") {
(pingpong1 ! Ping).getOrElse("nil")
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong2 ! Ping).getOrElse("nil")
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pong") {
(pingpong3 ! Ping).getOrElse("nil")
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
}
Thread.sleep(500)
expect("pingpingpingDIEDIEDIEpingpingping") {
@ -447,7 +448,7 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
val sup = getNestedSupervisorsAllForOneConf
sup ! StartSupervisor
intercept(classOf[RuntimeException]) {
pingpong1 !! Die
pingpong1 !! BinaryString("Die")
}
Thread.sleep(500)
expect("DIEDIEDIE") {
@ -594,14 +595,14 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
@serializable class RemotePingPong1Actor extends Actor {
override def receive: PartialFunction[Any, Unit] = {
case Ping =>
case BinaryString("Ping") =>
Log.messageLog += "ping"
reply("pong")
case OneWay =>
Log.oneWayLog += "oneway"
case Die =>
case BinaryString("Die") =>
throw new RuntimeException("DIE")
}
override protected def postRestart(reason: AnyRef, config: Option[AnyRef]) {
@ -611,10 +612,10 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
@serializable class RemotePingPong2Actor extends Actor {
override def receive: PartialFunction[Any, Unit] = {
case Ping =>
case BinaryString("Ping") =>
Log.messageLog += "ping"
reply("pong")
case Die =>
case BinaryString("Die") =>
throw new RuntimeException("DIE")
}
override protected def postRestart(reason: AnyRef, config: Option[AnyRef]) {
@ -624,10 +625,10 @@ class RemoteSupervisorSpec extends junit.framework.TestCase with Suite {
@serializable class RemotePingPong3Actor extends Actor {
override def receive: PartialFunction[Any, Unit] = {
case Ping =>
case BinaryString("Ping") =>
Log.messageLog += "ping"
reply("pong")
case Die =>
case BinaryString("Die") =>
throw new RuntimeException("DIE")
}