fixed merging

This commit is contained in:
Jonas Boner 2009-05-09 20:41:52 +02:00
commit d4eb763cd4
44 changed files with 2059 additions and 263 deletions

View file

@ -1,26 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Scala" name="Scala">
<configuration />
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<module relativePaths="true" MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<exclude-output />
<content url="file://$MODULE_DIR$" />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="api-java" />
<orderEntry type="module" module-name="util-java" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$MODULE_DIR$/../../../bin/scala-2.7.3.final" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>

577
akka.ipr
View file

@ -140,7 +140,6 @@
<option name="MAXIMUM_HEAP_SIZE" value="128" />
</component>
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false">
<file url="file://$PROJECT_DIR$/api-java/src/main/java/se/scalablesolutions/akka/api/ActiveObjectGuiceConfigurator.java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java" charset="windows-1252" />
<file url="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/PersistentStateTest.java" charset="windows-1252" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/Kernel.scala" charset="UTF-8" />
@ -155,18 +154,44 @@
<files>
<file url="file://$PROJECT_DIR$/db/src/main/scala/Db.scala" />
<file url="file://$PROJECT_DIR$/db/src/test/scala/DbReplicationSpecs.scala" />
<file url="file://$PROJECT_DIR$/supervisor/sample.scala" />
<file url="file://$PROJECT_DIR$/supervisor/src/main/scala/GenericServer.scala" />
<file url="file://$PROJECT_DIR$/supervisor/src/main/scala/Helpers.scala" />
<file url="file://$PROJECT_DIR$/supervisor/src/main/scala/Supervisor.scala" />
<file url="file://$PROJECT_DIR$/supervisor/test-code/test/scala/GenericServerContainerSuite.scala" />
<file url="file://$PROJECT_DIR$/supervisor/test-code/test/scala/GenericServerSuite.scala" />
<file url="file://$PROJECT_DIR$/supervisor/test-code/test/scala/Messages.scala" />
<file url="file://$PROJECT_DIR$/supervisor/test-code/test/scala/SupervisorStateSuite.scala" />
<file url="file://$PROJECT_DIR$/supervisor/test-code/test/scala/SupervisorSuite.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_ActiveObject.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_ActiveObjectGuiceConfigurator.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_AkkaComponentProvider.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_Boot.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_CassandraNode.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_Configuration.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_DataFlowVariable.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_ErrRef.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_GenericServer.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_HashCode.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_Helpers.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_Kernel.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_Logging.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_Serializer.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_State.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_Supervisor.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_Transaction.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_camel_$_ActiveObjectComponent.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_camel_$_ActiveObjectConsumer.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_camel_$_ActiveObjectEndpoint.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_camel_$_ActiveObjectProducer.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_collection_$_HashTrie.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_main_$_scala_$_collection_$_Vector.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_test_$_scala_$_AllSuite.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_test_$_scala_$_CamelSpec.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_test_$_scala_$_GenericServerContainerSuite.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_test_$_scala_$_GenericServerSpec.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_test_$_scala_$_Messages.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_test_$_scala_$_SupervisorSpec.scala" />
<file url="file://$PROJECT_DIR$/kernel/.manager/_$_Users_$_jboner_$_src_$_scala_$_akka_$_kernel_$_src_$_test_$_scala_$_SupervisorStateSpec.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectComponent.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectConsumer.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectEndpoint.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectProducer.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/test/scala/CamelSpec.scala" />
</files>
</module>
<module name="kernel">
<module name="akka-kernel">
<files>
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/AkkaComponentProvider.scala" />
@ -180,14 +205,23 @@
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/Helpers.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/Kernel.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/Logging.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/NetCat.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/Serializer.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/State.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/Supervisor.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/Transaction.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectComponent.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectConsumer.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectEndpoint.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectProducer.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/MessageDriven.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/camel/SupervisorAwareCamelContext.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/collection/HashTrie.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/collection/Vector.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/main/scala/config/Config.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/test/scala/AllSuite.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/test/scala/CamelSpec.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/test/scala/GenericServerContainerSuite.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/test/scala/GenericServerSpec.scala" />
<file url="file://$PROJECT_DIR$/kernel/src/test/scala/Messages.scala" />
@ -216,7 +250,7 @@
<option name="DEBUGGING_INFO" value="true" />
<option name="GENERATE_NO_WARNINGS" value="false" />
<option name="DEPRECATION" value="true" />
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
<option name="ADDITIONAL_OPTIONS_STRING" value="-target 1.5" />
<option name="MAXIMUM_HEAP_SIZE" value="128" />
</component>
<component name="JavadocGenerationManager">
@ -244,6 +278,13 @@
<option name="IS_EMACS_ERRORS_MODE" value="true" />
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
</component>
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
@ -375,9 +416,9 @@
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/akka.iml" filepath="$PROJECT_DIR$/akka.iml" />
<module fileurl="file://$PROJECT_DIR$/api-java/api-java.iml" filepath="$PROJECT_DIR$/api-java/api-java.iml" />
<module fileurl="file://$PROJECT_DIR$/core/core.iml" filepath="$PROJECT_DIR$/core/core.iml" />
<module fileurl="file://$PROJECT_DIR$/util-java/util-java.iml" filepath="$PROJECT_DIR$/util-java/util-java.iml" />
<module fileurl="file://$PROJECT_DIR$/api-java/akka-api-java.iml" filepath="$PROJECT_DIR$/api-java/akka-api-java.iml" />
<module fileurl="file://$PROJECT_DIR$/kernel/akka-kernel.iml" filepath="$PROJECT_DIR$/kernel/akka-kernel.iml" />
<module fileurl="file://$PROJECT_DIR$/util-java/akka-util-java.iml" filepath="$PROJECT_DIR$/util-java/akka-util-java.iml" />
</modules>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
@ -405,6 +446,510 @@
<mapping directory="" vcs="Git" />
</component>
<component name="WebServicesPlugin" addRequiredLibraries="true" />
<component name="libraryTable">
<library name="Maven: org.scala-lang:scala-library:2.7.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.7.3/scala-library-2.7.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.7.3/scala-library-2.7.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-lang/scala-library/2.7.3/scala-library-2.7.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: net.lag:configgy:1.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/lag/configgy/1.2/configgy-1.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/lag/configgy/1.2/configgy-1.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/lag/configgy/1.2/configgy-1.2-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.guiceyfruit:guice-core:2.0-SNAPSHOT">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-core/2.0-SNAPSHOT/guice-core-2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-core/2.0-SNAPSHOT/guice-core-2.0-SNAPSHOT-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-core/2.0-SNAPSHOT/guice-core-2.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.google.code.google-collections:google-collect:snapshot-20080530">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/google-collections/google-collect/snapshot-20080530/google-collect-snapshot-20080530.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/google-collections/google-collect/snapshot-20080530/google-collect-snapshot-20080530-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/google-collections/google-collect/snapshot-20080530/google-collect-snapshot-20080530-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: cglib:cglib:2.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/cglib/cglib/2.2/cglib-2.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/cglib/cglib/2.2/cglib-2.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/cglib/cglib/2.2/cglib-2.2-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: asm:asm:3.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/asm/asm/3.1/asm-3.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/asm/asm/3.1/asm-3.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/asm/asm/3.1/asm-3.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: aopalliance:aopalliance:1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.guiceyfruit:guice-jsr250:2.0-SNAPSHOT">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-jsr250/2.0-SNAPSHOT/guice-jsr250-2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-jsr250/2.0-SNAPSHOT/guice-jsr250-2.0-SNAPSHOT-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/guiceyfruit/guice-jsr250/2.0-SNAPSHOT/guice-jsr250-2.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: javax.annotation:jsr250-api:1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/annotation/jsr250-api/1.0/jsr250-api-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/annotation/jsr250-api/1.0/jsr250-api-1.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.grizzly:grizzly-servlet-webserver:1.8.6.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-servlet-webserver/1.8.6.3/grizzly-servlet-webserver-1.8.6.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-servlet-webserver/1.8.6.3/grizzly-servlet-webserver-1.8.6.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-servlet-webserver/1.8.6.3/grizzly-servlet-webserver-1.8.6.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.grizzly:grizzly-http:1.8.6.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-http/1.8.6.3/grizzly-http-1.8.6.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-http/1.8.6.3/grizzly-http-1.8.6.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-http/1.8.6.3/grizzly-http-1.8.6.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.grizzly:grizzly-framework:1.8.6.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-framework/1.8.6.3/grizzly-framework-1.8.6.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-framework/1.8.6.3/grizzly-framework-1.8.6.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-framework/1.8.6.3/grizzly-framework-1.8.6.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.grizzly:grizzly-http-utils:1.8.6.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-http-utils/1.8.6.3/grizzly-http-utils-1.8.6.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-http-utils/1.8.6.3/grizzly-http-utils-1.8.6.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-http-utils/1.8.6.3/grizzly-http-utils-1.8.6.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.grizzly:grizzly-rcm:1.8.6.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-rcm/1.8.6.3/grizzly-rcm-1.8.6.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-rcm/1.8.6.3/grizzly-rcm-1.8.6.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-rcm/1.8.6.3/grizzly-rcm-1.8.6.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.grizzly:grizzly-portunif:1.8.6.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-portunif/1.8.6.3/grizzly-portunif-1.8.6.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-portunif/1.8.6.3/grizzly-portunif-1.8.6.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-portunif/1.8.6.3/grizzly-portunif-1.8.6.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.grizzly:grizzly-http-servlet:1.8.6.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-http-servlet/1.8.6.3/grizzly-http-servlet-1.8.6.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-http-servlet/1.8.6.3/grizzly-http-servlet-1.8.6.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/grizzly/grizzly-http-servlet/1.8.6.3/grizzly-http-servlet-1.8.6.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: javax.servlet:servlet-api:2.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.jersey:jersey-server:1.0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.1/jersey-server-1.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.1/jersey-server-1.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.1/jersey-server-1.0.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.jersey:jersey-core:1.0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.0.1/jersey-core-1.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.0.1/jersey-core-1.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.0.1/jersey-core-1.0.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: javax.ws.rs:jsr311-api:1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/ws/rs/jsr311-api/1.0/jsr311-api-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/ws/rs/jsr311-api/1.0/jsr311-api-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/ws/rs/jsr311-api/1.0/jsr311-api-1.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.jersey:jersey-json:1.0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-json/1.0.1/jersey-json-1.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-json/1.0.1/jersey-json-1.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-json/1.0.1/jersey-json-1.0.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.codehaus.jettison:jettison:1.0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jettison/jettison/1.0.1/jettison-1.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jettison/jettison/1.0.1/jettison-1.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/codehaus/jettison/jettison/1.0.1/jettison-1.0.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: stax:stax-api:1.0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/stax/stax-api/1.0.1/stax-api-1.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/stax/stax-api/1.0.1/stax-api-1.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/stax/stax-api/1.0.1/stax-api-1.0.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.xml.bind:jaxb-impl:2.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/xml/bind/jaxb-impl/2.1/jaxb-impl-2.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/xml/bind/jaxb-impl/2.1/jaxb-impl-2.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/xml/bind/jaxb-impl/2.1/jaxb-impl-2.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: javax.xml.bind:jaxb-api:2.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: javax.xml.stream:stax-api:1.0-2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: javax.activation:activation:1.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1/activation-1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1/activation-1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/javax/activation/activation/1.1/activation-1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.sun.jersey:jersey-atom:1.0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-atom/1.0.1/jersey-atom-1.0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-atom/1.0.1/jersey-atom-1.0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-atom/1.0.1/jersey-atom-1.0.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: rome:rome:0.9">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/rome/rome/0.9/rome-0.9.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/rome/rome/0.9/rome-0.9-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/rome/rome/0.9/rome-0.9-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: jdom:jdom:1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/jdom/jdom/1.0/jdom-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/jdom/jdom/1.0/jdom-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/jdom/jdom/1.0/jdom-1.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.jboss.netty:netty:3.1.0.BETA2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.1.0.BETA2/netty-3.1.0.BETA2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.1.0.BETA2/netty-3.1.0.BETA2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/jboss/netty/netty/3.1.0.BETA2/netty-3.1.0.BETA2-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.apache.cassandra:cassandra:0.3.0-dev">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cassandra/cassandra/0.3.0-dev/cassandra-0.3.0-dev.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cassandra/cassandra/0.3.0-dev/cassandra-0.3.0-dev-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/cassandra/cassandra/0.3.0-dev/cassandra-0.3.0-dev-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.facebook:thrift:1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/facebook/thrift/1.0/thrift-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/facebook/thrift/1.0/thrift-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/facebook/thrift/1.0/thrift-1.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.facebook:fb303:1.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/facebook/fb303/1.0/fb303-1.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/facebook/fb303/1.0/fb303-1.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/facebook/fb303/1.0/fb303-1.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.apache.camel:camel-core:2.0-SNAPSHOT">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/apache/camel/camel-core/2.0-SNAPSHOT/camel-core-2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
<library name="Maven: commons-logging:commons-logging-api:1.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.assembla.scala.mina:mina-core:2.0.0-M2-SNAPSHOT">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/assembla/scala/mina/mina-core/2.0.0-M2-SNAPSHOT/mina-core-2.0.0-M2-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/assembla/scala/mina/mina-core/2.0.0-M2-SNAPSHOT/mina-core-2.0.0-M2-SNAPSHOT-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/assembla/scala/mina/mina-core/2.0.0-M2-SNAPSHOT/mina-core-2.0.0-M2-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.slf4j:slf4j-api:1.4.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.4.3/slf4j-api-1.4.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.4.3/slf4j-api-1.4.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.4.3/slf4j-api-1.4.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: com.assembla.scala.mina:mina-integration-scala:2.0.0-M2-SNAPSHOT">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/assembla/scala/mina/mina-integration-scala/2.0.0-M2-SNAPSHOT/mina-integration-scala-2.0.0-M2-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/assembla/scala/mina/mina-integration-scala/2.0.0-M2-SNAPSHOT/mina-integration-scala-2.0.0-M2-SNAPSHOT-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/assembla/scala/mina/mina-integration-scala/2.0.0-M2-SNAPSHOT/mina-integration-scala-2.0.0-M2-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.slf4j:slf4j-log4j12:1.4.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-log4j12/1.4.3/slf4j-log4j12-1.4.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-log4j12/1.4.3/slf4j-log4j12-1.4.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-log4j12/1.4.3/slf4j-log4j12-1.4.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: log4j:log4j:1.2.13">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/log4j/log4j/1.2.13/log4j-1.2.13.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/log4j/log4j/1.2.13/log4j-1.2.13-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/log4j/log4j/1.2.13/log4j-1.2.13-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.scala-tools.testing:scalatest:0.9.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/scala-tools/testing/scalatest/0.9.5/scalatest-0.9.5-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: junit:junit:4.5">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.5/junit-4.5.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.5/junit-4.5-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.5/junit-4.5-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.jmock:jmock:2.4.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/jmock/jmock/2.4.0/jmock-2.4.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.hamcrest:hamcrest-core:1.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Maven: org.hamcrest:hamcrest-library:1.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1-sources.jar!/" />
</SOURCES>
</library>
</component>
<UsedPathMacros>
<macro name="MAVEN_REPOSITORY" description="Maven Local Repostiry" />
</UsedPathMacros>

435
akka.iws
View file

@ -2,8 +2,8 @@
<project relativePaths="false" version="4">
<component name="ChangeListManager">
<list default="true" name="Default" comment="" />
<ignored path=".idea/workspace.xml" />
<ignored path="akka.iws" />
<ignored path=".idea/workspace.xml" />
</component>
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
<component name="Commander">
@ -76,10 +76,82 @@
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="GenericServer.scala" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="ActiveObject.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="35" column="6" selection-start="1232" selection-end="1232" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GenericServer.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/GenericServer.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="22" selection-start="449" selection-end="449" vertical-scroll-proportion="0.18025751">
<state line="14" column="11" selection-start="371" selection-end="371" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ActiveObjectGuiceConfiguratorForJava.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="95" column="1" selection-start="4052" selection-end="4052" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ActiveObjectGuiceConfigurator.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="118" column="40" selection-start="5650" selection-end="5650" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SupervisorSpec.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/SupervisorSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="29" selection-start="528" selection-end="528" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CamelSpec.scala" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/CamelSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="92" column="0" selection-start="2771" selection-end="2771" vertical-scroll-proportion="0.3184584">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GenericServerContainerSuite.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/GenericServerContainerSuite.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="6" selection-start="352" selection-end="352" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SupervisorAwareCamelContext.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/camel/SupervisorAwareCamelContext.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="0" selection-start="248" selection-end="248" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Vector.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/collection/Vector.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="298" column="1" selection-start="8660" selection-end="8660" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -95,6 +167,7 @@
<component name="MavenImportPreferences">
<option name="generalSettings">
<MavenGeneralSettings>
<option name="printErrorStackTraces" value="true" />
<option name="workOffline" value="true" />
</MavenGeneralSettings>
</option>
@ -133,10 +206,158 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="scala" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="scala" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="scala" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="config" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="scala" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="camel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</component>
<component name="ProjectReloadState">
@ -157,19 +378,19 @@
</navigator>
</component>
<component name="PropertiesComponent">
<property name="project.structure.proportion" value="0.15" />
<property name="GoToClass.includeJavaFiles" value="false" />
<property name="project.structure.proportion" value="0.15" />
<property name="MemberChooser.copyJavadoc" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder2" value="2" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder2" value="2" />
<property name="options.splitter.main.proportions" value="0.3" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder2" value="2" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth3" value="965" />
<property name="GoToFile.includeJavaFiles" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth0" value="269" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth2" value="286" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth2" value="293" />
<property name="GoToClass.includeLibraries" value="false" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="GoToClass.includeLibraries" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth2" value="293" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder0" value="0" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder3" value="3" />
<property name="MemberChooser.showClasses" value="true" />
@ -181,12 +402,12 @@
<property name="RunManagerConfig.showSettingsBeforeRunnig" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder0" value="0" />
<property name="project.structure.last.edited" value="Modules" />
<property name="options.searchVisible" value="true" />
<property name="MemberChooser.sorted" value="false" />
<property name="options.searchVisible" value="true" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder1" value="1" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth1" value="301" />
<property name="dynamic.classpath" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth3" value="972" />
<property name="dynamic.classpath" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth1" value="308" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder1" value="1" />
</component>
@ -195,7 +416,7 @@
<recent name="se.scalablesolutions.akka.api" />
</key>
</component>
<component name="RunManager" selected="Scala Console.Scala Console">
<component name="RunManager" selected="JUnit.CamelSpec">
<tempConfiguration default="false" name="Scala Console" type="ScalaScriptConsoleRunConfiguration" factoryName="Scala Console">
<module name="" />
<setting name="vmparams" value="" />
@ -298,7 +519,7 @@
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="api-java" />
<module name="" />
<envs />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
@ -306,9 +527,34 @@
<option name="Make" value="true" />
</method>
</configuration>
<list size="2">
<configuration default="false" name="CamelSpec" type="JUnit" factoryName="JUnit" enabled="false" merge="false" sample_coverage="true" runner="emma">
<module name="akka-kernel" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="se.scalablesolutions.akka.kernel.CamelSpec" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="ADDITIONAL_CLASS_PATH" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method>
<option name="Make" value="true" />
</method>
</configuration>
<list size="3">
<item index="0" class="java.lang.String" itemvalue="Scala Console.Scala Console" />
<item index="1" class="java.lang.String" itemvalue="Application.Kernel" />
<item index="2" class="java.lang.String" itemvalue="JUnit.CamelSpec" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@ -354,25 +600,25 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="0" y="22" width="1436" height="878" extended-state="0" />
<editor active="false" />
<frame x="4" y="22" width="1436" height="878" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Web Preview" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32976654" sideWeight="0.5" order="13" side_tool="false" />
<window_info id="Dataflow to this" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="14" side_tool="false" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="5" side_tool="false" />
<window_info id="Data Sources" 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" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3294881" sideWeight="0.68877554" order="5" side_tool="false" />
<window_info id="Data Sources" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3294881" sideWeight="0.6875" order="3" side_tool="false" />
<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="4" side_tool="false" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32879376" sideWeight="0.5" order="6" side_tool="false" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3258832" sideWeight="0.67417216" order="1" side_tool="false" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24873829" sideWeight="0.68877554" order="1" side_tool="false" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32879376" sideWeight="0.5" order="1" side_tool="false" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24945295" sideWeight="0.84143966" order="0" side_tool="false" />
<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" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3165563" sideWeight="0.5" order="11" side_tool="false" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.30229592" sideWeight="0.5" order="11" side_tool="false" />
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="12" side_tool="false" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24986653" sideWeight="0.75" order="1" side_tool="false" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24945927" sideWeight="0.6875" order="1" side_tool="false" />
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32879376" sideWeight="0.5" order="7" side_tool="false" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="true" internal_type="DOCKED" type="FLOATING" visible="false" weight="0.47276264" sideWeight="0.5" order="2" side_tool="false" x="16" y="58" width="1798" height="1028" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="true" internal_type="DOCKED" type="FLOATING" visible="false" weight="0.47276264" sideWeight="0.5" order="2" side_tool="false" x="16" y="22" width="1798" height="878" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39989322" sideWeight="0.75" order="0" side_tool="false" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39980546" sideWeight="0.5" order="3" side_tool="false" />
<window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" />
@ -424,76 +670,6 @@
</buildFile>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/collection/HashTrie.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="44" column="12" selection-start="1825" selection-end="1825" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/collection/Vector.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="298" column="1" selection-start="8660" selection-end="8660" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/DataFlowVariable.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="1" selection-start="938" selection-end="938" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/PersistentStateTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="48" selection-start="186" selection-end="186" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/lib/cassandra.jar!/org/apache/cassandra/config/DatabaseDescriptor.class">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/NetCat.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="47" column="1" selection-start="1796" selection-end="1796" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/ActiveObjectGuiceConfiguratorTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="8" column="0" selection-start="195" selection-end="195" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="0" selection-start="195" selection-end="250" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/storage-conf.xml">
<provider selected="true" editor-type-id="text-editor">
<state line="36" column="49" selection-start="1742" selection-end="1742" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/bin/start-akka-server.sh">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/State.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="26" column="69" selection-start="581" selection-end="581" vertical-scroll-proportion="0.0">
@ -515,25 +691,86 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/SupervisorSpec.scala">
<entry file="file://$PROJECT_DIR$/util-java/src/main/java/se/scalablesolutions/akka/annotation/immutable.java">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="33" selection-start="49" selection-end="49" vertical-scroll-proportion="0.0">
<state line="10" column="18" selection-start="210" selection-end="210" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/api-java/src/main/java/se/scalablesolutions/akka/api/ActiveObjectGuiceConfigurator.java">
<entry file="file://$PROJECT_DIR$/kernel/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state line="59" column="15" selection-start="2579" selection-end="2579" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
<state line="73" column="4" selection-start="2212" selection-end="2212" vertical-scroll-proportion="0.08803301">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pom.xml">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/SupervisorSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="29" selection-start="528" selection-end="528" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/collection/Vector.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="298" column="1" selection-start="8660" selection-end="8660" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="95" column="1" selection-start="4052" selection-end="4052" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="118" column="40" selection-start="5650" selection-end="5650" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="35" column="6" selection-start="1232" selection-end="1232" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/GenericServer.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="22" selection-start="449" selection-end="449" vertical-scroll-proportion="0.18025751">
<state line="14" column="11" selection-start="371" selection-end="371" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/GenericServerContainerSuite.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="6" selection-start="352" selection-end="352" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/camel/SupervisorAwareCamelContext.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="0" selection-start="248" selection-end="248" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/CamelSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="92" column="0" selection-start="2771" selection-end="2771" vertical-scroll-proportion="0.3184584">
<folding />
</state>
</provider>

View file

@ -1,16 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="src" path="java"/>
<classpathentry kind="src" path="src/test/java"/>
<classpathentry kind="lib" path="dist/api-java.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/activation-1.1.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/akka-util-java.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/antlr-3.1.3.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/aopalliance-1.0.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/asm-3.1.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/asm-all-2.2.1.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/cassandra-1.0.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/camel-core-2.0-SNAPSHOT.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/cassandra-0.3.0-dev.jar" sourcepath="/Users/jboner/src/java/cassandra/src"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/catalina-ant.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/cglib-2.2.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/colt-1.2.0.jar"/>
@ -51,8 +50,8 @@
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/JSAP-2.1.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/jsr250-api-1.0.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/jsr311-api-1.0.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/junit-3.8.2.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/junit-4.5.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/junit4runner-1.0.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/libfb303.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/libthrift.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/log4j-1.2.15.jar"/>
@ -63,9 +62,7 @@
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/protobuf-java-2.0.3.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/rome-0.9.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/scala-library-2.7.3.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/scala-library-2.7.3.zip"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/scalatest-0.9.5.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/scalatest-0.9.5.zip"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/servlet-api-2.5.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/slf4j-api-1.4.3.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/slf4j-log4j12-1.4.3.jar"/>
@ -76,6 +73,7 @@
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/voldemort-contrib-0.4a.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/xerces.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/zookeeper-3.1.0.jar"/>
<classpathentry kind="lib" path="/akka-kernel/build"/>
<classpathentry kind="lib" path="/akka-kernel/target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="build/test/classes"/>
</classpath>

View file

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="akka-kernel" exported="" />
<orderEntry type="module" module-name="akka-util-java" exported="" />
<orderEntry type="library" exported="" name="Maven: org.guiceyfruit:guice-core:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: com.google.code.google-collections:google-collect:snapshot-20080530" level="project" />
<orderEntry type="library" exported="" name="Maven: cglib:cglib:2.2" level="project" />
<orderEntry type="library" exported="" name="Maven: asm:asm:3.1" level="project" />
<orderEntry type="library" exported="" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.guiceyfruit:guice-jsr250:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.annotation:jsr250-api:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.scala-lang:scala-library:2.7.3" level="project" />
<orderEntry type="library" exported="" name="Maven: net.lag:configgy:1.2" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-servlet-webserver:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-http:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-framework:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-http-utils:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-rcm:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-portunif:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-http-servlet:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.servlet:servlet-api:2.5" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.jersey:jersey-server:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.jersey:jersey-core:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.ws.rs:jsr311-api:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.jersey:jersey-json:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: org.codehaus.jettison:jettison:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.xml.bind:jaxb-impl:2.1" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.xml.bind:jaxb-api:2.1" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.activation:activation:1.1" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.jersey:jersey-atom:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: rome:rome:0.9" level="project" />
<orderEntry type="library" exported="" name="Maven: jdom:jdom:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.jboss.netty:netty:3.1.0.BETA2" level="project" />
<orderEntry type="library" exported="" name="Maven: org.apache.cassandra:cassandra:0.3.0-dev" level="project" />
<orderEntry type="library" exported="" name="Maven: com.facebook:thrift:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: com.facebook:fb303:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.apache.camel:camel-core:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: commons-logging:commons-logging-api:1.1" level="project" />
<orderEntry type="library" exported="" name="Maven: com.assembla.scala.mina:mina-core:2.0.0-M2-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: org.slf4j:slf4j-api:1.4.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.assembla.scala.mina:mina-integration-scala:2.0.0-M2-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: org.slf4j:slf4j-log4j12:1.4.3" level="project" />
<orderEntry type="library" exported="" name="Maven: log4j:log4j:1.2.13" level="project" />
<orderEntry type="library" exported="" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.jmock:jmock:2.4.0" level="project" />
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.1" level="project" />
</component>
</module>

View file

@ -1,10 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<module relativePaths="true" MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
@ -17,7 +20,6 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module" module-name="util-java" exported="" />
<orderEntry type="module-library" exported="">
<library>
<CLASSES>
@ -45,6 +47,53 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module" module-name="akka-kernel" exported="" />
<orderEntry type="module" module-name="util-java" exported="" />
<orderEntry type="library" exported="" name="Maven: org.scala-lang:scala-library:2.7.3" level="project" />
<orderEntry type="library" exported="" name="Maven: net.lag:configgy:1.2" level="project" />
<orderEntry type="library" exported="" name="Maven: org.guiceyfruit:guice-core:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: com.google.code.google-collections:google-collect:snapshot-20080530" level="project" />
<orderEntry type="library" exported="" name="Maven: cglib:cglib:2.2" level="project" />
<orderEntry type="library" exported="" name="Maven: asm:asm:3.1" level="project" />
<orderEntry type="library" exported="" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.guiceyfruit:guice-jsr250:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.annotation:jsr250-api:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-servlet-webserver:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-http:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-framework:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-http-utils:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-rcm:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-portunif:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-http-servlet:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.servlet:servlet-api:2.5" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.jersey:jersey-server:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.jersey:jersey-core:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.ws.rs:jsr311-api:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.jersey:jersey-json:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: org.codehaus.jettison:jettison:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.xml.bind:jaxb-impl:2.1" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.xml.bind:jaxb-api:2.1" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.activation:activation:1.1" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.jersey:jersey-atom:1.0.1" level="project" />
<orderEntry type="library" exported="" name="Maven: rome:rome:0.9" level="project" />
<orderEntry type="library" exported="" name="Maven: jdom:jdom:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.jboss.netty:netty:3.1.0.BETA2" level="project" />
<orderEntry type="library" exported="" name="Maven: org.apache.cassandra:cassandra:0.3.0-dev" level="project" />
<orderEntry type="library" exported="" name="Maven: com.facebook:thrift:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: com.facebook:fb303:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.apache.camel:camel-core:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: commons-logging:commons-logging-api:1.1" level="project" />
<orderEntry type="library" exported="" name="Maven: com.assembla.scala.mina:mina-core:2.0.0-M2-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: org.slf4j:slf4j-api:1.4.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.assembla.scala.mina:mina-integration-scala:2.0.0-M2-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: org.slf4j:slf4j-log4j12:1.4.3" level="project" />
<orderEntry type="library" exported="" name="Maven: log4j:log4j:1.2.13" level="project" />
<orderEntry type="library" exported="" name="Maven: junit:junit:4.5" level="project" />
<orderEntry type="library" name="Maven: org.jmock:jmock:2.4.0" level="project" />
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.1" level="project" />
</component>
</module>

View file

@ -24,7 +24,7 @@ import java.util.HashMap;
public class ActiveObjectGuiceConfigurator {
private List<Module> modules = new ArrayList<Module>();
private Injector injector;
private Supervisor supervisor; // TODO is supervisor needed
private Supervisor supervisor;
private RestartStrategy restartStrategy;
private Component[] components;
private Map<Class, Component> configRegistry = new HashMap<Class, Component>(); // TODO is configRegistry needed?

View file

@ -5,7 +5,13 @@
package se.scalablesolutions.akka.api;
import se.scalablesolutions.akka.annotation.*;
import se.scalablesolutions.akka.kernel.configuration.*;
import se.scalablesolutions.akka.kernel.config.ActiveObjectGuiceConfiguratorForJava;
import se.scalablesolutions.akka.annotation.*;
import se.scalablesolutions.akka.kernel.config.*;
import static se.scalablesolutions.akka.kernel.config.JavaConfig.*;
import se.scalablesolutions.akka.kernel.TransactionalMap;
import se.scalablesolutions.akka.kernel.InMemoryTransactionalMap;
import com.google.inject.Inject;
import com.google.inject.AbstractModule;
@ -16,7 +22,7 @@ import junit.framework.TestCase;
public class ActiveObjectGuiceConfiguratorTest extends TestCase {
static String messageLog = "";
final private ActiveObjectGuiceConfigurator conf = new ActiveObjectGuiceConfigurator();
final private ActiveObjectGuiceConfiguratorForJava conf = new ActiveObjectGuiceConfiguratorForJava();
protected void setUp() {
conf.addExternalGuiceModule(new AbstractModule() {
@ -26,11 +32,13 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
}).configureActiveObjects(
new RestartStrategy(new AllForOne(), 3, 5000), new Component[]{
new Component(
"foo",
Foo.class,
FooImpl.class,
new LifeCycle(new Permanent(), 1000),
1000),
new Component(
"bar",
Bar.class,
BarImpl.class,
new LifeCycle(new Permanent(), 1000),
@ -41,21 +49,21 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testGuiceActiveObjectInjection() {
messageLog = "";
Foo foo = conf.getActiveObject(Foo.class);
Bar bar = conf.getActiveObject(Bar.class);
Foo foo = conf.getActiveObject("foo");
Bar bar = conf.getActiveObject("bar");
assertTrue(foo.getBar().toString().equals(bar.toString()));
}
public void testGuiceExternalDependencyInjection() {
messageLog = "";
Bar bar = conf.getActiveObject(Bar.class);
Bar bar = conf.getActiveObject("bar");
Ext ext = conf.getExternalDependency(Ext.class);
assertTrue(bar.getExt().toString().equals(ext.toString()));
}
public void testLookupNonSupervisedInstance() {
try {
String str = conf.getActiveObject(String.class);
String str = conf.getActiveObject("string");
fail("exception should have been thrown");
} catch (Exception e) {
assertEquals("Class java.lang.String has not been put under supervision (by passing in the config to the supervise() method", e.getMessage());
@ -64,7 +72,7 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testActiveObjectInvocation() throws InterruptedException {
messageLog = "";
Foo foo = conf.getActiveObject(Foo.class);
Foo foo = conf.getActiveObject("foo");
messageLog += foo.foo("foo ");
foo.bar("bar ");
messageLog += "before_bar ";
@ -74,8 +82,8 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testActiveObjectInvocationsInvocation() throws InterruptedException {
messageLog = "";
Foo foo = conf.getActiveObject(Foo.class);
Bar bar = conf.getActiveObject(Bar.class);
Foo foo = conf.getActiveObject("foo");
Bar bar = conf.getActiveObject("bar");
messageLog += foo.foo("foo ");
foo.bar("bar ");
messageLog += "before_bar ";
@ -86,7 +94,7 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testForcedTimeout() {
messageLog = "";
Foo foo = conf.getActiveObject(Foo.class);
Foo foo = conf.getActiveObject("foo");
try {
foo.longRunning();
fail("exception should have been thrown");
@ -96,7 +104,7 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testForcedException() {
messageLog = "";
Foo foo = conf.getActiveObject(Foo.class);
Foo foo = conf.getActiveObject("foo");
try {
foo.throwsException();
fail("exception should have been thrown");

View file

@ -5,31 +5,25 @@
package se.scalablesolutions.akka.api;
import se.scalablesolutions.akka.annotation.*;
import se.scalablesolutions.akka.kernel.*;
import se.scalablesolutions.akka.kernel.configuration.LifeCycle;
import se.scalablesolutions.akka.kernel.configuration.Permanent;
import se.scalablesolutions.akka.kernel.configuration.Component;
import se.scalablesolutions.akka.kernel.configuration.AllForOne;
import se.scalablesolutions.akka.kernel.configuration.RestartStrategy;
import com.google.inject.Inject;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
import se.scalablesolutions.akka.kernel.config.*;
import static se.scalablesolutions.akka.kernel.config.JavaConfig.*;
import se.scalablesolutions.akka.kernel.TransactionalMap;
import se.scalablesolutions.akka.kernel.InMemoryTransactionalMap;
import junit.framework.TestCase;
public class InMemoryStateTest extends TestCase {
static String messageLog = "";
final private ActiveObjectGuiceConfigurator conf = new ActiveObjectGuiceConfigurator();
final private ActiveObjectGuiceConfiguratorForJava conf = new ActiveObjectGuiceConfiguratorForJava();
protected void setUp() {
conf.configureActiveObjects(
new RestartStrategy(new AllForOne(), 3, 5000),
new Component[] {
new Component(InMemStateful.class, InMemStatefulImpl.class, new LifeCycle(new Permanent(), 1000), 10000000),
new Component(InMemFailer.class, InMemFailerImpl.class, new LifeCycle(new Permanent(), 1000), 1000),
new Component(InMemClasher.class, InMemClasherImpl.class, new LifeCycle(new Permanent(), 1000), 100000)
new Component("inmem-stateful", InMemStateful.class, InMemStatefulImpl.class, new LifeCycle(new Permanent(), 1000), 10000000),
new Component("inmem-failer", InMemFailer.class, InMemFailerImpl.class, new LifeCycle(new Permanent(), 1000), 1000),
new Component("inmem-clasher", InMemClasher.class, InMemClasherImpl.class, new LifeCycle(new Permanent(), 1000), 100000)
}).inject().supervise();
}
@ -39,17 +33,17 @@ public class InMemoryStateTest extends TestCase {
public void testShouldNotRollbackStateForStatefulServerInCaseOfSuccess() {
InMemStateful stateful = conf.getActiveObject(InMemStateful.class);
InMemStateful stateful = conf.getActiveObject("inmem-stateful");
stateful.setState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init"); // set init state
stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state"); // transactional
assertEquals("new state", stateful.getState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess"));
}
public void testShouldRollbackStateForStatefulServerInCaseOfFailure() {
InMemStateful stateful = conf.getActiveObject(InMemStateful.class);
InMemStateful stateful = conf.getActiveObject("inmem-stateful");
stateful.setState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init"); // set init state
InMemFailer failer = conf.getActiveObject(InMemFailer.class);
InMemFailer failer = conf.getActiveObject("inmem-failer");
try {
stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer); // call failing transactional method
fail("should have thrown an exception");

View file

@ -5,31 +5,25 @@
package se.scalablesolutions.akka.api;
import se.scalablesolutions.akka.annotation.*;
import se.scalablesolutions.akka.kernel.*;
import se.scalablesolutions.akka.kernel.configuration.LifeCycle;
import se.scalablesolutions.akka.kernel.configuration.Permanent;
import se.scalablesolutions.akka.kernel.configuration.Component;
import se.scalablesolutions.akka.kernel.configuration.AllForOne;
import se.scalablesolutions.akka.kernel.configuration.RestartStrategy;
import com.google.inject.Inject;
import com.google.inject.AbstractModule;
import com.google.inject.Scopes;
import se.scalablesolutions.akka.kernel.config.*;
import static se.scalablesolutions.akka.kernel.config.JavaConfig.*;
import se.scalablesolutions.akka.kernel.TransactionalMap;
import se.scalablesolutions.akka.kernel.CassandraPersistentTransactionalMap;
import junit.framework.TestCase;
public class PersistentStateTest extends TestCase {
static String messageLog = "";
final private ActiveObjectGuiceConfigurator conf = new ActiveObjectGuiceConfigurator();
final private ActiveObjectGuiceConfiguratorForJava conf = new ActiveObjectGuiceConfiguratorForJava();
protected void setUp() {
conf.configureActiveObjects(
new RestartStrategy(new AllForOne(), 3, 5000),
new JavaConfig.RestartStrategy(new JavaConfig.AllForOne(), 3, 5000),
new Component[] {
new Component(PersistentStateful.class, PersistentStatefulImpl.class, new LifeCycle(new Permanent(), 1000), 10000000),
new Component(PersistentFailer.class, PersistentFailerImpl.class, new LifeCycle(new Permanent(), 1000), 1000),
new Component(PersistentClasher.class, PersistentClasherImpl.class, new LifeCycle(new Permanent(), 1000), 100000)
new Component("persistent-stateful", PersistentStateful.class, PersistentStatefulImpl.class, new LifeCycle(new Permanent(), 1000), 10000000),
new Component("persistent-failer", PersistentFailer.class, PersistentFailerImpl.class, new LifeCycle(new Permanent(), 1000), 1000),
new Component("persistent-clasher", PersistentClasher.class, PersistentClasherImpl.class, new LifeCycle(new Permanent(), 1000), 100000)
}).inject().supervise();
}
@ -63,10 +57,10 @@ interface PersistentStateful {
}
class PersistentStatefulImpl implements PersistentStateful {
private TransactionalMap<String, String> state = new CassandraPersistentTransactionalMap(this);
private TransactionalMap state = new CassandraPersistentTransactionalMap(this);
public String getState(String key) {
return state.get(key);
return (String)state.get(key);
}
public void setState(String key, String msg) {
@ -113,10 +107,10 @@ interface PersistentClasher {
}
class PersistentClasherImpl implements PersistentClasher {
private TransactionalMap<String, String> state = new CassandraPersistentTransactionalMap(this);
private TransactionalMap state = new CassandraPersistentTransactionalMap(this);
public String getState(String key) {
return state.get(key);
return (String)state.get(key);
}
public void setState(String key, String msg) {

View file

@ -25,6 +25,7 @@ JERSEY = ['com.sun.jersey:jersey-core:jar:1.0.1',
GRIZZLY = 'com.sun.grizzly:grizzly-servlet-webserver:jar:1.8.6.3'
NETTY = 'org.jboss.netty:netty:jar:3.1.0.BETA2'
CASSANDRA = 'org.apache.cassandra:cassandra:jar:0.3.0-dev'
CAMEL = 'org.apache.camel:camel-core:jar:2.0-SNAPSHOT'
THRIFT = 'com.facebook:thrift:jar:1.0'
FB303 = 'com.facebook:fb303:jar:1.0'
CONFIGGY = 'net.lag:configgy:jar:1.2'
@ -34,6 +35,7 @@ JSR_250 = 'javax.annotation:jsr250-api:jar:1.0'
SLF4J = ['org.slf4j:slf4j-log4j12:jar:1.4.3',
'org.slf4j:slf4j-api:jar:1.4.3',
'log4j:log4j:jar:1.2.13']
COMMONS_LOGGING = 'commons-logging:commons-logging:jar:1.1.1'
JDOM = 'jdom:jdom:jar:1.0'
CGLIB = 'cglib:cglib-nodep:jar:2.1_3'
AOPALLIANCE = 'aopalliance:aopalliance:jar:1.0'
@ -57,22 +59,22 @@ define 'akka' do
manifest['Copyright'] = 'Scalable Solutions (C) 2009'
compile.options.target = '1.5'
desc 'Akka Java Utilities (annotations)'
desc 'Akka Java Utilities (annotations and guice module)'
define 'util-java' do
compile
compile.with(GUICEYFRUIT, AOPALLIANCE)
package :jar
end
desc 'Akka Actor Kernel core implementation'
define 'kernel' do
compile.with(AKKA_UTIL_JAVA, GUICEYFRUIT, NETTY, JERSEY, GRIZZLY, CASSANDRA, THRIFT, FB303, SLF4J, CONFIGGY, JUNIT4RUNNER, JUNIT4, SCALATEST)
compile.with(AKKA_UTIL_JAVA, GUICEYFRUIT, AOPALLIANCE, NETTY, JERSEY, GRIZZLY, CASSANDRA, THRIFT, FB303, CAMEL, SLF4J, GOOGLE_COLLECT, CGLIB, JSR_250, COMMONS_LOGGING, CONFIGGY, JUNIT4RUNNER, JUNIT4, SCALATEST)
test.using :junit
package :jar
end
desc 'Akka Java API'
define 'api-java' do
compile.with(AKKA_KERNEL, AKKA_UTIL_JAVA, NETTY, JERSEY, GRIZZLY, CASSANDRA, THRIFT, FB303, SLF4J, CONFIGGY, GUICEYFRUIT, SCALA, GOOGLE_COLLECT, AOPALLIANCE, CGLIB, JSR_250)
compile.with(AKKA_KERNEL, AKKA_UTIL_JAVA, NETTY, JERSEY, GRIZZLY, CASSANDRA, THRIFT, FB303, CAMEL, SLF4J, CONFIGGY, GUICEYFRUIT, SCALA, GOOGLE_COLLECT, AOPALLIANCE, CGLIB, JSR_250)
test.using :junit
package :jar
end

View file

@ -51,7 +51,6 @@
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/JSAP-2.1.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/jsr250-api-1.0.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/jsr311-api-1.0.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/junit-3.8.2.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/junit-4.5.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/junit4runner-1.0.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/libfb303.jar"/>
@ -64,7 +63,6 @@
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/protobuf-java-2.0.3.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/rome-0.9.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/scala-library-2.7.3.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/scala-library-2.7.3.zip"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/scalatest-0.9.5.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/servlet-api-2.5.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/slf4j-api-1.4.3.jar"/>
@ -77,5 +75,6 @@
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/xerces.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/zookeeper-3.1.0.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/config"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/camel-core-2.0-SNAPSHOT.jar"/>
<classpathentry kind="output" path="build"/>
</classpath>

View file

@ -1,5 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Scala" name="Scala">
<configuration />
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
@ -11,9 +16,7 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="util-java" exported="" />
<orderEntry type="library" exported="" name="Maven: org.scala-lang:scala-library:2.7.3" level="project" />
<orderEntry type="library" exported="" name="Maven: net.lag:configgy:1.2" level="project" />
<orderEntry type="module" module-name="akka-util-java" exported="" />
<orderEntry type="library" exported="" name="Maven: org.guiceyfruit:guice-core:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: com.google.code.google-collections:google-collect:snapshot-20080530" level="project" />
<orderEntry type="library" exported="" name="Maven: cglib:cglib:2.2" level="project" />
@ -21,6 +24,8 @@
<orderEntry type="library" exported="" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.guiceyfruit:guice-jsr250:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.annotation:jsr250-api:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.scala-lang:scala-library:2.7.3" level="project" />
<orderEntry type="library" exported="" name="Maven: net.lag:configgy:1.2" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-servlet-webserver:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-http:1.8.6.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.sun.grizzly:grizzly-framework:1.8.6.3" level="project" />
@ -46,6 +51,8 @@
<orderEntry type="library" exported="" name="Maven: org.apache.cassandra:cassandra:0.3.0-dev" level="project" />
<orderEntry type="library" exported="" name="Maven: com.facebook:thrift:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: com.facebook:fb303:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.apache.camel:camel-core:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: commons-logging:commons-logging-api:1.1" level="project" />
<orderEntry type="library" exported="" name="Maven: com.assembla.scala.mina:mina-core:2.0.0-M2-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: org.slf4j:slf4j-api:1.4.3" level="project" />
<orderEntry type="library" exported="" name="Maven: com.assembla.scala.mina:mina-integration-scala:2.0.0-M2-SNAPSHOT" level="project" />
@ -60,6 +67,7 @@
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$MODULE_DIR$/../../../../bin/scala-2.7.3.final/src/scala-compiler-src.jar!/" />
<root url="jar://$MODULE_DIR$/../../../../bin/scala-2.7.3.final/src/scala-library-src.jar!/" />
</SOURCES>
</library>

View file

@ -70,7 +70,8 @@
<artifactId>cassandra</artifactId>
<version>0.3.0-dev</version>
</dependency>
<dependency>
<dependency>
<groupId>com.facebook</groupId>
<artifactId>thrift</artifactId>
<version>1.0</version>
@ -79,6 +80,11 @@
<groupId>com.facebook</groupId>
<artifactId>fb303</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<!--dependency>
<groupId>voldemort</groupId>

View file

@ -0,0 +1 @@
class=se.scalablesolutions.akka.kernel.camel.ActiveObjectComponent

View file

@ -4,10 +4,15 @@
package se.scalablesolutions.akka.kernel
import config.ActiveObjectGuiceConfigurator
import config.ScalaConfig._
import java.util.{List => JList, ArrayList}
import java.lang.reflect.{Method, Field, InvocationHandler, Proxy, InvocationTargetException}
import java.lang.annotation.Annotation
import kernel.camel.{MessageDriven, ActiveObjectProducer}
import org.apache.camel.{Processor, Exchange}
import scala.collection.mutable.HashMap
//import voldemort.client.{SocketStoreClientFactory, StoreClient, StoreClientFactory}
//import voldemort.versioning.Versioned
@ -36,18 +41,20 @@ class ActiveObjectFactory {
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
object ActiveObject {
private[kernel] val threadBoundTx: ThreadLocal[Option[Transaction]] = {
val tl = new ThreadLocal[Option[Transaction]]
tl.set(None)
tl
}
val AKKA_CAMEL_ROUTING_SCHEME = "akka"
def newInstance[T](intf: Class[_], proxy: ActiveObjectProxy): T = {
Proxy.newProxyInstance(
intf.getClassLoader,
Array(intf),
proxy).asInstanceOf[T]
}
private[kernel] val threadBoundTx: ThreadLocal[Option[Transaction]] = {
val tl = new ThreadLocal[Option[Transaction]]
tl.set(None)
tl
}
def newInstance[T](intf: Class[_], proxy: ActiveObjectProxy): T = {
Proxy.newProxyInstance(
intf.getClassLoader,
Array(intf),
proxy).asInstanceOf[T]
}
def newInstance[T](intf: Class[_], target: AnyRef, timeout: Int): T = {
val proxy = new ActiveObjectProxy(intf, target.getClass, timeout)
@ -77,20 +84,22 @@ object ActiveObject {
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
// FIXME: use interface for ActiveObjectGuiceConfigurator
class ActiveObjectProxy(val intf: Class[_], val target: Class[_], val timeout: Int) extends InvocationHandler {
import ActiveObject.threadBoundTx
private[this] var activeTx: Option[Transaction] = None
private var targetInstance: AnyRef = _
private[kernel] def setTargetInstance(instance: AnyRef) = {
private[this] var activeTx: Option[Transaction] = None
private[this] var targetInstance: AnyRef = _
private[akka] def setTargetInstance(instance: AnyRef) = {
targetInstance = instance
val (maps, vectors, refs) = getTransactionalItemsFor(targetInstance)
server.transactionalRefs = refs
server.transactionalMaps = maps
server.transactionalVectors = vectors
server.transactionalRefs = refs
}
private[kernel] val server = new GenericServerContainer(target.getName, () => new Dispatcher(target.getName))
private[akka] val server = new GenericServerContainer(intf.getName, () => new Dispatcher(target.getName))
server.setTimeout(timeout)
def invoke(proxy: AnyRef, m: Method, args: Array[AnyRef]): AnyRef = {
@ -121,9 +130,29 @@ class ActiveObjectProxy(val intf: Class[_], val target: Class[_], val timeout: I
}
private def invoke(invocation: Invocation): AnyRef = {
val result: AnyRef =
if (invocation.method.isAnnotationPresent(Annotations.oneway)) server ! invocation
else {
val result: AnyRef =
/*
if (invocation.target.isInstanceOf[MessageDriven] &&
invocation.method.getName == "onMessage") {
val m = invocation.method
val endpointName = m.getDeclaringClass.getName + "." + m.getName
val activeObjectName = m.getDeclaringClass.getName
val endpoint = conf.getRoutingEndpoint(conf.lookupUriFor(m))
val producer = endpoint.createProducer
val exchange = endpoint.createExchange
exchange.getIn().setBody(invocation)
producer.process(exchange)
val fault = exchange.getException();
if (fault != null) throw new InvocationTargetException(fault)
// FIXME: need some timeout and future here...
exchange.getOut.getBody
} else */
if (invocation.method.isAnnotationPresent(Annotations.oneway)) {
server ! invocation
} else {
val result: ErrRef[AnyRef] =
server !!! (invocation, {
var ref = ErrRef(activeTx)
@ -169,8 +198,8 @@ class ActiveObjectProxy(val intf: Class[_], val target: Class[_], val timeout: I
if txItem != null
} {
if (txItem.isInstanceOf[TransactionalMap[_, _]]) maps ::= txItem.asInstanceOf[TransactionalMap[_, _]]
else if (txItem.isInstanceOf[TransactionalVector[_]]) vectors ::= txItem.asInstanceOf[TransactionalVector[_]]
else if (txItem.isInstanceOf[TransactionalRef[_]]) refs ::= txItem.asInstanceOf[TransactionalRef[_]]
else if (txItem.isInstanceOf[TransactionalVector[_]]) vectors ::= txItem.asInstanceOf[TransactionalVector[_]]
}
(maps, vectors, refs)
}
@ -183,6 +212,7 @@ class ActiveObjectProxy(val intf: Class[_], val target: Class[_], val timeout: I
*/
private[kernel] class Dispatcher(val targetName: String) extends GenericServer {
override def body: PartialFunction[Any, Unit] = {
case invocation: Invocation =>
val tx = invocation.tx
ActiveObject.threadBoundTx.set(tx)
@ -194,8 +224,15 @@ private[kernel] class Dispatcher(val targetName: String) extends GenericServer {
case e =>
val ref = ErrRef(tx); ref() = throw e; reply(ref)
}
case 'exit =>
exit; reply()
/* case exchange: Exchange =>
println("=============> Exchange From Actor: " + exchange)
val invocation = exchange.getIn.getBody.asInstanceOf[Invocation]
invocation.invoke
*/
case unexpected =>
throw new ActiveObjectException("Unexpected message [" + unexpected + "] to [" + this + "] from [" + sender + "]")
}
@ -248,3 +285,40 @@ private[kernel] case class Invocation(val method: Method,
private[this] def argsToString(array: Array[Object]): String =
array.foldLeft("(")(_ + " " + _) + ")"
}
/*
ublic class CamelInvocationHandler implements InvocationHandler {
private final Endpoint endpoint;
private final Producer producer;
private final MethodInfoCache methodInfoCache;
public CamelInvocationHandler(Endpoint endpoint, Producer producer, MethodInfoCache methodInfoCache) {
this.endpoint = endpoint;
this.producer = producer;
this.methodInfoCache = methodInfoCache;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
BeanInvocation invocation = new BeanInvocation(method, args);
ExchangePattern pattern = ExchangePattern.InOut;
MethodInfo methodInfo = methodInfoCache.getMethodInfo(method);
if (methodInfo != null) {
pattern = methodInfo.getPattern();
}
Exchange exchange = new DefaultExchange(endpoint, pattern);
exchange.getIn().setBody(invocation);
producer.process(exchange);
Throwable fault = exchange.getException();
if (fault != null) {
throw new InvocationTargetException(fault);
}
if (pattern.isOutCapable()) {
return exchange.getOut().getBody();
} else {
return null;
}
}
}
*/

View file

@ -5,7 +5,6 @@
package se.scalablesolutions.akka
import kernel.Logging
import kernel.configuration.ConfigurationException
import java.io.File
import java.lang.reflect.Method
@ -18,7 +17,7 @@ import java.net.{URL, URLClassLoader}
*/
object Boot extends Logging {
val HOME = try { System.getenv("AKKA_HOME") } catch { case e: NullPointerException => throw new ConfigurationException("AKKA_HOME system variable needs to be set") }
val HOME = try { System.getenv("AKKA_HOME") } catch { case e: NullPointerException => throw new IllegalStateException("AKKA_HOME system variable needs to be set") }
val CLASSES = HOME + "/classes"
val LIB = HOME + "/lib"
val CONFIG = HOME + "/config"

View file

@ -4,6 +4,7 @@
package se.scalablesolutions.akka.kernel.configuration
/*
import se.scalablesolutions.akka.kernel.{ActiveObject, ActiveObjectProxy}
import com.google.inject.{AbstractModule}
import java.util.{List => JList, ArrayList}
@ -12,14 +13,8 @@ import scala.reflect.BeanProperty
// ============================================
// Java version of the configuration API
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
sealed class ConfigurationException(msg: String) extends RuntimeException(msg)
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
sealed abstract class Configuration
class RestartStrategy(@BeanProperty val scheme: FailOverScheme, @BeanProperty val maxNrOfRetries: Int, @BeanProperty val withinTimeRange: Int) extends Configuration {
@ -62,3 +57,4 @@ class Component(@BeanProperty val intf: Class[_],
@BeanProperty val timeout: Int) extends Server {
def newWorker(proxy: ActiveObjectProxy) = se.scalablesolutions.akka.kernel.Worker(proxy.server, lifeCycle.transform)
}
*/

View file

@ -7,6 +7,7 @@ package se.scalablesolutions.akka.kernel
import scala.actors._
import scala.actors.Actor._
import se.scalablesolutions.akka.kernel.config.ScalaConfig._
import se.scalablesolutions.akka.kernel.Helpers._
sealed abstract class GenericServerMessage

View file

@ -10,31 +10,7 @@ import scala.collection.mutable.HashMap
import se.scalablesolutions.akka.kernel.Helpers._
//====================================================
/**
* Configuration classes - not to be used as messages.
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
sealed abstract class ConfigElement
abstract class Server extends ConfigElement
abstract class FailOverScheme extends ConfigElement
abstract class Scope extends ConfigElement
case class SupervisorConfig(restartStrategy: RestartStrategy, worker: List[Server]) extends Server
case class Worker(serverContainer: GenericServerContainer, lifeCycle: LifeCycle) extends Server
case class RestartStrategy(scheme: FailOverScheme, maxNrOfRetries: Int, withinTimeRange: Int) extends ConfigElement
case object AllForOne extends FailOverScheme
case object OneForOne extends FailOverScheme
case class LifeCycle(scope: Scope, shutdownTime: Int) extends ConfigElement
case object Permanent extends Scope
case object Transient extends Scope
case object Temporary extends Scope
import se.scalablesolutions.akka.kernel.config.ScalaConfig._
//====================================================

View file

@ -0,0 +1,22 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.camel
import config.ActiveObjectGuiceConfigurator
import java.util.Map
import java.util.concurrent.{BlockingQueue, LinkedBlockingQueue}
import org.apache.camel.{Endpoint, Exchange}
import org.apache.camel.impl.DefaultComponent
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectComponent(val conf: ActiveObjectGuiceConfigurator) extends DefaultComponent {
override def createEndpoint(uri: String, remaining: String, parameters: Map[_,_]): Endpoint = {
//val consumers = getAndRemoveParameter(parameters, "concurrentConsumers", classOf[Int], 1)
new ActiveObjectEndpoint(uri, this, conf)
}
}

View file

@ -0,0 +1,36 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.camel
import java.util.concurrent.{BlockingQueue, ExecutorService, Executors, ThreadFactory, TimeUnit}
import se.scalablesolutions.akka.kernel.{Logging, GenericServerContainer}
import org.apache.camel.{AsyncCallback, AsyncProcessor, Consumer, Exchange, Processor}
import org.apache.camel.impl.ServiceSupport
import org.apache.camel.impl.converter.AsyncProcessorTypeConverter
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectConsumer(
val endpoint: ActiveObjectEndpoint,
proc: Processor,
val activeObject: AnyRef)
extends ServiceSupport with Consumer with Runnable with Logging {
val processor = AsyncProcessorTypeConverter.convert(proc)
println("------- creating consumer for: "+ endpoint.uri)
override def run = {
}
def doStart() = {
}
def doStop() = {
}
override def toString(): String = "ActiveObjectConsumer [" + endpoint.getEndpointUri + "]"
}

View file

@ -0,0 +1,47 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.camel
import config.ActiveObjectGuiceConfigurator
import se.scalablesolutions.akka.kernel.Logging
import java.util.{ArrayList, HashSet, List, Set}
import java.util.concurrent.{BlockingQueue, CopyOnWriteArraySet, LinkedBlockingQueue}
import org.apache.camel.{Component, Consumer, Exchange, Processor, Producer}
import org.apache.camel.impl.{DefaultEndpoint, DefaultComponent};
import org.apache.camel.spi.BrowsableEndpoint;
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectEndpoint(val uri: String, val component: DefaultComponent, val conf: ActiveObjectGuiceConfigurator) // FIXME: need abstraction trait here
extends DefaultEndpoint(uri) with BrowsableEndpoint with Logging {
val firstSep = uri.indexOf(':')
val lastSep = uri.lastIndexOf( '.')
val scheme = uri.substring(0, firstSep)
val activeObjectName = uri.substring(uri.indexOf(':') + 1, lastSep)
val methodName = uri.substring(lastSep + 1, uri.length)
val activeObject = conf.getActiveObject(activeObjectName).asInstanceOf[MessageDriven]
// val activeObjectProxy = conf.getActiveObjectProxy(activeObjectName)
// val genericServer = supervisor.getServerOrElse(
// activeObjectName,
// throw new IllegalArgumentException("Can't find active object with name [" + activeObjectName + "] and method [" + methodName + "]"))
log.debug("Creating Camel Endpoint for scheme [%s] and component [%s]", scheme, activeObjectName)
private var queue: BlockingQueue[Exchange] = new LinkedBlockingQueue[Exchange](1000)
override def createProducer: Producer = new ActiveObjectProducer(this, activeObject)
override def createConsumer(processor: Processor): Consumer = new ActiveObjectConsumer(this, processor, activeObject)
override def getExchanges: List[Exchange] = new ArrayList[Exchange](queue)
override def isSingleton = true
}

View file

@ -0,0 +1,43 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.camel
import java.util.Collection;
import java.util.concurrent.BlockingQueue;
import se.scalablesolutions.akka.kernel.{Logging, GenericServerContainer}
import org.apache.camel.{Exchange, AsyncProcessor, AsyncCallback}
import org.apache.camel.impl.DefaultProducer
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectProducer(
val endpoint: ActiveObjectEndpoint,
val activeObject: MessageDriven)
extends DefaultProducer(endpoint) with AsyncProcessor with Logging {
private val actorName = endpoint.activeObjectName
def process(exchange: Exchange) = activeObject.onMessage(exchange) // FIXME: should we not invoke the generic server here?
def process(exchange: Exchange, callback: AsyncCallback): Boolean = {
val copy = exchange.copy
copy.setProperty("CamelAsyncCallback", callback)
activeObject.onMessage(copy)
callback.done(true)
true
}
override def doStart = {
super.doStart
}
override def doStop = {
super.doStop
}
override def toString(): String = "ActiveObjectProducer [" + endpoint.getEndpointUri + "]"
}

View file

@ -0,0 +1,14 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.camel
import org.apache.camel.Exchange
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
trait MessageDriven {
def onMessage(exchange: Exchange)
}

View file

@ -0,0 +1,15 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.camel
import org.apache.camel.impl.{DefaultCamelContext, DefaultEndpoint, DefaultComponent}
import se.scalablesolutions.akka.kernel.{Supervisor, Logging}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class SupervisorAwareCamelContext extends DefaultCamelContext with Logging {
var supervisor: Supervisor = _
}

View file

@ -296,7 +296,7 @@ class Vector[+T] private (val length: Int, shift: Int, root: Array[AnyRef], tail
}
override def equals(other: Any) = other match {
case vec:Vector[T] => {
case vec: Vector[T] => {
var back = length == vec.length
var i = 0

View file

@ -0,0 +1,188 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.config
import com.google.inject._
import com.google.inject.jsr250.ResourceProviderFactory
import java.lang.reflect.Method
import kernel.camel.ActiveObjectComponent
import org.apache.camel.impl.{JndiRegistry, DefaultCamelContext}
import org.apache.camel.{Endpoint, Routes}
import scala.collection.mutable.HashMap
import se.scalablesolutions.akka.kernel.ActiveObjectFactory
import se.scalablesolutions.akka.kernel.ActiveObjectProxy
import se.scalablesolutions.akka.kernel.Supervisor
import se.scalablesolutions.akka.kernel.config.ScalaConfig._
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectGuiceConfigurator extends Logging {
val AKKA_CAMEL_ROUTING_SCHEME = "akka"
private var injector: Injector = _
private var supervisor: Supervisor = _
private var restartStrategy: RestartStrategy = _
private var components: List[Component] = _
private var bindings: List[DependencyBinding] = Nil
private var configRegistry = new HashMap[Class[_], Component] // TODO is configRegistry needed?
private var activeObjectRegistry = new HashMap[String, Tuple3[Class[_], Class[_], ActiveObjectProxy]]
private var activeObjectFactory = new ActiveObjectFactory
// private var camelContext = new DefaultCamelContext();
private var modules = new java.util.ArrayList[Module]
private var methodToUriRegistry = new HashMap[Method, String]
def getExternalDependency[T](clazz: Class[T]): T = synchronized {
injector.getInstance(clazz).asInstanceOf[T]
}
/*
def getRoutingEndpoint(uri: String): Endpoint = synchronized {
camelContext.getEndpoint(uri)
}
def getRoutingEndpoints: java.util.Collection[Endpoint] = synchronized {
camelContext.getEndpoints
}
def getRoutingEndpoints(uri: String): java.util.Collection[Endpoint] = synchronized {
camelContext.getEndpoints(uri)
}
*/
/**
* Returns the active abject that has been put under supervision for the class specified.
*
* @param clazz the class for the active object
* @return the active object for the class
*/
def getActiveObject(name: String): AnyRef = synchronized {
//def getActiveObject[T](name: String): T = synchronized {
println("Looking up active object " + name)
log.debug("Looking up active object [%s]", name)
if (injector == null) throw new IllegalStateException("inject() and supervise() must be called before invoking newInstance(clazz)")
val activeObjectOption: Option[Tuple3[Class[_], Class[_], ActiveObjectProxy]] = activeObjectRegistry.get(name)
if (activeObjectOption.isDefined) {
val classInfo = activeObjectOption.get
val intfClass = classInfo._1
val implClass = classInfo._2
val activeObjectProxy = classInfo._3
//activeObjectProxy.setTargetInstance(injector.getInstance(clazz).asInstanceOf[AnyRef])
val target = implClass.newInstance
injector.injectMembers(target)
activeObjectProxy.setTargetInstance(target.asInstanceOf[AnyRef])
activeObjectFactory.newInstance(intfClass, activeObjectProxy).asInstanceOf[AnyRef]
} else throw new IllegalStateException("Class " + name + " has not been put under supervision (by passing in the config to the 'supervise') method")
}
def getActiveObjectProxy(name: String): ActiveObjectProxy = synchronized {
log.debug("Looking up active object proxy [%s]", name)
if (injector == null) throw new IllegalStateException("inject() and supervise() must be called before invoking newInstance(clazz)")
val activeObjectOption: Option[Tuple3[Class[_], Class[_], ActiveObjectProxy]] = activeObjectRegistry.get(name)
if (activeObjectOption.isDefined) activeObjectOption.get._3
else throw new IllegalStateException("Class " + name + " has not been put under supervision (by passing in the config to the 'supervise') method")
}
def configureActiveObjects(restartStrategy: RestartStrategy, components: List[Component]): ActiveObjectGuiceConfigurator = synchronized {
this.restartStrategy = restartStrategy
this.components = components.toArray.toList.asInstanceOf[List[Component]]
bindings = for (c <- this.components)
yield new DependencyBinding(c.intf, c.target) // build up the Guice interface class -> impl class bindings
val arrayList = new java.util.ArrayList[DependencyBinding]()
for (b <- bindings) arrayList.add(b)
modules.add(new ActiveObjectGuiceModule(arrayList))
this
}
def inject: ActiveObjectGuiceConfigurator = synchronized {
if (injector != null) throw new IllegalStateException("inject() has already been called on this configurator")
injector = Guice.createInjector(modules)
this
}
def supervise: ActiveObjectGuiceConfigurator = synchronized {
if (injector == null) inject
injector = Guice.createInjector(modules)
var workers = new java.util.ArrayList[Worker]
for (component <- components) {
val activeObjectProxy = new ActiveObjectProxy(component.intf, component.target, component.timeout)
workers.add(Worker(activeObjectProxy.server, component.lifeCycle))
activeObjectRegistry.put(component.name, (component.intf, component.target, activeObjectProxy))
// camelContext.getRegistry.asInstanceOf[JndiRegistry].bind(component.name, activeObjectProxy)
// for (method <- component.intf.getDeclaredMethods.toList) {
// registerMethodForUri(method, component.name)
// }
// log.debug("Registering active object in Camel context under the name [%s]", component.target.getName)
}
supervisor = activeObjectFactory.supervise(restartStrategy, workers)
// camelContext.addComponent(AKKA_CAMEL_ROUTING_SCHEME, new ActiveObjectComponent(this))
// camelContext.start
this
}
/**
* Add additional services to be wired in.
* <pre>
* ActiveObjectGuiceModule.addExternalGuiceModule(new AbstractModule {
* protected void configure() {
* bind(Foo.class).to(FooImpl.class).in(Scopes.SINGLETON);
* bind(BarImpl.class);
* link(Bar.class).to(BarImpl.class);
* bindConstant(named("port")).to(8080);
* }})
* </pre>
*/
def addExternalGuiceModule(module: Module): ActiveObjectGuiceConfigurator = synchronized {
modules.add(module)
this
}
/**
* Add Camel routes for the active objects.
* <pre>
* activeObjectGuiceModule.addRoutes(new RouteBuilder() {
* def configure = {
* from("akka:actor1").to("akka:actor2")
* from("akka:actor2").process(new Processor() {
* def process(e: Exchange) = {
* println("Received exchange: " + e.getIn())
* }
* })
* }
* }).inject().supervise();
* </pre>
*
def addRoutes(routes: Routes): ActiveObjectGuiceConfigurator = synchronized {
camelContext.addRoutes(routes)
this
}
*/
def getGuiceModules = modules
def reset = synchronized {
modules = new java.util.ArrayList[Module]
configRegistry = new HashMap[Class[_], Component]
activeObjectRegistry = new HashMap[String, Tuple3[Class[_], Class[_], ActiveObjectProxy]]
methodToUriRegistry = new HashMap[Method, String]
injector = null
restartStrategy = null
// camelContext = new DefaultCamelContext
}
def stop = synchronized {
// camelContext.stop
supervisor.stop
}
def registerMethodForUri(method: Method, componentName: String) =
methodToUriRegistry += method -> buildUri(method, componentName)
def lookupUriFor(method: Method): String =
methodToUriRegistry.getOrElse(method, throw new IllegalStateException("Could not find URI for method [" + method.getName + "]"))
def buildUri(method: Method, componentName: String): String =
AKKA_CAMEL_ROUTING_SCHEME + ":" + componentName + "." + method.getName
}

View file

@ -0,0 +1,155 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.config
import akka.kernel.config.JavaConfig._
import akka.kernel.{Supervisor, ActiveObjectProxy, ActiveObjectFactory}
import com.google.inject._
import com.google.inject.jsr250.ResourceProviderFactory
import java.util.{ArrayList, HashMap, Collection}
import org.apache.camel.impl.{JndiRegistry, DefaultCamelContext}
import org.apache.camel.{Endpoint, Routes}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
class ActiveObjectGuiceConfiguratorForJava {
private var modules = new ArrayList[Module]
private var injector: Injector = _
private var supervisor: Supervisor = _
private var restartStrategy: RestartStrategy = _
private var components: List[Component] = _
private var bindings: List[DependencyBinding] = Nil
private var configRegistry = new HashMap[Class[_], Component] // TODO is configRegistry needed?
private var activeObjectRegistry = new HashMap[String, Tuple2[Class[_], ActiveObjectProxy]]
private var activeObjectFactory = new ActiveObjectFactory
//private var camelContext = new DefaultCamelContext();
def getExternalDependency[T](clazz: Class[T]): T = synchronized {
injector.getInstance(clazz).asInstanceOf[T]
}
/*
def getRoutingEndpoint(uri: String): Endpoint = synchronized {
camelContext.getEndpoint(uri)
}
def getRoutingEndpoints: Collection[Endpoint] = synchronized {
camelContext.getEndpoints
}
def getRoutingEndpoints(uri: String): Collection[Endpoint] = synchronized {
camelContext.getEndpoints(uri)
}
*/
/**
* Returns the active abject that has been put under supervision for the class specified.
*
* @param clazz the class for the active object
* @return the active object for the class
*/
def getActiveObject[T](name: String): T = synchronized {
if (injector == null) throw new IllegalStateException("inject() and supervise() must be called before invoking newInstance(clazz)")
if (activeObjectRegistry.containsKey(name)) {
val activeObjectTuple = activeObjectRegistry.get(name)
val clazz = activeObjectTuple._1
val activeObjectProxy = activeObjectTuple._2
//activeObjectProxy.setTargetInstance(injector.getInstance(clazz).asInstanceOf[AnyRef])
val target = clazz.newInstance
injector.injectMembers(target)
activeObjectProxy.setTargetInstance(target.asInstanceOf[AnyRef])
activeObjectFactory.newInstance(clazz, activeObjectProxy).asInstanceOf[T]
} else throw new IllegalStateException("Class " + name + " has not been put under supervision (by passing in the config to the supervise() method")
}
def configureActiveObjects(restartStrategy: RestartStrategy, components: Array[Component]): ActiveObjectGuiceConfiguratorForJava = synchronized {
this.restartStrategy = restartStrategy
this.components = components.toArray.toList.asInstanceOf[List[Component]]
bindings = for (c <- this.components) yield {
new DependencyBinding(c.intf, c.target)
}
val arrayList = new ArrayList[DependencyBinding]()
for (b <- bindings) arrayList.add(b)
modules.add(new ActiveObjectGuiceModule(arrayList))
this
}
def inject(): ActiveObjectGuiceConfiguratorForJava = synchronized {
if (injector != null) throw new IllegalStateException("inject() has already been called on this configurator")
injector = Guice.createInjector(modules)
this
}
def supervise: ActiveObjectGuiceConfiguratorForJava = synchronized {
if (injector == null) inject()
injector = Guice.createInjector(modules)
val workers = new java.util.ArrayList[se.scalablesolutions.akka.kernel.config.ScalaConfig.Worker]
for (c <- components) {
val activeObjectProxy = new ActiveObjectProxy(c.intf, c.target, c.timeout)
workers.add(c.newWorker(activeObjectProxy))
activeObjectRegistry.put(c.name, (c.intf, activeObjectProxy))
// camelContext.getRegistry.asInstanceOf[JndiRegistry].bind(c.intf.getName, activeObjectProxy)
}
supervisor = activeObjectFactory.supervise(restartStrategy.transform, workers)
// camelContext.start
this
}
/**
* Add additional services to be wired in.
* <pre>
* ActiveObjectGuiceModule.addExternalGuiceModule(new AbstractModule {
* protected void configure() {
* bind(Foo.class).to(FooImpl.class).in(Scopes.SINGLETON);
* bind(BarImpl.class);
* link(Bar.class).to(BarImpl.class);
* bindConstant(named("port")).to(8080);
* }})
* </pre>
*/
def addExternalGuiceModule(module: Module): ActiveObjectGuiceConfiguratorForJava = synchronized {
modules.add(module)
this
}
/**
* Add Camel routes for the active objects.
* <pre>
* activeObjectGuiceModule.addRoutes(new RouteBuilder() {
* def configure = {
* from("akka:actor1").to("akka:actor2")
* from("akka:actor2").process(new Processor() {
* def process(e: Exchange) = {
* println("Received exchange: " + e.getIn())
* }
* })
* }
* }).inject().supervise();
* </pre>
*
def addRoutes(routes: Routes): ActiveObjectGuiceConfiguratorForJava = synchronized {
camelContext.addRoutes(routes)
this
}
*/
def getGuiceModules = modules
def reset = synchronized {
modules = new ArrayList[Module]
configRegistry = new HashMap[Class[_], Component]
activeObjectRegistry = new HashMap[String, Tuple2[Class[_], ActiveObjectProxy]]
injector = null
restartStrategy = null
//camelContext = new DefaultCamelContext
}
def stop = synchronized {
//camelContext.stop
supervisor.stop
}
}

View file

@ -0,0 +1,93 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.config
import reflect.BeanProperty
import se.scalablesolutions.akka.kernel.GenericServerContainer
/**
* Configuration classes - not to be used as messages.
*
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
object ScalaConfig {
sealed abstract class ConfigElement
abstract class Server extends ConfigElement
abstract class FailOverScheme extends ConfigElement
abstract class Scope extends ConfigElement
case class SupervisorConfig(restartStrategy: RestartStrategy, worker: List[Server]) extends Server
case class Worker(serverContainer: GenericServerContainer, lifeCycle: LifeCycle) extends Server
case class RestartStrategy(scheme: FailOverScheme, maxNrOfRetries: Int, withinTimeRange: Int) extends ConfigElement
case object AllForOne extends FailOverScheme
case object OneForOne extends FailOverScheme
case class LifeCycle(scope: Scope, shutdownTime: Int) extends ConfigElement
case object Permanent extends Scope
case object Transient extends Scope
case object Temporary extends Scope
case class Component(val name: String,
val intf: Class[_],
val target: Class[_],
val lifeCycle: LifeCycle,
val timeout: Int) extends Server
}
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
object JavaConfig {
sealed abstract class ConfigElement
class RestartStrategy(
@BeanProperty val scheme: FailOverScheme,
@BeanProperty val maxNrOfRetries: Int,
@BeanProperty val withinTimeRange: Int) extends ConfigElement {
def transform = se.scalablesolutions.akka.kernel.config.ScalaConfig.RestartStrategy(
scheme.transform, maxNrOfRetries, withinTimeRange)
}
class LifeCycle(@BeanProperty val scope: Scope, @BeanProperty val shutdownTime: Int) extends ConfigElement {
def transform = se.scalablesolutions.akka.kernel.config.ScalaConfig.LifeCycle(scope.transform, shutdownTime)
}
abstract class Scope extends ConfigElement {
def transform: se.scalablesolutions.akka.kernel.config.ScalaConfig.Scope
}
class Permanent extends Scope {
override def transform = se.scalablesolutions.akka.kernel.config.ScalaConfig.Permanent
}
class Transient extends Scope {
override def transform = se.scalablesolutions.akka.kernel.config.ScalaConfig.Transient
}
class Temporary extends Scope {
override def transform = se.scalablesolutions.akka.kernel.config.ScalaConfig.Temporary
}
abstract class FailOverScheme extends ConfigElement {
def transform: se.scalablesolutions.akka.kernel.config.ScalaConfig.FailOverScheme
}
class AllForOne extends FailOverScheme {
override def transform = se.scalablesolutions.akka.kernel.config.ScalaConfig.AllForOne
}
class OneForOne extends FailOverScheme {
override def transform = se.scalablesolutions.akka.kernel.config.ScalaConfig.OneForOne
}
abstract class Server extends ConfigElement
class Component(@BeanProperty val name: String,
@BeanProperty val intf: Class[_],
@BeanProperty val target: Class[_],
@BeanProperty val lifeCycle: LifeCycle,
@BeanProperty val timeout: Int) extends Server {
def newWorker(proxy: ActiveObjectProxy) =
se.scalablesolutions.akka.kernel.config.ScalaConfig.Worker(proxy.server, lifeCycle.transform)
}
}

View file

@ -0,0 +1,108 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel
import akka.kernel.config.ActiveObjectGuiceConfigurator
import annotation.oneway
import kernel.config.ScalaConfig._
import com.google.inject.{AbstractModule, Scopes}
import com.jteigen.scalatest.JUnit4Runner
import org.junit.runner.RunWith
import org.scalatest._
import org.scalatest.matchers._
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.apache.camel.CamelContext
import org.apache.camel.Endpoint
import org.apache.camel.Exchange
import org.apache.camel.Processor
import org.apache.camel.Producer
import org.apache.camel.builder.RouteBuilder
import org.apache.camel.impl.DefaultCamelContext
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
@RunWith(classOf[JUnit4Runner])
class CamelSpec extends Spec with ShouldMatchers {
describe("A Camel routing scheme") {
it("dummy") {
}
/*
it("should route message from actor A to actor B") {
val latch = new CountDownLatch(1);
val conf = new ActiveObjectGuiceConfigurator
conf.configureActiveObjects(
RestartStrategy(AllForOne, 3, 5000),
Component(
"camelfoo",
classOf[CamelFoo],
classOf[CamelFooImpl],
LifeCycle(Permanent, 1000),
1000) ::
Component(
"camelbar",
classOf[CamelBar],
classOf[CamelBarImpl],
LifeCycle(Permanent, 1000),
1000) ::
Nil
).addRoutes(new RouteBuilder() {
def configure = {
from("akka:camelfoo.foo").to("akka:camelbar.bar")
from("akka:camelbar.bar").process(new Processor() {
def process(e: Exchange) = {
println("Received exchange: " + e.getIn())
latch.countDown
}
})
}}
).supervise
//val endpoint = conf.getRoutingEndpoint("akka:camelfoo.foo")
// println("----- " + endpoint)
// val exchange = endpoint.createExchange
// println("----- " + exchange)
conf.getActiveObject(classOf[CamelFooImpl].getName).asInstanceOf[CamelFoo].foo("Hello Foo")
//
// exchange.getIn().setHeader("cheese", 123)
// exchange.getIn().setBody("body")
//
// val producer = endpoint.createProducer
// println("----- " + producer)
//
// producer.process(exchange)
//
// // now lets sleep for a while
// val received = latch.await(5, TimeUnit.SECONDS)
// received should equal (true)
//
// conf.stop
}
*/
}
}
trait CamelFoo {
@oneway def foo(msg: String)
}
trait CamelBar {
def bar(msg: String): String
}
class CamelFooImpl extends CamelFoo {
def foo(msg: String) = println("CamelFoo.foo:" + msg)
}
class CamelBarImpl extends CamelBar {
def bar(msg: String) = msg + "return_bar "
}

View file

@ -4,6 +4,7 @@
package se.scalablesolutions.akka.kernel
import se.scalablesolutions.akka.kernel.config.ScalaConfig.{SupervisorConfig, Worker, LifeCycle, RestartStrategy, OneForOne, AllForOne, Permanent}
import scala.actors._
import scala.actors.Actor._
import scala.collection.Map

View file

@ -5,6 +5,9 @@
package se.scalablesolutions.akka.kernel
import com.jteigen.scalatest.JUnit4Runner
import config.ScalaConfig.{SupervisorConfig, RestartStrategy, Worker, LifeCycle, AllForOne, Permanent}
import org.junit.runner.RunWith
import org.scalatest._

Binary file not shown.

BIN
lib/cassandra-0.3.0-dev.jar Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

9
util-java/.classpath Normal file
View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="lib" path="target/akka-util-java-0.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/guice-core-2.0-SNAPSHOT.jar"/>
<classpathentry kind="lib" path="/Users/jboner/src/scala/akka/lib/guice-jsr250-2.0-SNAPSHOT.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>

17
util-java/.project Normal file
View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>util-java</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="Maven: org.guiceyfruit:guice-core:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: com.google.code.google-collections:google-collect:snapshot-20080530" level="project" />
<orderEntry type="library" exported="" name="Maven: cglib:cglib:2.2" level="project" />
<orderEntry type="library" exported="" name="Maven: asm:asm:3.1" level="project" />
<orderEntry type="library" exported="" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" exported="" name="Maven: org.guiceyfruit:guice-jsr250:2.0-SNAPSHOT" level="project" />
<orderEntry type="library" exported="" name="Maven: javax.annotation:jsr250-api:1.0" level="project" />
</component>
</module>

View file

@ -13,6 +13,19 @@
<version>${akka.version}</version>
</parent>
<dependencies>
<dependency>
<groupId>org.guiceyfruit</groupId>
<artifactId>guice-core</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.guiceyfruit</groupId>
<artifactId>guice-jsr250</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>

View file

@ -0,0 +1,30 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.config;
import java.util.List;
import com.google.inject.AbstractModule;
import com.google.inject.Singleton;
import com.google.inject.jsr250.ResourceProviderFactory;
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
public class ActiveObjectGuiceModule extends AbstractModule {
private final List<DependencyBinding> bindings;
public ActiveObjectGuiceModule(final List<DependencyBinding> bindings) {
this.bindings = bindings;
}
protected void configure() {
bind(ResourceProviderFactory.class);
for (int i = 0; i < bindings.size(); i++) {
final DependencyBinding db = bindings.get(i);
bind((Class) db.getInterface()).to((Class) db.getTarget()).in(Singleton.class);
}
}
}

View file

@ -0,0 +1,24 @@
/**
* Copyright (C) 2009 Scalable Solutions.
*/
package se.scalablesolutions.akka.kernel.config;
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
public class DependencyBinding {
private final Class intf;
private final Class target;
public DependencyBinding(final Class intf, final Class target) {
this.intf = intf;
this.target = target;
}
public Class getInterface() {
return intf;
}
public Class getTarget() {
return target;
}
}

View file

@ -1,12 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<module relativePaths="true" MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/../lib/guice-core-2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/../lib/guice-jsr250-2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>