cleaned up supervisor and actor api, breaking changes
This commit is contained in:
parent
50e73c2a9f
commit
a1adfd42e8
51 changed files with 637 additions and 806 deletions
105
.idea/artifacts/akka_samples_lift_war_exploded.xml
generated
105
.idea/artifacts/akka_samples_lift_war_exploded.xml
generated
|
|
@ -7,111 +7,6 @@
|
|||
<element id="directory" name="classes">
|
||||
<element id="module-output" name="akka-samples-lift" />
|
||||
</element>
|
||||
<element id="directory" name="lib">
|
||||
<element id="archive" name="akka-util-java-0.6.jar">
|
||||
<element id="module-output" name="akka-util-java" />
|
||||
</element>
|
||||
<element id="library" level="project" name="Maven: org.guiceyfruit:guice-core:2.0-beta-4" />
|
||||
<element id="library" level="project" name="Maven: com.google.code.google-collections:google-collect:snapshot-20080530" />
|
||||
<element id="library" level="project" name="Maven: cglib:cglib:2.2" />
|
||||
<element id="library" level="project" name="Maven: asm:asm:3.1" />
|
||||
<element id="library" level="project" name="Maven: aopalliance:aopalliance:1.0" />
|
||||
<element id="library" level="project" name="Maven: com.google.protobuf:protobuf-java:2.2.0" />
|
||||
<element id="library" level="project" name="Maven: org.multiverse:multiverse-core:0.3-SNAPSHOT" />
|
||||
<element id="library" level="project" name="Maven: org.multiverse:multiverse-alpha:0.3-SNAPSHOT" />
|
||||
<element id="library" level="project" name="Maven: asm:asm-tree:3.1" />
|
||||
<element id="library" level="project" name="Maven: asm:asm-commons:3.1" />
|
||||
<element id="library" level="project" name="Maven: asm:asm-util:3.1" />
|
||||
<element id="archive" name="akka-util-0.6.jar">
|
||||
<element id="module-output" name="akka-util" />
|
||||
</element>
|
||||
<element id="library" level="project" name="Maven: org.scala-lang:scala-library:2.7.5" />
|
||||
<element id="library" level="project" name="Maven: net.lag:configgy:1.3" />
|
||||
<element id="library" level="project" name="Maven: org.scala-tools:vscaladoc:1.1-md-3" />
|
||||
<element id="library" level="project" name="Maven: markdownj:markdownj:1.0.2b4-0.3.0" />
|
||||
<element id="library" level="project" name="Maven: org.scala-tools.testing:specs:1.4.4" />
|
||||
<element id="archive" name="akka-actors-0.6.jar">
|
||||
<element id="module-output" name="akka-actors" />
|
||||
</element>
|
||||
<element id="library" level="project" name="Maven: org.codehaus.aspectwerkz:aspectwerkz-nodeps-jdk5:2.1" />
|
||||
<element id="library" level="project" name="Maven: org.codehaus.aspectwerkz:aspectwerkz-jdk5:2.1" />
|
||||
<element id="library" level="project" name="Maven: org.jboss.netty:netty:3.2.0.ALPHA1" />
|
||||
<element id="library" level="project" name="Maven: org.scala-tools:javautils:2.7.4-0.1" />
|
||||
<element id="library" level="project" name="Maven: org.codehaus.jackson:jackson-core-asl:1.1.0" />
|
||||
<element id="library" level="project" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.1.0" />
|
||||
<element id="library" level="project" name="Maven: sbinary:sbinary:0.3" />
|
||||
<element id="library" level="project" name="Maven: dispatch.json:dispatch-json:0.5.2" />
|
||||
<element id="library" level="project" name="Maven: dispatch.http:dispatch-http:0.5.2" />
|
||||
<element id="library" level="project" name="Maven: sjson.json:sjson:0.2" />
|
||||
<element id="library" level="project" name="Maven: org.slf4j:slf4j-log4j12:1.4.3" />
|
||||
<element id="library" level="project" name="Maven: org.slf4j:slf4j-api:1.4.3" />
|
||||
<element id="library" level="project" name="Maven: log4j:log4j:1.2.13" />
|
||||
<element id="library" level="project" name="Maven: commons-logging:commons-logging:1.0.4" />
|
||||
<element id="archive" name="akka-persistence-0.6.jar">
|
||||
<element id="module-output" name="akka-persistence" />
|
||||
</element>
|
||||
<element id="library" level="project" name="Maven: com.mongodb:mongo:0.6" />
|
||||
<element id="library" level="project" name="Maven: org.apache.cassandra:cassandra:0.4.1" />
|
||||
<element id="library" level="project" name="Maven: com.facebook:thrift:1.0" />
|
||||
<element id="library" level="project" name="Maven: commons-pool:commons-pool:1.5.1" />
|
||||
<element id="archive" name="akka-rest-0.6.jar">
|
||||
<element id="module-output" name="akka-rest" />
|
||||
</element>
|
||||
<element id="library" level="project" name="Maven: com.sun.grizzly:grizzly-comet-webserver:1.8.6.3" />
|
||||
<element id="library" level="project" name="Maven: com.sun.grizzly:grizzly-servlet-webserver:1.8.6.3" />
|
||||
<element id="library" level="project" name="Maven: com.sun.grizzly:grizzly-http:1.8.6.3" />
|
||||
<element id="library" level="project" name="Maven: com.sun.grizzly:grizzly-framework:1.8.6.3" />
|
||||
<element id="library" level="project" name="Maven: com.sun.grizzly:grizzly-http-utils:1.8.6.3" />
|
||||
<element id="library" level="project" name="Maven: com.sun.grizzly:grizzly-rcm:1.8.6.3" />
|
||||
<element id="library" level="project" name="Maven: com.sun.grizzly:grizzly-portunif:1.8.6.3" />
|
||||
<element id="library" level="project" name="Maven: com.sun.grizzly:grizzly-http-servlet:1.8.6.3" />
|
||||
<element id="library" level="project" name="Maven: com.sun.grizzly:grizzly-comet:1.8.6.3" />
|
||||
<element id="library" level="project" name="Maven: com.sun.jersey:jersey-core:1.1.3-ea" />
|
||||
<element id="library" level="project" name="Maven: javax.ws.rs:jsr311-api:1.0" />
|
||||
<element id="library" level="project" name="Maven: com.sun.jersey:jersey-server:1.1.3-ea" />
|
||||
<element id="library" level="project" name="Maven: com.sun.jersey:jersey-json:1.1.3-ea" />
|
||||
<element id="library" level="project" name="Maven: org.codehaus.jettison:jettison:1.1" />
|
||||
<element id="library" level="project" name="Maven: stax:stax-api:1.0.1" />
|
||||
<element id="library" level="project" name="Maven: com.sun.xml.bind:jaxb-impl:2.1.12" />
|
||||
<element id="library" level="project" name="Maven: javax.xml.bind:jaxb-api:2.1" />
|
||||
<element id="library" level="project" name="Maven: javax.xml.stream:stax-api:1.0-2" />
|
||||
<element id="library" level="project" name="Maven: javax.activation:activation:1.1" />
|
||||
<element id="library" level="project" name="Maven: com.sun.jersey.contribs:jersey-scala:1.1.3-ea" />
|
||||
<element id="archive" name="akka-kernel-0.6.jar">
|
||||
<element id="module-output" name="akka-kernel" />
|
||||
</element>
|
||||
<element id="archive" name="akka-amqp-0.6.jar">
|
||||
<element id="module-output" name="akka-amqp" />
|
||||
</element>
|
||||
<element id="library" level="project" name="Maven: com.rabbitmq:rabbitmq-client:0.9.1" />
|
||||
<element id="library" level="project" name="Maven: commons-io:commons-io:1.4" />
|
||||
<element id="archive" name="akka-camel-0.6.jar">
|
||||
<element id="module-output" name="akka-camel" />
|
||||
</element>
|
||||
<element id="library" level="project" name="Maven: org.apache.camel:camel-core:2.0-SNAPSHOT" />
|
||||
<element id="library" level="project" name="Maven: commons-logging:commons-logging-api:1.1" />
|
||||
<element id="archive" name="akka-security-0.6.jar">
|
||||
<element id="module-output" name="akka-security" />
|
||||
</element>
|
||||
<element id="library" level="project" name="Maven: javax.annotation:jsr250-api:1.0" />
|
||||
<element id="library" level="project" name="Maven: net.liftweb:lift-util:1.1-M6" />
|
||||
<element id="library" level="project" name="Maven: javax.mail:mail:1.4" />
|
||||
<element id="library" level="project" name="Maven: commons-httpclient:commons-httpclient:3.1" />
|
||||
<element id="library" level="project" name="Maven: commons-codec:commons-codec:1.3" />
|
||||
<element id="library" level="project" name="Maven: commons-fileupload:commons-fileupload:1.2.1" />
|
||||
<element id="library" level="project" name="Maven: commons-collections:commons-collections:3.2.1" />
|
||||
<element id="library" level="project" name="Maven: org.guiceyfruit:guiceyfruit-core:2.0" />
|
||||
<element id="library" level="project" name="Maven: org.guiceyfruit:guice-all:2.0" />
|
||||
<element id="library" level="project" name="Maven: javax.annotation:com.springsource.javax.annotation:1.0.0" />
|
||||
<element id="library" level="project" name="Maven: org.aopalliance:com.springsource.org.aopalliance:1.0.0" />
|
||||
<element id="library" level="project" name="Maven: org.apache:zookeeper:3.1.0" />
|
||||
<element id="library" level="project" name="Maven: org.atmosphere:atmosphere-runtime:0.4.1" />
|
||||
<element id="library" level="project" name="Maven: org.atmosphere:atmosphere-compat:0.4.1" />
|
||||
<element id="library" level="project" name="Maven: org.atmosphere:atmosphere-core:0.4-SNAPSHOT" />
|
||||
<element id="library" level="project" name="Maven: org.atmosphere:atmosphere-portable-runtime:0.4-SNAPSHOT" />
|
||||
<element id="library" level="project" name="Maven: net.liftweb:lift-webkit:1.1-M6" />
|
||||
<element id="library" level="project" name="Maven: net.liftweb:lift-actor:1.1-M6" />
|
||||
</element>
|
||||
</element>
|
||||
</root>
|
||||
</artifact>
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.google.protobuf:protobuf-java:2.1.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.1.0/protobuf-java-2.1.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.1.0/protobuf-java-2.1.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/protobuf/protobuf-java/2.1.0/protobuf-java-2.1.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: net.liftweb:lift-actor:1.1-M6">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/liftweb/lift-actor/1.1-M6/lift-actor-1.1-M6.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/liftweb/lift-actor/1.1-M6/lift-actor-1.1-M6-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/liftweb/lift-actor/1.1-M6/lift-actor-1.1-M6-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: net.liftweb:lift-webkit:1.1-M6">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/liftweb/lift-webkit/1.1-M6/lift-webkit-1.1-M6.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/liftweb/lift-webkit/1.1-M6/lift-webkit-1.1-M6-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/liftweb/lift-webkit/1.1-M6/lift-webkit-1.1-M6-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.mortbay.jetty:jetty:6.1.22">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/jetty/6.1.22/jetty-6.1.22.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/jetty/6.1.22/jetty-6.1.22-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/jetty/6.1.22/jetty-6.1.22-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.mortbay.jetty:jetty-util:6.1.22">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/jetty-util/6.1.22/jetty-util-6.1.22.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/jetty-util/6.1.22/jetty-util-6.1.22-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/jetty-util/6.1.22/jetty-util-6.1.22-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.mortbay.jetty:servlet-api:2.5-20081211">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
||||
223
.idea/workspace.xml
generated
223
.idea/workspace.xml
generated
|
|
@ -2,7 +2,57 @@
|
|||
<project version="4">
|
||||
<component name="ChangeListManager" verified="true">
|
||||
<list default="true" id="e5228cd0-f5f0-4bab-b96d-de1a99e71911" name="Default" comment="">
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/ThreadBasedActorTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/ThreadBasedActorTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-security/src/main/scala/Security.scala" afterPath="$PROJECT_DIR$/akka-security/src/main/scala/Security.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-security/se/scalablesolutions/akka/security/AuthenticationActor.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-security/se/scalablesolutions/akka/security/AuthenticationActor.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/ThreadBasedDispatcherTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/ThreadBasedDispatcherTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-amqp/src/main/scala/ExampleSession.scala" afterPath="$PROJECT_DIR$/akka-amqp/src/main/scala/ExampleSession.scala" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_liftweb_lift_actor_1_1_M6.xml" afterPath="" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-security/Security.scala.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-security/Security.scala.html" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mortbay_jetty_jetty_6_1_22.xml" afterPath="" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/EventBasedThreadPoolDispatcherTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/EventBasedThreadPoolDispatcherTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/EventBasedThreadPoolActorTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/EventBasedThreadPoolActorTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/EventBasedSingleThreadActorTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/EventBasedSingleThreadActorTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/InMemoryActorTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/InMemoryActorTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala" afterPath="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/SupervisorTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/SupervisorTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-actors/se/scalablesolutions/akka/actor/Scheduler$object.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-actors/se/scalablesolutions/akka/actor/Scheduler$object.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-security/se/scalablesolutions/akka/security/BasicAuthenticationActor.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-security/se/scalablesolutions/akka/security/BasicAuthenticationActor.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-actors/actor/Actor.scala.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-actors/actor/Actor.scala.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-persistence/src/test/scala/MongoPersistentActorSpec.scala" afterPath="$PROJECT_DIR$/akka-persistence/src/test/scala/MongoPersistentActorSpec.scala" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mortbay_jetty_servlet_api_2_5_20081211.xml" afterPath="" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-actors/se/scalablesolutions/akka/actor/Actor.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-actors/se/scalablesolutions/akka/actor/Actor.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java" afterPath="$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-samples-security/src/main/scala/SimpleService.scala" afterPath="$PROJECT_DIR$/akka-samples-security/src/main/scala/SimpleService.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-amqp/ExampleSession.scala.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-amqp/ExampleSession.scala.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-samples-lift/src/main/scala/bootstrap/liftweb/Boot.scala" afterPath="$PROJECT_DIR$/akka-samples-lift/src/main/scala/bootstrap/liftweb/Boot.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java" afterPath="$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-amqp/se/scalablesolutions/akka/amqp/AMQP$object.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-amqp/se/scalablesolutions/akka/amqp/AMQP$object.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-actors/actor/Supervisor.scala.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-actors/actor/Supervisor.scala.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Actor.scala" afterPath="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Actor.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Supervisor.scala" afterPath="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Supervisor.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-amqp/AMQP.scala.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-amqp/AMQP.scala.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/main/scala/config/ActiveObjectGuiceConfigurator.scala" afterPath="$PROJECT_DIR$/akka-actors/src/main/scala/config/ActiveObjectGuiceConfigurator.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/SchedulerTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/SchedulerTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-security/se/scalablesolutions/akka/security/DigestAuthenticationActor.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-security/se/scalablesolutions/akka/security/DigestAuthenticationActor.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Scheduler.scala" afterPath="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Scheduler.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-security/se/scalablesolutions/akka/security/SpnegoAuthenticationActor.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-security/se/scalablesolutions/akka/security/SpnegoAuthenticationActor.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-samples-lift/src/main/scala/akka/SimpleService.scala" afterPath="$PROJECT_DIR$/akka-samples-lift/src/main/scala/akka/SimpleService.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-actors/se/scalablesolutions/akka/actor/Supervisor.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-actors/se/scalablesolutions/akka/actor/Supervisor.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-samples-scala/src/main/scala/SimpleService.scala" afterPath="$PROJECT_DIR$/akka-samples-scala/src/main/scala/SimpleService.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/RemoteActorTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/RemoteActorTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/EventBasedSingleThreadDispatcherTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/EventBasedSingleThreadDispatcherTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/artifacts/akka_samples_lift_war_exploded.xml" afterPath="$PROJECT_DIR$/.idea/artifacts/akka_samples_lift_war_exploded.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/main/scala/actor/ActiveObject.scala" afterPath="$PROJECT_DIR$/akka-actors/src/main/scala/actor/ActiveObject.scala" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mortbay_jetty_jetty_util_6_1_22.xml" afterPath="" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-actors/actor/Scheduler.scala.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-actors/actor/Scheduler.scala.html" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-actors/src/test/scala/RemoteSupervisorTest.scala" afterPath="$PROJECT_DIR$/akka-actors/src/test/scala/RemoteSupervisorTest.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-actors/se/scalablesolutions/akka/actor/ScheduleActor.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-actors/se/scalablesolutions/akka/actor/ScheduleActor.html" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_google_protobuf_protobuf_java_2_1_0.xml" afterPath="" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/.idea/libraries/Maven__net_liftweb_lift_webkit_1_1_M6.xml" afterPath="" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka-persistence/src/test/scala/CassandraPersistentActorSpec.scala" afterPath="$PROJECT_DIR$/akka-persistence/src/test/scala/CassandraPersistentActorSpec.scala" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/docs/scaladocs-akka-actors/actor/ActiveObject.scala.html" afterPath="$PROJECT_DIR$/docs/scaladocs-akka-actors/actor/ActiveObject.scala.html" />
|
||||
</list>
|
||||
<ignored path=".idea/workspace.xml" />
|
||||
<ignored path="akka.iws" />
|
||||
|
|
@ -62,91 +112,91 @@
|
|||
<component name="FileColors" enabled="true" enabledForTabs="true" />
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="Actor.scala" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/actor/Actor.scala">
|
||||
<file leaf-file-name="Supervisor.scala" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/actor/Supervisor.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="2" column="28" selection-start="49" selection-end="49" vertical-scroll-proportion="0.0">
|
||||
<state line="10" column="0" selection-start="319" selection-end="319" vertical-scroll-proportion="-5.8461537">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="RemoteProtocol.proto" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-util-java/src/main/java/se/scalablesolutions/akka/nio/protobuf/RemoteProtocol.proto">
|
||||
<file leaf-file-name="SimpleService.scala" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/akka-samples-security/src/main/scala/SimpleService.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="81" selection-start="158" selection-end="237" vertical-scroll-proportion="0.0">
|
||||
<state line="33" column="0" selection-start="1036" selection-end="1036" vertical-scroll-proportion="-1.5">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="RemoteProtocol.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-util-java/src/main/java/se/scalablesolutions/akka/nio/protobuf/RemoteProtocol.java">
|
||||
<file leaf-file-name="SimpleService.scala" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-samples-scala/src/main/scala/SimpleService.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="4" column="2" selection-start="112" selection-end="112" vertical-scroll-proportion="0.0">
|
||||
<state line="33" column="0" selection-start="989" selection-end="989" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="pom.xml" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/akka-util-java/pom.xml">
|
||||
<file leaf-file-name="SimpleService.scala" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-samples-lift/src/main/scala/akka/SimpleService.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="25" column="18" selection-start="838" selection-end="838" vertical-scroll-proportion="0.6445047">
|
||||
<state line="19" column="6" selection-start="622" selection-end="622" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="ProtobufProtocol.proto" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/ProtobufProtocol.proto">
|
||||
<file leaf-file-name="Boot.scala" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-samples-lift/src/main/scala/bootstrap/liftweb/Boot.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="74" selection-start="147" selection-end="219" vertical-scroll-proportion="0.0">
|
||||
<state line="38" column="35" selection-start="1081" selection-end="1112" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/pom.xml">
|
||||
<file leaf-file-name="ActiveObject.scala" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/actor/ActiveObject.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="432" column="0" selection-start="13356" selection-end="13356" vertical-scroll-proportion="0.0">
|
||||
<state line="128" column="9" selection-start="6068" selection-end="6068" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/pom.xml">
|
||||
<file leaf-file-name="SupervisorTest.scala" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/test/scala/SupervisorTest.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="18" column="106" selection-start="590" selection-end="590" vertical-scroll-proportion="0.0">
|
||||
<state line="23" column="33" selection-start="527" selection-end="527" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="ProtobufProtocol.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/ProtobufProtocol.java">
|
||||
<file leaf-file-name="Security.scala" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-security/src/main/scala/Security.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="14" column="49" selection-start="562" selection-end="580" vertical-scroll-proportion="0.0">
|
||||
<state line="287" column="22" selection-start="10447" selection-end="10447" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/pom.xml">
|
||||
<file leaf-file-name="InMemNestedStateTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="88" column="31" selection-start="2735" selection-end="2748" vertical-scroll-proportion="0.0">
|
||||
<state line="36" column="0" selection-start="1434" selection-end="1434" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="pom.xml" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-kernel/pom.xml">
|
||||
<file leaf-file-name="InMemoryStateTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="131" column="18" selection-start="4034" selection-end="4034" vertical-scroll-proportion="0.0">
|
||||
<state line="22" column="17" selection-start="604" selection-end="604" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
|
@ -162,19 +212,22 @@
|
|||
<component name="IdeDocumentHistory">
|
||||
<option name="changedFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Scheduler.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Supervisor.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-security/src/test/scala/SecuritySpec.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-security/src/main/scala/Security.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/main/scala/nio/RemoteServer.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Actor.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/akka-util-java/src/main/java/se/scalablesolutions/akka/nio/protobuf/RemoteProtocol.java" />
|
||||
<option value="$PROJECT_DIR$/akka-util-java/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/akka-fun-test-java/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/ProtobufProtocol.proto" />
|
||||
<option value="$PROJECT_DIR$/akka-kernel/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/main/scala/dispatch/ThreadBasedDispatcher.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/main/scala/config/ActiveObjectGuiceConfigurator.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Actor.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/test/scala/RemoteSupervisorTest.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/test/scala/SupervisorTest.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-security/src/main/scala/Security.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java" />
|
||||
<option value="$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java" />
|
||||
<option value="$PROJECT_DIR$/akka-samples-scala/src/main/scala/SimpleService.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-samples-lift/src/main/scala/bootstrap/liftweb/Boot.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/main/scala/actor/ActiveObject.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-actors/src/main/scala/actor/Supervisor.scala" />
|
||||
<option value="$PROJECT_DIR$/akka-samples-security/src/main/scala/SimpleService.scala" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
|
@ -372,7 +425,8 @@
|
|||
<window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.19480519" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.19480519" sideWeight="0.6619898" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" 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" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
|
||||
<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="7" side_tool="false" content_ui="tabs" />
|
||||
<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="3" side_tool="false" content_ui="tabs" />
|
||||
|
|
@ -384,7 +438,6 @@
|
|||
<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="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<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" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<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" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
|
|
@ -419,114 +472,116 @@
|
|||
<breakpoint-manager />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/akka-security/src/main/scala/Security.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="38" column="3" selection-start="1677" selection-end="1677" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-security/src/test/scala/SecuritySpec.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="65" column="45" selection-start="2449" selection-end="2449" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/dispatch/Reactor.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="28" column="6" selection-start="656" selection-end="656" vertical-scroll-proportion="0.0">
|
||||
<state line="47" column="6" selection-start="1262" selection-end="1262" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.1.0.GA/netty-3.1.0.GA-sources.jar!/org/jboss/netty/handler/codec/protobuf/ProtobufDecoder.java">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/dispatch/ThreadBasedDispatcher.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="26" column="43" selection-start="805" selection-end="805" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/nio/RemoteClient.scala">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/config/ActiveObjectGuiceConfigurator.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="75" column="32" selection-start="2858" selection-end="2858" vertical-scroll-proportion="0.0">
|
||||
<state line="135" column="24" selection-start="6215" selection-end="6215" vertical-scroll-proportion="-25.307692">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.1.0.GA/netty-3.1.0.GA-sources.jar!/org/jboss/netty/bootstrap/ClientBootstrap.java">
|
||||
<entry file="file://$PROJECT_DIR$/akka-amqp/src/main/scala/AMQP.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="193" column="25" selection-start="7649" selection-end="7649" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
<state line="403" column="33" selection-start="15312" selection-end="15312" vertical-scroll-proportion="-25.307692">
|
||||
<folding>
|
||||
<marker date="1258661369000" expanded="true" signature="560:1397" placeholder="/**...*/" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/actor/Actor.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="2" column="28" selection-start="49" selection-end="49" vertical-scroll-proportion="0.0">
|
||||
<state line="223" column="51" selection-start="8202" selection-end="8202" vertical-scroll-proportion="-17.538462">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-util-java/src/main/java/se/scalablesolutions/akka/nio/protobuf/RemoteProtocol.proto">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/test/scala/RemoteSupervisorTest.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="81" selection-start="158" selection-end="237" vertical-scroll-proportion="0.0">
|
||||
<state line="566" column="0" selection-start="14183" selection-end="14183" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-util-java/src/main/java/se/scalablesolutions/akka/nio/protobuf/RemoteProtocol.java">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/test/scala/SupervisorTest.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="4" column="2" selection-start="112" selection-end="112" vertical-scroll-proportion="0.0">
|
||||
<state line="23" column="33" selection-start="527" selection-end="527" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/ProtobufProtocol.java">
|
||||
<entry file="file://$PROJECT_DIR$/akka-security/src/main/scala/Security.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="14" column="49" selection-start="562" selection-end="580" vertical-scroll-proportion="0.0">
|
||||
<state line="287" column="22" selection-start="10447" selection-end="10447" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/ProtobufProtocol.proto">
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemNestedStateTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="74" selection-start="147" selection-end="219" vertical-scroll-proportion="0.0">
|
||||
<state line="36" column="0" selection-start="1434" selection-end="1434" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/pom.xml">
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="432" column="0" selection-start="13356" selection-end="13356" vertical-scroll-proportion="0.0">
|
||||
<state line="22" column="17" selection-start="604" selection-end="604" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/pom.xml">
|
||||
<entry file="file://$PROJECT_DIR$/akka-samples-scala/src/main/scala/SimpleService.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="88" column="31" selection-start="2735" selection-end="2748" vertical-scroll-proportion="0.0">
|
||||
<state line="33" column="0" selection-start="989" selection-end="989" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-kernel/pom.xml">
|
||||
<entry file="file://$PROJECT_DIR$/akka-samples-lift/src/main/scala/akka/SimpleService.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="131" column="18" selection-start="4034" selection-end="4034" vertical-scroll-proportion="0.0">
|
||||
<state line="19" column="6" selection-start="622" selection-end="622" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-fun-test-java/pom.xml">
|
||||
<entry file="file://$PROJECT_DIR$/akka-samples-lift/src/main/scala/bootstrap/liftweb/Boot.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="18" column="106" selection-start="590" selection-end="590" vertical-scroll-proportion="0.0">
|
||||
<state line="38" column="35" selection-start="1081" selection-end="1112" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-util-java/pom.xml">
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/actor/ActiveObject.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="25" column="18" selection-start="838" selection-end="838" vertical-scroll-proportion="0.6445047">
|
||||
<state line="128" column="9" selection-start="6068" selection-end="6068" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-actors/src/main/scala/actor/Supervisor.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="10" column="0" selection-start="319" selection-end="319" vertical-scroll-proportion="-5.8461537">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/akka-samples-security/src/main/scala/SimpleService.scala">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="33" column="0" selection-start="1036" selection-end="1036" vertical-scroll-proportion="-1.5">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
|
|
|||
|
|
@ -127,11 +127,9 @@ object ActiveObject {
|
|||
|
||||
|
||||
private[akka] def supervise(restartStrategy: RestartStrategy, components: List[Supervise]): Supervisor = {
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig = SupervisorConfig(restartStrategy, components)
|
||||
}
|
||||
val supervisor = factory.newSupervisor
|
||||
supervisor ! StartSupervisor
|
||||
val factory = SupervisorFactory(SupervisorConfig(restartStrategy, components))
|
||||
val supervisor = factory.newInstance
|
||||
supervisor.start
|
||||
supervisor
|
||||
}
|
||||
}
|
||||
|
|
@ -325,7 +323,7 @@ private[akka] class Dispatcher(val callbacks: Option[RestartCallbacks]) extends
|
|||
//if (initTxState.isDefined) initTxState.get.setAccessible(true)
|
||||
}
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
case Invocation(joinPoint, isOneWay, _) =>
|
||||
if (Actor.SERIALIZE_MESSAGES) serializeArguments(joinPoint)
|
||||
if (isOneWay) joinPoint.proceed
|
||||
|
|
|
|||
|
|
@ -70,6 +70,13 @@ object Actor {
|
|||
/**
|
||||
* Actor base trait that should be extended by or mixed to create an Actor with the semantics of the 'Actor Model':
|
||||
* <a href="http://en.wikipedia.org/wiki/Actor_model">http://en.wikipedia.org/wiki/Actor_model</a>
|
||||
* <p/>
|
||||
* An actor has a well-defined (non-cyclic) life-cycle.
|
||||
* <pre>
|
||||
* => NEW (newly created actor) - can't receive messages (yet)
|
||||
* => STARTED (when 'start' is invoked) - can receive messages
|
||||
* => SHUT DOWN (when 'exit' is invoked) - can't do anything
|
||||
* </pre>
|
||||
*
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
|
|
@ -81,6 +88,7 @@ trait Actor extends Logging with TransactionManagement {
|
|||
|
||||
// private fields
|
||||
@volatile private var _isRunning: Boolean = false
|
||||
@volatile private var _isShutDown: Boolean = false
|
||||
private var _hotswap: Option[PartialFunction[Any, Unit]] = None
|
||||
private var _config: Option[AnyRef] = None
|
||||
private val _remoteFlagLock = new ReadWriteLock
|
||||
|
|
@ -144,7 +152,6 @@ trait Actor extends Logging with TransactionManagement {
|
|||
protected[akka] var messageDispatcher: MessageDispatcher = {
|
||||
val dispatcher = Dispatchers.newEventBasedThreadPoolDispatcher(getClass.getName)
|
||||
_mailbox = dispatcher.messageQueue
|
||||
dispatcher.registerHandler(this, new ActorMessageInvoker(this))
|
||||
dispatcher
|
||||
}
|
||||
|
||||
|
|
@ -201,7 +208,7 @@ trait Actor extends Logging with TransactionManagement {
|
|||
* <p/>
|
||||
* Example code:
|
||||
* <pre>
|
||||
* def receive: PartialFunction[Any, Unit] = {
|
||||
* def receive = {
|
||||
* case Ping =>
|
||||
* println("got a ping")
|
||||
* reply("pong")
|
||||
|
|
@ -264,7 +271,9 @@ trait Actor extends Logging with TransactionManagement {
|
|||
* Starts up the actor and its message queue.
|
||||
*/
|
||||
def start = synchronized {
|
||||
if (_isShutDown) throw new IllegalStateException("Can't restart an actor that have been shut down with 'exit'")
|
||||
if (!_isRunning) {
|
||||
dispatcher.registerHandler(this, new ActorMessageInvoker(this))
|
||||
messageDispatcher.start
|
||||
_isRunning = true
|
||||
//if (isTransactional) this !! TransactionalInit
|
||||
|
|
@ -273,14 +282,15 @@ trait Actor extends Logging with TransactionManagement {
|
|||
}
|
||||
|
||||
/**
|
||||
* Stops the actor and its message queue.
|
||||
* Shuts down the actor its dispatcher and message queue.
|
||||
*/
|
||||
def stop = synchronized {
|
||||
def exit = synchronized {
|
||||
if (_isRunning) {
|
||||
dispatcher.unregisterHandler(this)
|
||||
if (dispatcher.isInstanceOf[ThreadBasedDispatcher]) dispatcher.shutdown
|
||||
messageDispatcher.unregisterHandler(this)
|
||||
if (messageDispatcher.isInstanceOf[ThreadBasedDispatcher]) messageDispatcher.shutdown
|
||||
// FIXME: Need to do reference count to know if EventBasedThreadPoolDispatcher and EventBasedSingleThreadDispatcher can be shut down
|
||||
_isRunning = false
|
||||
_isShutDown = true
|
||||
shutdown
|
||||
}
|
||||
}
|
||||
|
|
@ -356,7 +366,10 @@ trait Actor extends Logging with TransactionManagement {
|
|||
case Some(future) => future.completeWithResult(message)
|
||||
}
|
||||
|
||||
def dispatcher = messageDispatcher
|
||||
/**
|
||||
* Get the dispatcher for this actor.
|
||||
*/
|
||||
def dispatcher = synchronized { messageDispatcher }
|
||||
|
||||
/**
|
||||
* Sets the dispatcher for this actor. Needs to be invoked before the actor is started.
|
||||
|
|
|
|||
|
|
@ -30,11 +30,11 @@ case class SchedulerException(msg: String, e: Throwable) extends RuntimeExceptio
|
|||
class ScheduleActor(val receiver: Actor, val future: ScheduledFuture[AnyRef]) extends Actor with Logging {
|
||||
lifeCycle = Some(LifeCycle(Permanent))
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case UnSchedule =>
|
||||
Scheduler.stopSupervising(this)
|
||||
future.cancel(true)
|
||||
stop
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ object Scheduler extends Actor {
|
|||
service.shutdown
|
||||
}
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case _ => {} // ignore all messages
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,12 +8,9 @@ import se.scalablesolutions.akka.config.ScalaConfig._
|
|||
import se.scalablesolutions.akka.config.{ConfiguratorRepository, Configurator}
|
||||
import se.scalablesolutions.akka.util.Helpers._
|
||||
import se.scalablesolutions.akka.util.Logging
|
||||
import se.scalablesolutions.akka.dispatch.Dispatchers
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
import scala.collection.mutable.HashMap
|
||||
|
||||
/**
|
||||
* Messages that the supervisor responds to and returns.
|
||||
*
|
||||
|
|
@ -34,42 +31,32 @@ case class OneForOneStrategy(maxNrOfRetries: Int, withinTimeRange: Int) extends
|
|||
* <p>
|
||||
* Example usage:
|
||||
* <pre>
|
||||
* class MySupervisorFactory extends SupervisorFactory {
|
||||
*
|
||||
* override protected def getSupervisorConfig: SupervisorConfig = {
|
||||
* SupervisorConfig(
|
||||
* RestartStrategy(OneForOne, 3, 10),
|
||||
* Supervise(
|
||||
* myFirstActor,
|
||||
* LifeCycle(Permanent))
|
||||
* ::
|
||||
* Supervise(
|
||||
* mySecondActor,
|
||||
* LifeCycle(Permanent))
|
||||
* :: Nil)
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* Then create a concrete factory in which we mix in support for the specific implementation of the Service we want to use.
|
||||
*
|
||||
* <pre>
|
||||
* object factory extends MySupervisorFactory
|
||||
* val factory = SupervisorFactory(
|
||||
* SupervisorConfig(
|
||||
* RestartStrategy(OneForOne, 3, 10),
|
||||
* Supervise(
|
||||
* myFirstActor,
|
||||
* LifeCycle(Permanent)) ::
|
||||
* Supervise(
|
||||
* mySecondActor,
|
||||
* LifeCycle(Permanent)) ::
|
||||
* Nil))
|
||||
* </pre>
|
||||
*
|
||||
* Then create a new Supervisor tree with the concrete Services we have defined.
|
||||
*
|
||||
* <pre>
|
||||
* val supervisor = factory.newSupervisor
|
||||
* supervisor ! Start // start up all managed servers
|
||||
* val supervisor = factory.newInstance
|
||||
* supervisor.start // start up all managed servers
|
||||
* </pre>
|
||||
*
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
abstract class SupervisorFactory extends Logging {
|
||||
def newSupervisor: Supervisor = newSupervisorFor(getSupervisorConfig)
|
||||
class SupervisorFactory(val config: SupervisorConfig) extends Logging {
|
||||
|
||||
def newSupervisorFor(config: SupervisorConfig): Supervisor = config match {
|
||||
def newInstance: Supervisor = newInstanceFor(config)
|
||||
|
||||
def newInstanceFor(config: SupervisorConfig): Supervisor = config match {
|
||||
case SupervisorConfig(restartStrategy, _) =>
|
||||
val supervisor = create(restartStrategy)
|
||||
supervisor.start
|
||||
|
|
@ -77,12 +64,6 @@ abstract class SupervisorFactory extends Logging {
|
|||
supervisor
|
||||
}
|
||||
|
||||
/**
|
||||
* To be overridden by concrete factory.
|
||||
* Should return the SupervisorConfig for the supervisor.
|
||||
*/
|
||||
protected def getSupervisorConfig: SupervisorConfig
|
||||
|
||||
protected def create(strategy: RestartStrategy): Supervisor = strategy match {
|
||||
case RestartStrategy(scheme, maxNrOfRetries, timeRange) =>
|
||||
scheme match {
|
||||
|
|
@ -92,18 +73,24 @@ abstract class SupervisorFactory extends Logging {
|
|||
}
|
||||
}
|
||||
|
||||
object SupervisorFactory {
|
||||
def apply(config: SupervisorConfig) = new SupervisorFactory(config)
|
||||
}
|
||||
|
||||
/**
|
||||
* <b>NOTE:</b>
|
||||
* <p/>
|
||||
* The supervisor class is only used for the configuration system when configuring supervisor hierarchies declaratively.
|
||||
* Should not be used in development. Instead wire the actors together using 'link', 'spawnLink' etc. and set the 'trapExit'
|
||||
* flag in the actors that should trap error signals and trigger restart.
|
||||
* The supervisor class is only used for the configuration system when configuring supervisor
|
||||
* hierarchies declaratively. Should not be used as part of the regular programming API. Instead
|
||||
* wire the actors together using 'link', 'spawnLink' etc. and set the 'trapExit' flag in the
|
||||
* actors that should trap error signals and trigger restart.
|
||||
* <p/>
|
||||
* See the ScalaDoc for the SupervisorFactory for an example on how to declaratively wire up actors.
|
||||
*
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
class Supervisor private[akka] (handler: FaultHandlingStrategy) extends Actor with Logging with Configurator {
|
||||
sealed class Supervisor private[akka] (handler: FaultHandlingStrategy)
|
||||
extends Actor with Logging with Configurator {
|
||||
trapExit = List(classOf[Throwable])
|
||||
faultHandler = Some(handler)
|
||||
//dispatcher = Dispatchers.newThreadBasedDispatcher(this)
|
||||
|
|
@ -116,23 +103,29 @@ class Supervisor private[akka] (handler: FaultHandlingStrategy) extends Actor wi
|
|||
|
||||
def isDefined(clazz: Class[_]): Boolean = actors.containsKey(clazz.getName)
|
||||
|
||||
def startSupervisor = {
|
||||
override def start = {
|
||||
ConfiguratorRepository.registerConfigurator(this)
|
||||
actors.values.toArray.toList.foreach(println)
|
||||
start
|
||||
super[Actor].start
|
||||
this ! StartSupervisor
|
||||
}
|
||||
|
||||
def stopSupervisor = this ! StopSupervisor
|
||||
def stop = this !? StopSupervisor
|
||||
|
||||
protected def receive: PartialFunction[Any, Unit] = {
|
||||
protected def receive = {
|
||||
case StartSupervisor =>
|
||||
_linkedActors.toArray.toList.asInstanceOf[List[Actor]].foreach { actor => actor.start; log.info("Starting actor: %s", actor) }
|
||||
_linkedActors.toArray.toList.asInstanceOf[List[Actor]].foreach { actor =>
|
||||
actor.start
|
||||
log.info("Starting actor: %s", actor)
|
||||
}
|
||||
|
||||
case StopSupervisor =>
|
||||
_linkedActors.toArray.toList.asInstanceOf[List[Actor]].foreach { actor => actor.stop; log.info("Stopping actor: %s", actor) }
|
||||
_linkedActors.toArray.toList.asInstanceOf[List[Actor]].foreach { actor =>
|
||||
actor.exit
|
||||
log.info("Shutting actor down: %s", actor)
|
||||
}
|
||||
log.info("Stopping supervisor: %s", this)
|
||||
stop
|
||||
exit
|
||||
}
|
||||
|
||||
def configure(config: SupervisorConfig, factory: SupervisorFactory) = config match {
|
||||
|
|
@ -145,7 +138,7 @@ class Supervisor private[akka] (handler: FaultHandlingStrategy) extends Actor wi
|
|||
startLink(actor)
|
||||
|
||||
case SupervisorConfig(_, _) => // recursive configuration
|
||||
val supervisor = factory.newSupervisorFor(server.asInstanceOf[SupervisorConfig])
|
||||
val supervisor = factory.newInstanceFor(server.asInstanceOf[SupervisorConfig])
|
||||
supervisor ! StartSupervisor
|
||||
// FIXME what to do with recursively supervisors?
|
||||
})
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ private[akka] class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurat
|
|||
supervisor = Some(ActiveObject.supervise(restartStrategy, supervised))
|
||||
//camelContext.addComponent(AKKA_CAMEL_ROUTING_SCHEME, new ActiveObjectComponent(this))
|
||||
//camelContext.start
|
||||
supervisor.get.startSupervisor
|
||||
supervisor.get.start
|
||||
ConfiguratorRepository.registerConfigurator(this)
|
||||
this
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ class EventBasedSingleThreadActorTest extends JUnitSuite {
|
|||
class TestActor extends Actor {
|
||||
dispatcher = Dispatchers.newEventBasedSingleThreadDispatcher(uuid)
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "Hello" =>
|
||||
reply("World")
|
||||
case "Failure" =>
|
||||
|
|
@ -25,7 +25,7 @@ class EventBasedSingleThreadActorTest extends JUnitSuite {
|
|||
implicit val timeout = 5000L
|
||||
var oneWay = "nada"
|
||||
val actor = new Actor {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "OneWay" => oneWay = "received"
|
||||
}
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ class EventBasedSingleThreadActorTest extends JUnitSuite {
|
|||
val result = actor ! "OneWay"
|
||||
Thread.sleep(100)
|
||||
assert("received" === oneWay)
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test def shouldSendReplySync = {
|
||||
|
|
@ -42,7 +42,7 @@ class EventBasedSingleThreadActorTest extends JUnitSuite {
|
|||
actor.start
|
||||
val result: String = actor !? "Hello"
|
||||
assert("World" === result)
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test def shouldSendReplyAsync = {
|
||||
|
|
@ -51,7 +51,7 @@ class EventBasedSingleThreadActorTest extends JUnitSuite {
|
|||
actor.start
|
||||
val result = actor !! "Hello"
|
||||
assert("World" === result.get.asInstanceOf[String])
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test def shouldSendReceiveException = {
|
||||
|
|
@ -65,6 +65,6 @@ class EventBasedSingleThreadActorTest extends JUnitSuite {
|
|||
case e =>
|
||||
assert("expected" === e.getMessage())
|
||||
}
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,9 +50,9 @@ class EventBasedSingleThreadDispatcherTest extends JUnitSuite {
|
|||
internalTestMessagesDispatchedToHandlersAreExecutedInFIFOOrder
|
||||
}
|
||||
|
||||
val key1 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} }
|
||||
val key2 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} }
|
||||
val key3 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} }
|
||||
val key1 = new Actor { def receive = { case _ => {}} }
|
||||
val key2 = new Actor { def receive = { case _ => {}} }
|
||||
val key3 = new Actor { def receive = { case _ => {}} }
|
||||
|
||||
private def internalTestMessagesDispatchedToTheSameHandlerAreExecutedSequentially: Unit = {
|
||||
val guardLock = new ReentrantLock
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class EventBasedThreadPoolActorTest extends JUnitSuite {
|
|||
private val unit = TimeUnit.MILLISECONDS
|
||||
|
||||
class TestActor extends Actor {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "Hello" =>
|
||||
reply("World")
|
||||
case "Failure" =>
|
||||
|
|
@ -21,7 +21,7 @@ class EventBasedThreadPoolActorTest extends JUnitSuite {
|
|||
implicit val timeout = 5000L
|
||||
var oneWay = "nada"
|
||||
val actor = new Actor {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "OneWay" => oneWay = "received"
|
||||
}
|
||||
}
|
||||
|
|
@ -29,7 +29,7 @@ class EventBasedThreadPoolActorTest extends JUnitSuite {
|
|||
val result = actor ! "OneWay"
|
||||
Thread.sleep(100)
|
||||
assert("received" === oneWay)
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test def shouldSendReplySync = {
|
||||
|
|
@ -38,7 +38,7 @@ class EventBasedThreadPoolActorTest extends JUnitSuite {
|
|||
actor.start
|
||||
val result: String = actor !? "Hello"
|
||||
assert("World" === result)
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test def shouldSendReplyAsync = {
|
||||
|
|
@ -47,7 +47,7 @@ class EventBasedThreadPoolActorTest extends JUnitSuite {
|
|||
actor.start
|
||||
val result = actor !! "Hello"
|
||||
assert("World" === result.get.asInstanceOf[String])
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test def shouldSendReceiveException = {
|
||||
|
|
@ -61,6 +61,6 @@ class EventBasedThreadPoolActorTest extends JUnitSuite {
|
|||
case e =>
|
||||
assert("expected" === e.getMessage())
|
||||
}
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ import se.scalablesolutions.akka.actor.Actor
|
|||
|
||||
class EventBasedThreadPoolDispatcherTest extends JUnitSuite {
|
||||
private var threadingIssueDetected: AtomicBoolean = null
|
||||
val key1 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} }
|
||||
val key2 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} }
|
||||
val key3 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} }
|
||||
val key1 = new Actor { def receive = { case _ => {}} }
|
||||
val key2 = new Actor { def receive = { case _ => {}} }
|
||||
val key3 = new Actor { def receive = { case _ => {}} }
|
||||
|
||||
@Before
|
||||
def setUp = {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class InMemStatefulActor extends Actor {
|
|||
private lazy val vectorState = TransactionalState.newVector[String]
|
||||
private lazy val refState = TransactionalState.newRef[String]
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case GetMapState(key) =>
|
||||
reply(mapState.get(key).get)
|
||||
case GetVectorSize =>
|
||||
|
|
@ -79,7 +79,7 @@ class InMemStatefulActor extends Actor {
|
|||
@serializable
|
||||
class InMemFailerActor extends Actor {
|
||||
makeTransactionRequired
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "Failure" =>
|
||||
throw new RuntimeException("expected")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,14 +11,14 @@ object Global {
|
|||
var oneWay = "nada"
|
||||
}
|
||||
class RemoteActorSpecActorUnidirectional extends Actor {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "OneWay" =>
|
||||
Global.oneWay = "received"
|
||||
}
|
||||
}
|
||||
|
||||
class RemoteActorSpecActorBidirectional extends Actor {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "Hello" =>
|
||||
reply("World")
|
||||
case "Failure" =>
|
||||
|
|
@ -46,7 +46,7 @@ class RemoteActorTest extends JUnitSuite {
|
|||
val result = actor ! "OneWay"
|
||||
Thread.sleep(100)
|
||||
assert("received" === Global.oneWay)
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -57,7 +57,7 @@ class RemoteActorTest extends JUnitSuite {
|
|||
actor.start
|
||||
val result: String = actor !? "Hello"
|
||||
assert("World" === result)
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -68,7 +68,7 @@ class RemoteActorTest extends JUnitSuite {
|
|||
actor.start
|
||||
val result = actor !! "Hello"
|
||||
assert("World" === result.get.asInstanceOf[String])
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -84,6 +84,6 @@ class RemoteActorTest extends JUnitSuite {
|
|||
case e =>
|
||||
assert("expected" === e.getMessage())
|
||||
}
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,16 +15,16 @@ object Log {
|
|||
var messageLog: String = ""
|
||||
var oneWayLog: String = ""
|
||||
}
|
||||
|
||||
/**
|
||||
* @author <a href="http://jonasboner.com">Jonas Bonér</a>
|
||||
*/
|
||||
class RemoteSupervisorTest extends JUnitSuite {
|
||||
|
||||
class RemoteSupervisorTest extends JUnitSuite {
|
||||
akka.Config.config
|
||||
new Thread(new Runnable() {
|
||||
def run = {
|
||||
RemoteServer.start
|
||||
}
|
||||
def run = {
|
||||
RemoteServer.start
|
||||
}
|
||||
}).start
|
||||
Thread.sleep(1000)
|
||||
|
||||
|
|
@ -279,164 +279,164 @@ class RemoteSupervisorTest extends JUnitSuite {
|
|||
*/
|
||||
|
||||
/*
|
||||
@Test def shouldOneWayKillSingleActorAllForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getSingleActorAllForOneSupervisor
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
intercept[RuntimeException] {
|
||||
pingpong1 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("DIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
@Test def shouldOneWayKillSingleActorAllForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getSingleActorAllForOneSupervisor
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
intercept[RuntimeException] {
|
||||
pingpong1 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("DIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
|
||||
@Test def shouldOneWayCallKillCallSingleActorAllForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getSingleActorAllForOneSupervisor
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("ping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
intercept[RuntimeException] {
|
||||
pingpong1 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingDIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingDIEping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
@Test def shouldOneWayCallKillCallSingleActorAllForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getSingleActorAllForOneSupervisor
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("ping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
intercept[RuntimeException] {
|
||||
pingpong1 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingDIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingDIEping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
|
||||
@Test def shouldOneWayKillMultipleActorsOneForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getMultipleActorsOneForOneConf
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
intercept[RuntimeException] {
|
||||
pingpong3 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("DIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
@Test def shouldOneWayKillMultipleActorsOneForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getMultipleActorsOneForOneConf
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
intercept[RuntimeException] {
|
||||
pingpong3 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("DIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
|
||||
def tesOneWayCallKillCallMultipleActorsOneForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getMultipleActorsOneForOneConf
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
intercept[RuntimeException] {
|
||||
pingpong2 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingpingDIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingpingDIEpingpingping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
def tesOneWayCallKillCallMultipleActorsOneForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getMultipleActorsOneForOneConf
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
intercept[RuntimeException] {
|
||||
pingpong2 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingpingDIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingpingDIEpingpingping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
|
||||
@Test def shouldOneWayKillMultipleActorsAllForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getMultipleActorsAllForOneConf
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
intercept[RuntimeException] {
|
||||
pingpong2 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("DIEDIEDIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
@Test def shouldOneWayKillMultipleActorsAllForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getMultipleActorsAllForOneConf
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
intercept[RuntimeException] {
|
||||
pingpong2 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("DIEDIEDIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
|
||||
def tesOneWayCallKillCallMultipleActorsAllForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getMultipleActorsAllForOneConf
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
pingpong1 ! BinaryString("Ping")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
intercept[RuntimeException] {
|
||||
pingpong2 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingpingDIEDIEDIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingpingDIEDIEDIEpingpingping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
*/
|
||||
def tesOneWayCallKillCallMultipleActorsAllForOne = {
|
||||
Logg.messageLog = ""
|
||||
val sup = getMultipleActorsAllForOneConf
|
||||
sup ! StartSupervisor
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
pingpong1 ! BinaryString("Ping")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
intercept[RuntimeException] {
|
||||
pingpong2 ! BinaryString("Die")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingpingDIEDIEDIE") {
|
||||
Logg.messageLog
|
||||
}
|
||||
expect("pong") {
|
||||
(pingpong1 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong2 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pong") {
|
||||
(pingpong3 ! BinaryString("Ping")).getOrElse("nil")
|
||||
}
|
||||
Thread.sleep(500)
|
||||
expect("pingpingpingDIEDIEDIEpingpingping") {
|
||||
Logg.messageLog
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
@Test def shouldNestedSupervisorsTerminateFirstLevelActorAllForOne = {
|
||||
|
|
@ -467,34 +467,29 @@ class RemoteSupervisorTest extends JUnitSuite {
|
|||
pingpong1 = new RemotePingPong1Actor
|
||||
pingpong1.makeRemote(RemoteServer.HOSTNAME, RemoteServer.PORT)
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil))
|
||||
|
||||
factory.newInstance
|
||||
}
|
||||
|
||||
def getSingleActorOneForOneSupervisor: Supervisor = {
|
||||
pingpong1 = new RemotePingPong1Actor
|
||||
pingpong1.makeRemote(RemoteServer.HOSTNAME, RemoteServer.PORT)
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil))
|
||||
factory.newInstance
|
||||
}
|
||||
|
||||
def getMultipleActorsAllForOneConf: Supervisor = {
|
||||
|
|
@ -505,25 +500,22 @@ class RemoteSupervisorTest extends JUnitSuite {
|
|||
pingpong3 = new RemotePingPong3Actor
|
||||
pingpong3.makeRemote(RemoteServer.HOSTNAME, RemoteServer.PORT)
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong2,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong3,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong2,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong3,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil))
|
||||
factory.newInstance
|
||||
}
|
||||
|
||||
def getMultipleActorsOneForOneConf: Supervisor = {
|
||||
|
|
@ -534,25 +526,22 @@ class RemoteSupervisorTest extends JUnitSuite {
|
|||
pingpong3 = new RemotePingPong3Actor
|
||||
pingpong3.makeRemote(RemoteServer.HOSTNAME, RemoteServer.PORT)
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong2,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong3,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong2,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong3,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil))
|
||||
factory.newInstance
|
||||
}
|
||||
|
||||
def getNestedSupervisorsAllForOneConf: Supervisor = {
|
||||
|
|
@ -563,34 +552,30 @@ class RemoteSupervisorTest extends JUnitSuite {
|
|||
pingpong3 = new RemotePingPong3Actor
|
||||
pingpong3.makeRemote(RemoteServer.HOSTNAME, RemoteServer.PORT)
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong2,
|
||||
LifeCycle(Permanent))
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong3,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
}
|
||||
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong2,
|
||||
LifeCycle(Permanent))
|
||||
::
|
||||
Supervise(
|
||||
pingpong3,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
:: Nil))
|
||||
factory.newInstance
|
||||
}
|
||||
}
|
||||
|
||||
@serializable class RemotePingPong1Actor extends Actor {
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case BinaryString("Ping") =>
|
||||
Log.messageLog += "ping"
|
||||
reply("pong")
|
||||
|
|
@ -601,26 +586,28 @@ class RemoteSupervisorTest extends JUnitSuite {
|
|||
case BinaryString("Die") =>
|
||||
throw new RuntimeException("DIE")
|
||||
}
|
||||
|
||||
override protected def postRestart(reason: AnyRef, config: Option[AnyRef]) {
|
||||
Log.messageLog += reason.asInstanceOf[Exception].getMessage
|
||||
}
|
||||
}
|
||||
|
||||
@serializable class RemotePingPong2Actor extends Actor {
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case BinaryString("Ping") =>
|
||||
Log.messageLog += "ping"
|
||||
reply("pong")
|
||||
case BinaryString("Die") =>
|
||||
throw new RuntimeException("DIE")
|
||||
}
|
||||
|
||||
override protected def postRestart(reason: AnyRef, config: Option[AnyRef]) {
|
||||
Log.messageLog += reason.asInstanceOf[Exception].getMessage
|
||||
}
|
||||
}
|
||||
|
||||
@serializable class RemotePingPong3Actor extends Actor {
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case BinaryString("Ping") =>
|
||||
Log.messageLog += "ping"
|
||||
reply("pong")
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class SchedulerTest extends JUnitSuite {
|
|||
var count = 0
|
||||
case object Tick
|
||||
val actor = new Actor() {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Tick => count += 1
|
||||
}}
|
||||
actor.start
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
package se.scalablesolutions.akka.actor
|
||||
|
||||
import config.ScalaConfig._
|
||||
import se.scalablesolutions.akka.config.ScalaConfig._
|
||||
|
||||
import org.scalatest.junit.JUnitSuite
|
||||
import org.junit.Test
|
||||
|
|
@ -453,33 +453,27 @@ class SupervisorTest extends JUnitSuite {
|
|||
|
||||
pingpong1 = new PingPong1Actor
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
:: Nil))
|
||||
factory.newInstance
|
||||
}
|
||||
|
||||
def getSingleActorOneForOneSupervisor: Supervisor = {
|
||||
pingpong1 = new PingPong1Actor
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
pingpong1,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
:: Nil))
|
||||
factory.newInstance
|
||||
}
|
||||
|
||||
def getMultipleActorsAllForOneConf: Supervisor = {
|
||||
|
|
@ -487,8 +481,7 @@ class SupervisorTest extends JUnitSuite {
|
|||
pingpong2 = new PingPong2Actor
|
||||
pingpong3 = new PingPong3Actor
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
|
|
@ -502,10 +495,8 @@ class SupervisorTest extends JUnitSuite {
|
|||
Supervise(
|
||||
pingpong3,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
:: Nil))
|
||||
factory.newInstance
|
||||
}
|
||||
|
||||
def getMultipleActorsOneForOneConf: Supervisor = {
|
||||
|
|
@ -513,8 +504,7 @@ class SupervisorTest extends JUnitSuite {
|
|||
pingpong2 = new PingPong2Actor
|
||||
pingpong3 = new PingPong3Actor
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
|
|
@ -528,10 +518,8 @@ class SupervisorTest extends JUnitSuite {
|
|||
Supervise(
|
||||
pingpong3,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
:: Nil))
|
||||
factory.newInstance
|
||||
}
|
||||
|
||||
def getNestedSupervisorsAllForOneConf: Supervisor = {
|
||||
|
|
@ -539,8 +527,7 @@ class SupervisorTest extends JUnitSuite {
|
|||
pingpong2 = new PingPong2Actor
|
||||
pingpong3 = new PingPong3Actor
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(AllForOne, 3, 100),
|
||||
Supervise(
|
||||
|
|
@ -557,14 +544,12 @@ class SupervisorTest extends JUnitSuite {
|
|||
pingpong3,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
factory.newSupervisor
|
||||
:: Nil))
|
||||
factory.newInstance
|
||||
}
|
||||
|
||||
class PingPong1Actor extends Actor {
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Ping =>
|
||||
messageLog += "ping"
|
||||
reply("pong")
|
||||
|
|
@ -581,7 +566,7 @@ class SupervisorTest extends JUnitSuite {
|
|||
}
|
||||
|
||||
class PingPong2Actor extends Actor {
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Ping =>
|
||||
messageLog += "ping"
|
||||
reply("pong")
|
||||
|
|
@ -594,7 +579,7 @@ class SupervisorTest extends JUnitSuite {
|
|||
}
|
||||
|
||||
class PingPong3Actor extends Actor {
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Ping =>
|
||||
messageLog += "ping"
|
||||
reply("pong")
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ class ThreadBasedActorTest extends JUnitSuite {
|
|||
class TestActor extends Actor {
|
||||
dispatcher = Dispatchers.newThreadBasedDispatcher(this)
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "Hello" =>
|
||||
reply("World")
|
||||
case "Failure" =>
|
||||
|
|
@ -25,7 +25,7 @@ class ThreadBasedActorTest extends JUnitSuite {
|
|||
implicit val timeout = 5000L
|
||||
var oneWay = "nada"
|
||||
val actor = new Actor {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "OneWay" => oneWay = "received"
|
||||
}
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ class ThreadBasedActorTest extends JUnitSuite {
|
|||
val result = actor ! "OneWay"
|
||||
Thread.sleep(100)
|
||||
assert("received" === oneWay)
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test def shouldSendReplySync = {
|
||||
|
|
@ -42,7 +42,7 @@ class ThreadBasedActorTest extends JUnitSuite {
|
|||
actor.start
|
||||
val result: String = actor !? "Hello"
|
||||
assert("World" === result)
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test def shouldSendReplyAsync = {
|
||||
|
|
@ -51,7 +51,7 @@ class ThreadBasedActorTest extends JUnitSuite {
|
|||
actor.start
|
||||
val result = actor !! "Hello"
|
||||
assert("World" === result.get.asInstanceOf[String])
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
|
||||
@Test def shouldSendReceiveException = {
|
||||
|
|
@ -65,6 +65,6 @@ class ThreadBasedActorTest extends JUnitSuite {
|
|||
case e =>
|
||||
assert("expected" === e.getMessage())
|
||||
}
|
||||
actor.stop
|
||||
actor.exit
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ import se.scalablesolutions.akka.actor.Actor
|
|||
|
||||
class ThreadBasedDispatcherTest extends JUnitSuite {
|
||||
private var threadingIssueDetected: AtomicBoolean = null
|
||||
val key1 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} }
|
||||
val key2 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} }
|
||||
val key3 = new Actor { def receive: PartialFunction[Any, Unit] = { case _ => {}} }
|
||||
val key1 = new Actor { def receive = { case _ => {}} }
|
||||
val key2 = new Actor { def receive = { case _ => {}} }
|
||||
val key3 = new Actor { def receive = { case _ => {}} }
|
||||
|
||||
class TestMessageHandle(handleLatch: CountDownLatch) extends MessageInvoker {
|
||||
val guardLock: Lock = new ReentrantLock
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ import java.io.IOException
|
|||
* val consumer = AMQP.newConsumer(params, hostname, port, exchange, ExchangeType.Direct, Serializer.ScalaJSON, None, 100)
|
||||
*
|
||||
* consumer ! MessageConsumerListener(queue, routingKey, new Actor() {
|
||||
* def receive: PartialFunction[Any, Unit] = {
|
||||
* def receive = {
|
||||
* case Message(payload, _, _, _, _) => log.debug("Received message: %s", payload)
|
||||
* }
|
||||
* })
|
||||
|
|
@ -208,7 +208,7 @@ object AMQP extends Actor {
|
|||
|
||||
override def shutdown = {
|
||||
connections.values.asScala.foreach(_ ! Stop)
|
||||
stop
|
||||
exit
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -236,7 +236,7 @@ object AMQP extends Actor {
|
|||
channel.basicPublish(exchangeName, routingKey, mandatory, immediate, properties, payload.asInstanceOf[Array[Byte]])
|
||||
case Stop =>
|
||||
disconnect
|
||||
stop
|
||||
exit
|
||||
}
|
||||
|
||||
protected def setupChannel = {
|
||||
|
|
@ -323,7 +323,7 @@ object AMQP extends Actor {
|
|||
case Stop =>
|
||||
listeners.elements.toList.map(_._2).foreach(unregisterListener(_))
|
||||
disconnect
|
||||
stop
|
||||
exit
|
||||
|
||||
case message: Message =>
|
||||
handleIllegalMessage("AMQP.Consumer [" + this + "] can't be used to send messages, ignoring message [" + message + "]")
|
||||
|
|
@ -401,7 +401,7 @@ object AMQP extends Actor {
|
|||
case Some(tag) =>
|
||||
channel.basicCancel(tag)
|
||||
unlink(listener.actor)
|
||||
listener.actor.stop
|
||||
listener.actor.exit
|
||||
log.debug("Message consumer is cancelled and shut down [%s]", listener)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ object ExampleSession {
|
|||
def direct = {
|
||||
val consumer = AMQP.newConsumer(CONFIG, HOSTNAME, PORT, IM, ExchangeType.Direct, None, 100, false, false, Map[String, AnyRef]())
|
||||
consumer ! MessageConsumerListener("@george_bush", "direct", new Actor() {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Message(payload, _, _, _, _) => log.info("@george_bush received message from: %s", new String(payload.asInstanceOf[Array[Byte]]))
|
||||
}
|
||||
})
|
||||
|
|
@ -41,12 +41,12 @@ object ExampleSession {
|
|||
def fanout = {
|
||||
val consumer = AMQP.newConsumer(CONFIG, HOSTNAME, PORT, CHAT, ExchangeType.Fanout, None, 100, false, false, Map[String, AnyRef]())
|
||||
consumer ! MessageConsumerListener("@george_bush", "", new Actor() {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Message(payload, _, _, _, _) => log.info("@george_bush received message from: %s", new String(payload.asInstanceOf[Array[Byte]]))
|
||||
}
|
||||
})
|
||||
consumer ! MessageConsumerListener("@barack_obama", "", new Actor() {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Message(payload, _, _, _, _) => log.info("@barack_obama received message from: %s", new String(payload.asInstanceOf[Array[Byte]]))
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public class InMemNestedStateTest extends TestCase {
|
|||
|
||||
final private ActiveObjectConfigurator conf = new ActiveObjectConfigurator();
|
||||
|
||||
protected void setUp() {
|
||||
public InMemNestedStateTest() {
|
||||
conf.configure(
|
||||
new RestartStrategy(new AllForOne(), 3, 5000),
|
||||
new Component[]{
|
||||
|
|
@ -26,7 +26,7 @@ public class InMemNestedStateTest extends TestCase {
|
|||
new Component(InMemStatefulNested.class, new LifeCycle(new Permanent()), 10000000),
|
||||
new Component(InMemFailer.class, new LifeCycle(new Permanent()), 1000)
|
||||
//new Component("inmem-clasher", InMemClasher.class, InMemClasherImpl.class, new LifeCycle(new Permanent()), 100000)
|
||||
}).inject().supervise();
|
||||
}).supervise();
|
||||
Config.config();
|
||||
InMemStateful stateful = conf.getInstance(InMemStateful.class);
|
||||
stateful.init();
|
||||
|
|
@ -34,10 +34,6 @@ public class InMemNestedStateTest extends TestCase {
|
|||
nested.init();
|
||||
}
|
||||
|
||||
protected void tearDown() {
|
||||
conf.stop();
|
||||
}
|
||||
|
||||
public void testMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess() throws Exception {
|
||||
InMemStateful stateful = conf.getInstance(InMemStateful.class);
|
||||
stateful.setMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init"); // set init state
|
||||
|
|
|
|||
|
|
@ -9,7 +9,9 @@ import junit.framework.TestCase;
|
|||
import se.scalablesolutions.akka.Config;
|
||||
import se.scalablesolutions.akka.config.*;
|
||||
import se.scalablesolutions.akka.config.ActiveObjectConfigurator;
|
||||
|
||||
import static se.scalablesolutions.akka.config.JavaConfig.*;
|
||||
|
||||
import se.scalablesolutions.akka.actor.*;
|
||||
import se.scalablesolutions.akka.Kernel;
|
||||
|
||||
|
|
@ -18,27 +20,23 @@ public class InMemoryStateTest extends TestCase {
|
|||
|
||||
final private ActiveObjectConfigurator conf = new ActiveObjectConfigurator();
|
||||
|
||||
protected void setUp() {
|
||||
public InMemoryStateTest() {
|
||||
Config.config();
|
||||
conf.configure(
|
||||
new RestartStrategy(new AllForOne(), 3, 5000),
|
||||
new Component[]{
|
||||
new Component(InMemStateful.class,
|
||||
new LifeCycle(new Permanent()),
|
||||
//new RestartCallbacks("preRestart", "postRestart")),
|
||||
10000),
|
||||
//new RestartCallbacks("preRestart", "postRestart")),
|
||||
10000),
|
||||
new Component(InMemFailer.class,
|
||||
new LifeCycle(new Permanent()),
|
||||
10000)
|
||||
}).inject().supervise();
|
||||
InMemStateful stateful = conf.getInstance(InMemStateful.class);
|
||||
stateful.init();
|
||||
10000)
|
||||
}).supervise();
|
||||
InMemStateful stateful = conf.getInstance(InMemStateful.class);
|
||||
stateful.init();
|
||||
}
|
||||
|
||||
protected void tearDown() {
|
||||
conf.stop();
|
||||
}
|
||||
|
||||
public void testMapShouldNotRollbackStateForStatefulServerInCaseOfSuccess() {
|
||||
InMemStateful stateful = conf.getInstance(InMemStateful.class);
|
||||
stateful.setMapState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init"); // set init state
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ class CassandraPersistentActor extends Actor {
|
|||
private lazy val vectorState: PersistentVector = PersistentState.newVector(CassandraStorageConfig())
|
||||
private lazy val refState: PersistentRef = PersistentState.newRef(CassandraStorageConfig())
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case GetMapState(key) =>
|
||||
reply(mapState.get(key).get)
|
||||
case GetVectorSize =>
|
||||
|
|
@ -67,7 +67,7 @@ class CassandraPersistentActor extends Actor {
|
|||
|
||||
@serializable class PersistentFailerActor extends Actor {
|
||||
makeTransactionRequired
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case "Failure" =>
|
||||
throw new RuntimeException("expected")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ class BankAccountActor extends Actor {
|
|||
private lazy val accountState: PersistentMap = PersistentState.newMap(MongoStorageConfig())
|
||||
private lazy val txnLog: PersistentVector = PersistentState.newVector(MongoStorageConfig())
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
// check balance
|
||||
case Balance(accountNo) =>
|
||||
txnLog.add("Balance:" + accountNo)
|
||||
|
|
@ -176,7 +176,7 @@ class BankAccountActor extends Actor {
|
|||
txnLog = PersistentState.newVector(MongoStorageConfig())
|
||||
}
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
// check balance
|
||||
case Balance(accountNo) =>
|
||||
txnLog.add("Balance:" + accountNo)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class SimpleService extends Actor {
|
|||
@Produces(Array("text/html"))
|
||||
def count = (this !! Tick).getOrElse(<h1>Error in counter</h1>)
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Tick => if (hasStartedTicking) {
|
||||
val counter = storage.get(KEY).get.asInstanceOf[Integer].intValue
|
||||
storage.put(KEY, new Integer(counter + 1))
|
||||
|
|
@ -62,7 +62,7 @@ class PersistentSimpleService extends Actor {
|
|||
@Produces(Array("text/html"))
|
||||
def count = (this !! Tick).getOrElse(<h1>Error in counter</h1>)
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Tick => if (hasStartedTicking) {
|
||||
val counter = storage.get(KEY).get.asInstanceOf[Integer].intValue
|
||||
storage.put(KEY, new Integer(counter + 1))
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import _root_.net.liftweb.util._
|
|||
import _root_.net.liftweb.http._
|
||||
import _root_.net.liftweb.sitemap._
|
||||
import _root_.net.liftweb.sitemap.Loc._
|
||||
//import _root_.net.liftweb.common._
|
||||
import _root_.net.liftweb.http.auth._
|
||||
import Helpers._
|
||||
|
||||
|
|
@ -15,9 +14,9 @@ import se.scalablesolutions.akka.util.Logging
|
|||
import sample.lift.{PersistentSimpleService, SimpleService}
|
||||
|
||||
/**
|
||||
* A class that's instantiated early and run. It allows the application
|
||||
* to modify lift's environment
|
||||
*/
|
||||
* A class that's instantiated early and run. It allows the application
|
||||
* to modify lift's environment
|
||||
*/
|
||||
class Boot {
|
||||
def boot {
|
||||
// where to search snippet
|
||||
|
|
@ -37,21 +36,17 @@ class Boot {
|
|||
|
||||
LiftRules.passNotFoundToChain = true
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
new SimpleService,
|
||||
LifeCycle(Permanent)) ::
|
||||
Supervise(
|
||||
new PersistentSimpleService,
|
||||
LifeCycle(Permanent)) ::
|
||||
Nil)
|
||||
}
|
||||
}
|
||||
val supervisor = factory.newSupervisor
|
||||
supervisor.startSupervisor
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
new SimpleService,
|
||||
LifeCycle(Permanent)) ::
|
||||
Supervise(
|
||||
new PersistentSimpleService,
|
||||
LifeCycle(Permanent)) ::
|
||||
Nil))
|
||||
factory.newInstance.start
|
||||
|
||||
// Build SiteMap
|
||||
// val entries = Menu(Loc("Home", List("index"), "Home")) :: Nil
|
||||
|
|
|
|||
|
|
@ -18,24 +18,20 @@ import org.atmosphere.util.XSSHtmlFilter
|
|||
import org.atmosphere.cpr.BroadcastFilter
|
||||
|
||||
class Boot {
|
||||
object factory extends SupervisorFactory {
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
new SimpleService,
|
||||
LifeCycle(Permanent)) ::
|
||||
Supervise(
|
||||
new Chat,
|
||||
LifeCycle(Permanent)) ::
|
||||
Supervise(
|
||||
new PersistentSimpleService,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil)
|
||||
}
|
||||
}
|
||||
val supervisor = factory.newSupervisor
|
||||
supervisor.startSupervisor
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
Supervise(
|
||||
new SimpleService,
|
||||
LifeCycle(Permanent)) ::
|
||||
Supervise(
|
||||
new Chat,
|
||||
LifeCycle(Permanent)) ::
|
||||
Supervise(
|
||||
new PersistentSimpleService,
|
||||
LifeCycle(Permanent))
|
||||
:: Nil))
|
||||
factory.newInstance.start
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -58,7 +54,7 @@ class SimpleService extends Actor {
|
|||
@Produces(Array("text/html"))
|
||||
def count = (this !! Tick).getOrElse(<error>Error in counter</error>)
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Tick => if (hasStartedTicking) {
|
||||
val counter = storage.get(KEY).get.asInstanceOf[Integer].intValue
|
||||
storage.put(KEY, new Integer(counter + 1))
|
||||
|
|
@ -91,7 +87,7 @@ class PersistentSimpleService extends Actor {
|
|||
@Produces(Array("text/html"))
|
||||
def count = (this !! Tick).getOrElse(<error>Error in counter</error>)
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Tick => if (hasStartedTicking) {
|
||||
val counter = storage.get(KEY).get.asInstanceOf[Integer].intValue
|
||||
storage.put(KEY, new Integer(counter + 1))
|
||||
|
|
@ -121,7 +117,7 @@ class Chat extends Actor with Logging {
|
|||
s toString
|
||||
}
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Chat(who, what, msg) => {
|
||||
what match {
|
||||
case "login" => reply("System Message__" + who + " has joined.")
|
||||
|
|
|
|||
|
|
@ -11,75 +11,69 @@ import se.scalablesolutions.akka.security.{DigestAuthenticationActor, UserInfo}
|
|||
import se.scalablesolutions.akka.state.TransactionalState
|
||||
|
||||
class Boot {
|
||||
val factory = SupervisorFactory(
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
// Dummy implementations of all authentication actors
|
||||
// see akka.conf to enable one of these for the AkkaSecurityFilterFactory
|
||||
Supervise(
|
||||
new BasicAuthenticationService,
|
||||
LifeCycle(Permanent)) ::
|
||||
/**
|
||||
Supervise(
|
||||
new DigestAuthenticationService,
|
||||
LifeCycle(Permanent)) ::
|
||||
Supervise(
|
||||
new SpnegoAuthenticationService,
|
||||
LifeCycle(Permanent)) ::
|
||||
**/
|
||||
Supervise(
|
||||
new SecureTickActor,
|
||||
LifeCycle(Permanent)):: Nil))
|
||||
|
||||
object factory extends SupervisorFactory {
|
||||
|
||||
override def getSupervisorConfig: SupervisorConfig = {
|
||||
SupervisorConfig(
|
||||
RestartStrategy(OneForOne, 3, 100),
|
||||
// Dummy implementations of all authentication actors
|
||||
// see akka.conf to enable one of these for the AkkaSecurityFilterFactory
|
||||
Supervise(
|
||||
new BasicAuthenticationService,
|
||||
LifeCycle(Permanent)) ::
|
||||
/**
|
||||
Supervise(
|
||||
new DigestAuthenticationService,
|
||||
LifeCycle(Permanent)) ::
|
||||
Supervise(
|
||||
new SpnegoAuthenticationService,
|
||||
LifeCycle(Permanent)) ::
|
||||
**/
|
||||
Supervise(
|
||||
new SecureTickActor,
|
||||
LifeCycle(Permanent)):: Nil)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
val supervisor = factory.newSupervisor
|
||||
supervisor.startSupervisor
|
||||
val supervisor = factory.newInstance
|
||||
supervisor.start
|
||||
}
|
||||
|
||||
/*
|
||||
* In akka.conf you can set the FQN of any AuthenticationActor of your wish, under the property name: akka.rest.authenticator
|
||||
*/
|
||||
class DigestAuthenticationService extends DigestAuthenticationActor {
|
||||
//If you want to have a distributed nonce-map, you can use something like below,
|
||||
//don't forget to configure your standalone Cassandra instance
|
||||
//
|
||||
//makeTransactionRequired
|
||||
//override def mkNonceMap = PersistentState.newMap(CassandraStorageConfig()).asInstanceOf[scala.collection.mutable.Map[String,Long]]
|
||||
//If you want to have a distributed nonce-map, you can use something like below,
|
||||
//don't forget to configure your standalone Cassandra instance
|
||||
//
|
||||
//makeTransactionRequired
|
||||
//override def mkNonceMap = PersistentState.newMap(CassandraStorageConfig()).asInstanceOf[scala.collection.mutable.Map[String,Long]]
|
||||
|
||||
//Use an in-memory nonce-map as default
|
||||
override def mkNonceMap = new scala.collection.mutable.HashMap[String,Long]
|
||||
//Use an in-memory nonce-map as default
|
||||
override def mkNonceMap = new scala.collection.mutable.HashMap[String, Long]
|
||||
|
||||
//Change this to whatever you want
|
||||
override def realm = "test"
|
||||
//Change this to whatever you want
|
||||
override def realm = "test"
|
||||
|
||||
//Dummy method that allows you to log on with whatever username with the password "bar"
|
||||
override def userInfo(username : String) : Option[UserInfo] = Some(UserInfo(username,"bar","ninja" :: "chef" :: Nil))
|
||||
//Dummy method that allows you to log on with whatever username with the password "bar"
|
||||
override def userInfo(username: String): Option[UserInfo] = Some(UserInfo(username, "bar", "ninja" :: "chef" :: Nil))
|
||||
}
|
||||
|
||||
class BasicAuthenticationService extends BasicAuthenticationActor {
|
||||
|
||||
//Change this to whatever you want
|
||||
override def realm = "test"
|
||||
//Change this to whatever you want
|
||||
override def realm = "test"
|
||||
|
||||
//Dummy method that allows you to log on with whatever username
|
||||
def verify(odc : Option[BasicCredentials]) : Option[UserInfo] = odc match {
|
||||
case Some(dc) => userInfo(dc.username)
|
||||
case _ => None
|
||||
}
|
||||
//Dummy method that allows you to log on with whatever username
|
||||
def verify(odc: Option[BasicCredentials]): Option[UserInfo] = odc match {
|
||||
case Some(dc) => userInfo(dc.username)
|
||||
case _ => None
|
||||
}
|
||||
|
||||
//Dummy method that allows you to log on with whatever username with the password "bar"
|
||||
def userInfo(username : String) : Option[UserInfo] = Some(UserInfo(username,"bar","ninja" :: "chef" :: Nil))
|
||||
//Dummy method that allows you to log on with whatever username with the password "bar"
|
||||
def userInfo(username: String): Option[UserInfo] = Some(UserInfo(username, "bar", "ninja" :: "chef" :: Nil))
|
||||
|
||||
}
|
||||
|
||||
class SpnegoAuthenticationService extends SpnegoAuthenticationActor {
|
||||
|
||||
def rolesFor(user: String) = "ninja" :: "chef" :: Nil
|
||||
def rolesFor(user: String) = "ninja" :: "chef" :: Nil
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -87,16 +81,16 @@ class SpnegoAuthenticationService extends SpnegoAuthenticationActor {
|
|||
* a REST Actor with class level paranoia settings to deny all access
|
||||
*
|
||||
* The interesting part is
|
||||
* @RolesAllowed
|
||||
* @PermitAll
|
||||
* @DenyAll
|
||||
* @RolesAllowed
|
||||
* @PermitAll
|
||||
* @DenyAll
|
||||
*/
|
||||
import java.lang.Integer
|
||||
import javax.annotation.security.{RolesAllowed, DenyAll, PermitAll}
|
||||
import javax.ws.rs.{GET, Path, Produces}
|
||||
|
||||
@Path("/secureticker")
|
||||
class SecureTickActor extends Actor with Logging {
|
||||
|
||||
makeTransactionRequired
|
||||
|
||||
case object Tick
|
||||
|
|
@ -131,11 +125,13 @@ class SecureTickActor extends Actor with Logging {
|
|||
def paranoiaTick = tick
|
||||
|
||||
def tick = (this !! Tick) match {
|
||||
case(Some(counter)) => (<success>Tick: {counter}</success>)
|
||||
case (Some(counter)) => (<success>Tick:
|
||||
{counter}
|
||||
</success>)
|
||||
case _ => (<error>Error in counter</error>)
|
||||
}
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Tick => if (hasStartedTicking) {
|
||||
val counter = storage.get(KEY).get.intValue
|
||||
storage.put(KEY, counter + 1)
|
||||
|
|
|
|||
|
|
@ -264,17 +264,18 @@ trait DigestAuthenticationActor extends AuthenticationActor[DigestCredentials] {
|
|||
override def receive = authenticate orElse invalidateNonces
|
||||
|
||||
override def unauthorized: Response = {
|
||||
val nonce = randomString(64);
|
||||
val nonce = randomString(64)
|
||||
nonceMap.put(nonce, System.currentTimeMillis)
|
||||
unauthorized(nonce, "auth", randomString(64))
|
||||
}
|
||||
|
||||
def unauthorized(nonce: String, qop: String, opaque: String): Response = {
|
||||
Response.status(401).header("WWW-Authenticate",
|
||||
Response.status(401).header(
|
||||
"WWW-Authenticate",
|
||||
"Digest realm=\"" + realm + "\", " +
|
||||
"qop=\"" + qop + "\", " +
|
||||
"nonce=\"" + nonce + "\", " +
|
||||
"opaque=\"" + opaque + "\"").build
|
||||
"qop=\"" + qop + "\", " +
|
||||
"nonce=\"" + nonce + "\", " +
|
||||
"opaque=\"" + opaque + "\"").build
|
||||
}
|
||||
|
||||
//Tests wether the specified credentials are valid
|
||||
|
|
@ -284,9 +285,10 @@ trait DigestAuthenticationActor extends AuthenticationActor[DigestCredentials] {
|
|||
val ha1 = h(auth.userName + ":" + auth.realm + ":" + user.password)
|
||||
val ha2 = h(auth.method + ":" + auth.uri)
|
||||
|
||||
val response = h(ha1 + ":" + auth.nonce + ":" +
|
||||
auth.nc + ":" + auth.cnonce + ":" +
|
||||
auth.qop + ":" + ha2)
|
||||
val response = h(
|
||||
ha1 + ":" + auth.nonce + ":" +
|
||||
auth.nc + ":" + auth.cnonce + ":" +
|
||||
auth.qop + ":" + ha2)
|
||||
|
||||
(response == auth.response) && (nonceMap.getOrElse(auth.nonce, -1) != -1)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ object ActiveObject {
|
|||
|
||||
|
||||
private[akka] def supervise(restartStrategy: RestartStrategy, components: List[Supervise]): Supervisor = {
|
||||
object factory extends SupervisorFactory {
|
||||
val factory = SupervisorFactory {
|
||||
override def getSupervisorConfig = SupervisorConfig(restartStrategy, components)
|
||||
}
|
||||
val supervisor = factory.newSupervisor
|
||||
|
|
@ -333,7 +333,7 @@ private[akka] class Dispatcher(val callbacks: Option[RestartCallbacks]) extends
|
|||
//if (initTxState.isDefined) initTxState.get.setAccessible(true)
|
||||
}
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Invocation(joinPoint, isOneWay, _) =>
|
||||
if (Actor.SERIALIZE_MESSAGES) serializeArguments(joinPoint)
|
||||
if (isOneWay) joinPoint.proceed
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ trait Actor extends Logging with TransactionManagement {
|
|||
* <p/>
|
||||
* Example code:
|
||||
* <pre>
|
||||
* def receive: PartialFunction[Any, Unit] = {
|
||||
* def receive = {
|
||||
* case Ping =>
|
||||
* println("got a ping")
|
||||
* reply("pong")
|
||||
|
|
@ -171,7 +171,7 @@ trait Actor extends Logging with TransactionManagement {
|
|||
* }
|
||||
* </pre>
|
||||
*/
|
||||
protected def receive: PartialFunction[Any, Unit]
|
||||
protected def receive
|
||||
|
||||
/**
|
||||
* User overridable callback/setting.
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ case class SchedulerException(msg: String, e: Throwable) extends RuntimeExceptio
|
|||
class ScheduleActor(val receiver: Actor, val future: ScheduledFuture[AnyRef]) extends Actor with Logging {
|
||||
lifeCycleConfig = Some(LifeCycle(Permanent))
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case UnSchedule =>
|
||||
Scheduler.stopSupervising(this)
|
||||
future.cancel(true)
|
||||
|
|
@ -77,7 +77,7 @@ object Scheduler extends Actor {
|
|||
service.shutdown
|
||||
}
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case _ => {} // ignore all messages
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ class Supervisor private[akka] (handler: FaultHandlingStrategy) extends Actor wi
|
|||
|
||||
def stopSupervisor = this ! StopSupervisor
|
||||
|
||||
protected def receive: PartialFunction[Any, Unit] = {
|
||||
protected def receive = {
|
||||
case StartSupervisor =>
|
||||
linkedActors.toArray.toList.asInstanceOf[List[Actor]].foreach { actor => actor.start; log.info("Starting actor: %s", actor) }
|
||||
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@
|
|||
<p/>
|
||||
Example code:
|
||||
<pre>
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Ping =>
|
||||
println("got a ping")
|
||||
reply("pong")
|
||||
|
|
|
|||
|
|
@ -287,7 +287,7 @@
|
|||
<p/>
|
||||
Example code:
|
||||
<pre>
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Ping =>
|
||||
println("got a ping")
|
||||
reply("pong")
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@
|
|||
<p/>
|
||||
Example code:
|
||||
<pre>
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Ping =>
|
||||
println("got a ping")
|
||||
reply("pong")
|
||||
|
|
|
|||
|
|
@ -311,7 +311,7 @@
|
|||
<p/>
|
||||
Example code:
|
||||
<pre>
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Ping =>
|
||||
println("got a ping")
|
||||
reply("pong")
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ import java.io.IOException
|
|||
* val consumer = AMQP.newConsumer(params, hostname, port, exchange, ExchangeType.Direct, Serializer.ScalaJSON, None, 100)
|
||||
*
|
||||
* consumer ! MessageConsumerListener(queue, routingKey, new Actor() {
|
||||
* def receive: PartialFunction[Any, Unit] = {
|
||||
* def receive = {
|
||||
* case Message(payload, _, _, _, _) => log.debug("Received message: %s", payload)
|
||||
* }
|
||||
* })
|
||||
|
|
@ -209,7 +209,7 @@ object AMQP extends Actor {
|
|||
|
||||
log.info("AMQP.Producer [%s] is started", toString)
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case message @ Message(payload, routingKey, mandatory, immediate, properties) =>
|
||||
log.debug("Sending message [%s]", message)
|
||||
channel.basicPublish(exchangeName, routingKey, mandatory, immediate, properties, serializer.out(payload))
|
||||
|
|
@ -312,7 +312,7 @@ object AMQP extends Actor {
|
|||
listener.tag = Some(listenerTag)
|
||||
}
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case listener: MessageConsumerListener =>
|
||||
startLink(listener.actor)
|
||||
listeners.put(listener, listener)
|
||||
|
|
@ -425,7 +425,7 @@ object AMQP extends Actor {
|
|||
override def postRestart(reason: AnyRef, config: Option[AnyRef]) = reconnect(initReconnectDelay)
|
||||
}
|
||||
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case _ => {} // ignore all messages
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ object ExampleSession {
|
|||
def direct = {
|
||||
val consumer = AMQP.newConsumer(CONFIG, HOSTNAME, PORT, IM, ExchangeType.Direct, SERIALIZER, None, 100, false, false, Map[String, AnyRef]())
|
||||
consumer ! MessageConsumerListener("@george_bush", "direct", new Actor() {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Message(payload, _, _, _, _) => log.info("@george_bush received message from: %s", payload)
|
||||
}
|
||||
})
|
||||
|
|
@ -51,12 +51,12 @@ object ExampleSession {
|
|||
def fanout = {
|
||||
val consumer = AMQP.newConsumer(CONFIG, HOSTNAME, PORT, CHAT, ExchangeType.Fanout, SERIALIZER, None, 100, false, false, Map[String, AnyRef]())
|
||||
consumer ! MessageConsumerListener("@george_bush", "", new Actor() {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Message(payload, _, _, _, _) => log.info("@george_bush received message from: %s", payload)
|
||||
}
|
||||
})
|
||||
consumer ! MessageConsumerListener("@barack_obama", "", new Actor() {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Message(payload, _, _, _, _) => log.info("@barack_obama received message from: %s", payload)
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
val consumer = AMQP.newConsumer(params, hostname, port, exchange, ExchangeType.Direct, Serializer.ScalaJSON, None, 100)
|
||||
|
||||
consumer ! MessageConsumerListener(queue, routingKey, new Actor() {
|
||||
def receive: PartialFunction[Any, Unit] = {
|
||||
def receive = {
|
||||
case Message(payload, _, _, _, _) => log.debug("Received message: %s", payload)
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ trait AuthenticationActor[C <: Credentials] extends Actor with Logging
|
|||
}
|
||||
}
|
||||
|
||||
override def receive: PartialFunction[Any, Unit] = authenticate
|
||||
def receive = authenticate
|
||||
|
||||
//returns the string value of the "Authorization"-header of the request
|
||||
def auth(r : Req) = r.getHeaderValue("Authorization")
|
||||
|
|
@ -284,7 +284,7 @@ trait DigestAuthenticationActor extends AuthenticationActor[DigestCredentials]
|
|||
Scheduler.schedule(this, InvalidateNonces, noncePurgeInterval, noncePurgeInterval, TimeUnit.MILLISECONDS )
|
||||
|
||||
//authenticate or invalidate nonces
|
||||
override def receive: PartialFunction[Any, Unit] = authenticate orElse invalidateNonces
|
||||
def receive = authenticate orElse invalidateNonces
|
||||
|
||||
override def unauthorized : Response =
|
||||
{
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@
|
|||
<b>receive</b>..<a name="receive"></a>
|
||||
</td>
|
||||
<td class="signature">
|
||||
<code class="signature">override def receive</code>
|
||||
<code class="signature">def receive</code>
|
||||
|
||||
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -251,7 +251,7 @@
|
|||
<b>receive</b>..<a name="receive"></a>
|
||||
</td>
|
||||
<td class="signature">
|
||||
<code class="signature">override def receive</code>
|
||||
<code class="signature">def receive</code>
|
||||
|
||||
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -321,7 +321,7 @@
|
|||
<b>receive</b>..<a name="receive"></a>
|
||||
</td>
|
||||
<td class="signature">
|
||||
<code class="signature">override def receive</code>
|
||||
<code class="signature">def receive</code>
|
||||
|
||||
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -276,7 +276,7 @@
|
|||
<b>receive</b>..<a name="receive"></a>
|
||||
</td>
|
||||
<td class="signature">
|
||||
<code class="signature">override def receive</code>
|
||||
<code class="signature">def receive</code>
|
||||
|
||||
|
||||
</td>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue