mid jax-rs impl

This commit is contained in:
Jonas Boner 2009-05-18 08:19:30 +02:00
parent 8c8ba29afc
commit b38ac067cb
17 changed files with 512 additions and 558 deletions

761
akka.iws
View file

@ -2,25 +2,23 @@
<project relativePaths="false" version="4">
<component name="ChangeListManager">
<list default="true" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/akka-api-java.iml" afterPath="$PROJECT_DIR$/api-java/akka-api-java.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/JerseyFoo.java" afterPath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/JerseyFoo.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/PersistentStateTest.java" afterPath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/PersistentStateTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java" afterPath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/akka-kernel.iml" afterPath="$PROJECT_DIR$/kernel/akka-kernel.iml" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/web.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka.iml" afterPath="$PROJECT_DIR$/akka.iml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/JerseyFooImpl.java" afterPath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/JerseyFooImpl.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka.ipr" afterPath="$PROJECT_DIR$/akka.ipr" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectComponent.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectComponent.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/ActiveObjectGuiceConfiguratorTest.java" afterPath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/ActiveObjectGuiceConfiguratorTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/akka.iws" afterPath="$PROJECT_DIR$/akka.iws" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectConfigurator.scala" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/src/main/scala/config/CamelConfigurator.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/pom.xml" afterPath="$PROJECT_DIR$/kernel/pom.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/config/Config.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/config/Config.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProviderFactory.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProviderFactory.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/RestTest.java" afterPath="$PROJECT_DIR$/api-java/src/test/java/se/scalablesolutions/akka/api/RestTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/api-java/pom.xml" afterPath="$PROJECT_DIR$/api-java/pom.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectEndpoint.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectEndpoint.scala" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/src/main/scala/jersey/AkkaServlet.scala" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProviderFactory.scala" />
<change type="DELETED" beforePath="$PROJECT_DIR$/kernel/src/main/scala/AkkaComponentProvider.scala" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala" afterPath="$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/jersey/AkkaServlet.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/jersey/AkkaServlet.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectConfigurator.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectConfigurator.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/config/CamelConfigurator.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/config/CamelConfigurator.scala" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala" afterPath="$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala" />
</list>
<ignored path=".idea/workspace.xml" />
<ignored path="akka.iws" />
@ -40,7 +38,46 @@
</component>
<component name="DebuggerManager">
<line_breakpoints>
<breakpoint url="file://$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala" line="166" class="Class at ActiveObject.scala:166" package="">
<breakpoint url="file://$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala" line="167" class="Class at ActiveObject.scala:167" package="">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala" line="18" class="Class at ActiveObjectComponentProvider.scala:18" package="">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala" line="123" class="Class at ActiveObjectGuiceConfigurator.scala:121" package="">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/server/impl/uri/rules/ResourceClassRule.java" line="55" class="com.sun.jersey.server.impl.uri.rules.ResourceClassRule" package="com.sun.jersey.server.impl.uri.rules">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
@ -111,19 +148,37 @@
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="ActiveObjectGuiceConfigurator.scala" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala">
<file leaf-file-name="ActiveObjectConfigurator.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectConfigurator.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="130" column="27" selection-start="5976" selection-end="5976" vertical-scroll-proportion="4.16">
<state line="9" column="7" selection-start="199" selection-end="199" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ActiveObjectComponentProvider.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala">
<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="14" column="87" selection-start="442" selection-end="442" vertical-scroll-proportion="0.0">
<state line="39" column="53" selection-start="1464" selection-end="1464" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ActiveObject.scala" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/ActiveObject.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="42" column="7" selection-start="1375" selection-end="1375" vertical-scroll-proportion="0.6827881">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DefaultResourceConfig.java" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/api/core/DefaultResourceConfig.java">
<provider selected="true" editor-type-id="text-editor">
<state line="57" column="13" selection-start="2517" selection-end="2517" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -132,16 +187,45 @@
<file leaf-file-name="ActiveObjectComponentProviderFactory.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProviderFactory.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="6" selection-start="329" selection-end="329" vertical-scroll-proportion="0.0">
<state line="15" column="96" selection-start="670" selection-end="670" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CamelConfigurator.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/CamelConfigurator.scala">
<file leaf-file-name="WebApplicationFactory.java" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/spi/container/WebApplicationFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="7" selection-start="766" selection-end="766" vertical-scroll-proportion="0.0">
<state line="48" column="19" selection-start="2265" selection-end="2265" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WebApplicationImpl.java" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/server/impl/application/WebApplicationImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state line="712" column="34" selection-start="29186" selection-end="29186" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ActiveObjectComponentProvider.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="86" selection-start="50" selection-end="50" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ProviderServices.java" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.0.3/jersey-core-1.0.3-sources.jar!/com/sun/jersey/core/spi/component/ProviderServices.java">
<provider selected="true" editor-type-id="text-editor">
<state line="213" column="17" selection-start="7514" selection-end="7514" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -150,52 +234,7 @@
<file leaf-file-name="AkkaServlet.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/jersey/AkkaServlet.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="35" selection-start="534" selection-end="534" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CamelSpec.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/CamelSpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="26" selection-start="119" selection-end="119" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JerseySpec.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="21" selection-start="1012" selection-end="1012" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ActiveObjectComponent.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectComponent.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="8" column="0" selection-start="139" selection-end="139" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ActiveObjectEndpoint.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectEndpoint.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="87" selection-start="673" selection-end="673" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ActiveObjectConfigurator.scala" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectConfigurator.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="36" column="17" selection-start="1269" selection-end="1269" vertical-scroll-proportion="0.0">
<state line="2" column="46" selection-start="49" selection-end="49" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@ -261,256 +300,6 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: com.sun.jersey:jersey-server:1.0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jersey-server-1.0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: com.sun.jersey:jersey-server:1.0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jersey-server-1.0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="servlet" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="WebComponent" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: com.sun.jersey:jersey-server:1.0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jersey-server-1.0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="servlet" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ServletContainer" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: com.sun.jersey:jersey-server:1.0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jersey-server-1.0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="servlet" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: com.sun.jersey:jersey-server:1.0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jersey-server-1.0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="container" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: com.sun.jersey:jersey-server:1.0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jersey-server-1.0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="container" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="WebApplication" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: com.sun.jersey:jersey-server:1.0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jersey-server-1.0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="httpserver" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="HttpServerFactory" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: com.sun.jersey:jersey-server:1.0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jersey-server-1.0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="grizzly" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="GrizzlyWebContainerFactory" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-kernel" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Libraries" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.LibraryGroupNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Maven: com.sun.jersey:jersey-server:1.0.3" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.NamedLibraryElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="jersey-server-1.0.3.jar" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="grizzly" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
@ -788,6 +577,176 @@
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PersistentStateTest" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="InMemoryStateTest" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ActiveObjectGuiceConfiguratorTest" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="JerseyFooImpl" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="akka" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="akka-api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api-java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="api" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="JerseyFoo" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@ -1148,7 +1107,7 @@
<option name="MAIN_CLASS_NAME" value="se.scalablesolutions.akka.api.RestTest" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="" />
<option name="VM_PARAMETERS" value="-Djava.naming.factory.initial=org.apache.camel.util.jndi.CamelInitialContextFactory" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
@ -1171,14 +1130,14 @@
</method>
</configuration>
<list size="8">
<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" />
<item index="3" class="java.lang.String" itemvalue="JUnit.InMemoryStateTest" />
<item index="4" class="java.lang.String" itemvalue="JUnit.PersistentStateTest" />
<item index="5" class="java.lang.String" itemvalue="JUnit.ActiveObjectGuiceConfiguratorTest" />
<item index="6" class="java.lang.String" itemvalue="JUnit.JerseySpec" />
<item index="7" class="java.lang.String" itemvalue="JUnit.REST" />
<item index="0" class="java.lang.String" itemvalue="Application.Kernel" />
<item index="1" class="java.lang.String" itemvalue="JUnit.CamelSpec" />
<item index="2" class="java.lang.String" itemvalue="JUnit.InMemoryStateTest" />
<item index="3" class="java.lang.String" itemvalue="JUnit.PersistentStateTest" />
<item index="4" class="java.lang.String" itemvalue="JUnit.ActiveObjectGuiceConfiguratorTest" />
<item index="5" class="java.lang.String" itemvalue="JUnit.JerseySpec" />
<item index="6" class="java.lang.String" itemvalue="JUnit.REST" />
<item index="7" class="java.lang.String" itemvalue="Scala Console.Scala Console" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@ -1225,7 +1184,7 @@
</component>
<component name="ToolWindowManager">
<frame x="4" y="22" width="1436" height="878" extended-state="6" />
<editor active="true" />
<editor active="false" />
<layout>
<window_info id="Web Preview" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32908162" 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" />
@ -1233,11 +1192,11 @@
<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.3294881" sideWeight="0.59183675" 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.32780612" sideWeight="0.5" order="6" side_tool="false" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24585436" sideWeight="0.7410714" order="1" side_tool="false" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24585436" sideWeight="0.20535715" 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.3265306" 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.24873829" sideWeight="0.84143966" order="0" side_tool="false" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24873829" sideWeight="0.74165636" 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.25" 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="false" weight="0.25765306" 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.24945927" sideWeight="0.6875" order="1" side_tool="false" />
@ -1295,116 +1254,116 @@
</buildFile>
</component>
<component name="editorHistoryManager">
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/api/container/grizzly/GrizzlyWebContainerFactory.java">
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/server/impl/uri/rules/RightHandPathRule.java">
<provider selected="true" editor-type-id="text-editor">
<state line="35" column="6" selection-start="1907" selection-end="1907" vertical-scroll-proportion="0.0">
<state line="110" column="0" selection-start="4684" selection-end="4684" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/api/container/httpserver/HttpServerFactory.java">
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/api/core/ResourceConfig.java">
<provider selected="true" editor-type-id="text-editor">
<state line="285" column="17" selection-start="14248" selection-end="14248" vertical-scroll-proportion="0.0">
<state line="62" column="24" selection-start="2738" selection-end="2738" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/spi/container/WebApplication.java">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/Config.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="133" column="9" selection-start="5523" selection-end="5523" vertical-scroll-proportion="0.0">
<state line="35" column="13" selection-start="1149" selection-end="1149" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/spi/container/servlet/WebComponent.java">
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="308" column="32" selection-start="11175" selection-end="11175" vertical-scroll-proportion="0.0">
<state line="63" column="128" selection-start="1793" selection-end="1793" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/spi/container/servlet/ServletContainer.java">
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/server/impl/uri/rules/ResourceClassRule.java">
<provider selected="true" editor-type-id="text-editor">
<state line="226" column="51" selection-start="10184" selection-end="10184" vertical-scroll-proportion="-4.3076925">
<folding>
<element signature="imports" expanded="true" />
</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="7" column="14" selection-start="165" selection-end="165" 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="6" column="26" selection-start="119" selection-end="119" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/test/scala/JerseySpec.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="21" selection-start="1012" selection-end="1012" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectComponent.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="8" column="0" selection-start="139" selection-end="139" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/camel/ActiveObjectEndpoint.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="87" selection-start="673" selection-end="673" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectConfigurator.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="36" column="17" selection-start="1269" selection-end="1269" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="87" selection-start="442" selection-end="442" vertical-scroll-proportion="0.0">
<state line="55" column="0" selection-start="2411" selection-end="2411" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/jersey/AkkaServlet.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="35" selection-start="534" selection-end="534" vertical-scroll-proportion="0.0">
<state line="2" column="46" selection-start="49" selection-end="49" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/api/core/DefaultResourceConfig.java">
<provider selected="true" editor-type-id="text-editor">
<state line="57" column="13" selection-start="2517" selection-end="2517" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.0.3/jersey-core-1.0.3-sources.jar!/com/sun/jersey/core/spi/component/ProviderFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-core/1.0.3/jersey-core-1.0.3-sources.jar!/com/sun/jersey/core/spi/component/ProviderServices.java">
<provider selected="true" editor-type-id="text-editor">
<state line="213" column="17" selection-start="7514" selection-end="7514" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="86" selection-start="50" selection-end="50" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/jersey/ActiveObjectComponentProviderFactory.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="6" selection-start="329" selection-end="329" vertical-scroll-proportion="0.0">
<state line="15" column="96" selection-start="670" selection-end="670" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/CamelConfigurator.scala">
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/spi/container/WebApplicationFactory.java">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="7" selection-start="766" selection-end="766" vertical-scroll-proportion="0.0">
<state line="48" column="19" selection-start="2265" selection-end="2265" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/com/sun/jersey/jersey-server/1.0.3/jersey-server-1.0.3-sources.jar!/com/sun/jersey/server/impl/application/WebApplicationImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state line="712" column="34" selection-start="29186" selection-end="29186" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/kernel/src/main/scala/config/ActiveObjectConfigurator.scala">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="7" selection-start="199" selection-end="199" 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="130" column="27" selection-start="5976" selection-end="5976" vertical-scroll-proportion="4.16">
<state line="39" column="53" selection-start="1464" selection-end="1464" 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="42" column="7" selection-start="1375" selection-end="1375" vertical-scroll-proportion="0.6827881">
<folding />
</state>
</provider>

View file

@ -49,21 +49,21 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testGuiceActiveObjectInjection() {
messageLog = "";
Foo foo = conf.getActiveObject("foo");
Bar bar = conf.getActiveObject("bar");
Foo foo = conf.getActiveObject(Foo.class);
Bar bar = conf.getActiveObject(Bar.class);
assertTrue(foo.getBar().toString().equals(bar.toString()));
}
public void testGuiceExternalDependencyInjection() {
messageLog = "";
Bar bar = conf.getActiveObject("bar");
Bar bar = conf.getActiveObject(Bar.class);
Ext ext = conf.getExternalDependency(Ext.class);
assertTrue(bar.getExt().toString().equals(ext.toString()));
}
public void testLookupNonSupervisedInstance() {
try {
String str = conf.getActiveObject("string");
String str = conf.getActiveObject(String.class);
fail("exception should have been thrown");
} catch (Exception e) {
assertEquals("Class string has not been put under supervision (by passing in the config to the supervise() method", e.getMessage());
@ -72,7 +72,7 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testActiveObjectInvocation() throws InterruptedException {
messageLog = "";
Foo foo = conf.getActiveObject("foo");
Foo foo = conf.getActiveObject(Foo.class);
messageLog += foo.foo("foo ");
foo.bar("bar ");
messageLog += "before_bar ";
@ -82,8 +82,8 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testActiveObjectInvocationsInvocation() throws InterruptedException {
messageLog = "";
Foo foo = conf.getActiveObject("foo");
Bar bar = conf.getActiveObject("bar");
Foo foo = conf.getActiveObject(Foo.class);
Bar bar = conf.getActiveObject(Bar.class);
messageLog += foo.foo("foo ");
foo.bar("bar ");
messageLog += "before_bar ";
@ -94,7 +94,7 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testForcedTimeout() {
messageLog = "";
Foo foo = conf.getActiveObject("foo");
Foo foo = conf.getActiveObject(Foo.class);
try {
foo.longRunning();
fail("exception should have been thrown");
@ -104,7 +104,7 @@ public class ActiveObjectGuiceConfiguratorTest extends TestCase {
public void testForcedException() {
messageLog = "";
Foo foo = conf.getActiveObject("foo");
Foo foo = conf.getActiveObject(Foo.class);
try {
foo.throwsException();
fail("exception should have been thrown");

View file

@ -32,7 +32,7 @@ public class InMemoryStateTest extends TestCase {
}
public void testShouldNotRollbackStateForStatefulServerInCaseOfSuccess() {
InMemStateful stateful = conf.getActiveObject("inmem-stateful");
InMemStateful stateful = conf.getActiveObject(InMemStateful.class);
stateful.setState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init"); // set init state
stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state"); // transactional
stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state"); // to trigger commit
@ -40,9 +40,9 @@ public class InMemoryStateTest extends TestCase {
}
public void testShouldRollbackStateForStatefulServerInCaseOfFailure() {
InMemStateful stateful = conf.getActiveObject("inmem-stateful");
InMemStateful stateful = conf.getActiveObject(InMemStateful.class);
stateful.setState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init"); // set init state
InMemFailer failer = conf.getActiveObject("inmem-failer");
InMemFailer failer = conf.getActiveObject(InMemFailer.class);
try {
stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer); // call failing transactional method
fail("should have thrown an exception");

View file

@ -1,5 +1,12 @@
package se.scalablesolutions.akka.api;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
@Path("/foo")
public interface JerseyFoo {
@GET
@Produces({"application/json"})
public String foo();
}

View file

@ -4,10 +4,10 @@ import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
@Path("/foo")
//@Path("/foo")
public class JerseyFooImpl implements JerseyFoo {
@GET
@Produces({"application/json"})
//@GET
//@Produces({"application/json"})
public String foo() {
return "hello foo";
}

View file

@ -42,7 +42,7 @@ public class PersistentStateTest extends TestCase {
}
public void testShouldNotRollbackStateForStatefulServerInCaseOfSuccess() {
PersistentStateful stateful = conf.getActiveObject("persistent-stateful");
PersistentStateful stateful = conf.getActiveObject(PersistentStateful.class);
stateful.setState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init"); // set init state
stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state"); // transactional
stateful.success("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "new state"); // to trigger commit
@ -50,9 +50,9 @@ public class PersistentStateTest extends TestCase {
}
public void testShouldRollbackStateForStatefulServerInCaseOfFailure() {
PersistentStateful stateful = conf.getActiveObject("persistent-stateful");
PersistentStateful stateful = conf.getActiveObject(PersistentStateful.class);
stateful.setState("testShouldRollbackStateForStatefulServerInCaseOfFailure", "init"); // set init state
PersistentFailer failer = conf.getActiveObject("persistent-failer");
PersistentFailer failer = conf.getActiveObject(PersistentFailer.class);
try {
stateful.failure("testShouldRollbackStateForStatefulServerInCaseOfFailure", "new state", failer); // call failing transactional method
fail("should have thrown an exception");

View file

@ -8,8 +8,12 @@ import com.sun.jersey.api.container.grizzly.GrizzlyWebContainerFactory;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.grizzly.http.SelectorThread;
import com.sun.grizzly.http.servlet.ServletAdapter;
import com.sun.grizzly.tcp.Adapter;
import com.sun.grizzly.standalone.StaticStreamAlgorithm;
import javax.ws.rs.core.UriBuilder;
import javax.servlet.Servlet;
import org.junit.*;
import static org.junit.Assert.*;
@ -19,19 +23,33 @@ import java.io.IOException;
import java.net.URI;
import junit.framework.TestSuite;
import se.scalablesolutions.akka.kernel.config.ActiveObjectGuiceConfiguratorForJava;
import se.scalablesolutions.akka.kernel.config.JavaConfig;
public class RestTest extends TestSuite {
private static URI URI = UriBuilder.fromUri("http://localhost/").port(9998).build();
private static int PORT = 9998;
private static URI URI = UriBuilder.fromUri("http://localhost/").port(PORT).build();
private static SelectorThread selector = null;
private static ActiveObjectGuiceConfiguratorForJava conf = new ActiveObjectGuiceConfiguratorForJava();
@BeforeClass
public static void initialize() throws IOException {
conf.configureActiveObjects(
new JavaConfig.RestartStrategy(new JavaConfig.AllForOne(), 3, 5000),
new JavaConfig.Component[] {
new JavaConfig.Component(
"jersey-foo",
JerseyFoo.class,
JerseyFooImpl.class,
new JavaConfig.LifeCycle(new JavaConfig.Permanent(), 1000), 10000000)
}).inject().supervise();
selector = startJersey();
}
@AfterClass
public static void cleanup() throws IOException {
conf.stop();
selector.stopEndpoint();
System.exit(0);
}
@ -46,10 +64,27 @@ public class RestTest extends TestSuite {
selector.stopEndpoint();
}
private static SelectorThread startJersey() throws IOException {
Map initParams = new java.util.HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages", "se.scalablesolutions.akka.api");
//return GrizzlyWebContainerFactory.create(URI, initParams);
return GrizzlyWebContainerFactory.create(URI, se.scalablesolutions.akka.kernel.jersey.AkkaServlet.class);
private static SelectorThread startJersey() {
try {
ServletAdapter adapter = new ServletAdapter();
Servlet servlet = se.scalablesolutions.akka.kernel.jersey.AkkaServlet.class.newInstance();
adapter.setServletInstance(servlet);
adapter.setContextPath(URI.getPath());
return createGrizzlySelector(adapter, URI, PORT);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static SelectorThread createGrizzlySelector(Adapter adapter, URI uri, int port) throws IOException, InstantiationException {
final String scheme = uri.getScheme();
if (!scheme.equalsIgnoreCase("http"))
throw new IllegalArgumentException("The URI scheme, of the URI " + uri + ", must be equal (ignoring case) to 'http'");
final SelectorThread selectorThread = new SelectorThread();
selectorThread.setAlgorithmClassName(StaticStreamAlgorithm.class.getName());
selectorThread.setPort(port);
selectorThread.setAdapter(adapter);
selectorThread.listen();
return selectorThread;
}
}

View file

@ -135,6 +135,15 @@
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="aspectwerkz 2.1">
<CLASSES>
<root url="jar://$MODULE_DIR$/../lib/aspectwerkz-nodeps-jdk5-2.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>

View file

@ -84,12 +84,13 @@ object ActiveObject {
/**
* @author <a href="http://jonasboner.com">Jonas Bon&#233;r</a>
*/
// FIXME: use interface for ActiveObjectGuiceConfigurator
// FIXME: STM that allows concurrent updates, detects collision, rolls back and restarts
class ActiveObjectProxy(val intf: Class[_], val target: Class[_], val timeout: Int) extends InvocationHandler {
import ActiveObject.threadBoundTx
private[this] var activeTx: Option[Transaction] = None
private[this] var targetInstance: AnyRef = _
private[akka] var targetInstance: AnyRef = _
private[akka] def setTargetInstance(instance: AnyRef) = {
targetInstance = instance

View file

@ -29,12 +29,21 @@ trait ActiveObjectConfigurator {
* @param clazz the class for the active object
* @return the active object for the class
*/
def getActiveObject(clazz: Class[_]): AnyRef
def getActiveObject[T](clazz: Class[T]): T
def getActiveObjectProxy(clazz: Class[_]): ActiveObjectProxy
def getExternalDependency[T](clazz: Class[T]): T
def getComponentInterfaces: List[Class[_]]
def configureActiveObjects(restartStrategy: RestartStrategy, components: List[Component]): ActiveObjectConfigurator
def inject: ActiveObjectConfigurator
def supervise: ActiveObjectConfigurator
def reset
def stop
}

View file

@ -45,9 +45,8 @@ class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurator with CamelC
* @param clazz the class for the active object
* @return the active object for the class
*/
override def getActiveObject(clazz: Class[_]): AnyRef = synchronized {
//def getActiveObject[T](name: String): T = synchronized {
log.debug("Looking up active object [%s]", clazz.getName)
override def getActiveObject[T](clazz: Class[T]): T = synchronized {
log.debug("Creating new active object [%s]", clazz.getName)
if (injector == null) throw new IllegalStateException("inject() and/or supervise() must be called before invoking getActiveObject(clazz)")
val activeObjectOption: Option[Tuple3[Class[_], Class[_], ActiveObjectProxy]] = activeObjectRegistry.get(clazz)
if (activeObjectOption.isDefined) {
@ -58,7 +57,7 @@ class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurator with CamelC
val target = implClass.newInstance
injector.injectMembers(target)
activeObjectProxy.setTargetInstance(target.asInstanceOf[AnyRef])
activeObjectFactory.newInstance(intfClass, activeObjectProxy).asInstanceOf[AnyRef]
activeObjectFactory.newInstance(intfClass, activeObjectProxy).asInstanceOf[T]
} else throw new IllegalStateException("Class [" + clazz.getName + "] has not been put under supervision (by passing in the config to the 'supervise') method")
}
@ -74,6 +73,8 @@ class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurator with CamelC
injector.getInstance(clazz).asInstanceOf[T]
}
override def getComponentInterfaces: List[Class[_]] = components.map(_.intf)
override def getRoutingEndpoint(uri: String): Endpoint = synchronized {
camelContext.getEndpoint(uri)
}
@ -91,9 +92,9 @@ class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurator with CamelC
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))
val deps = new java.util.ArrayList[DependencyBinding](bindings.size)
for (b <- bindings) deps.add(b)
modules.add(new ActiveObjectGuiceModule(deps))
this
}

View file

@ -10,7 +10,7 @@ import akka.kernel.{Supervisor, ActiveObjectProxy, ActiveObjectFactory}
import com.google.inject._
import com.google.inject.jsr250.ResourceProviderFactory
import java.util.{ArrayList, HashMap, Collection}
import java.util._
import org.apache.camel.impl.{JndiRegistry, DefaultCamelContext}
import org.apache.camel.{Endpoint, Routes}
@ -18,138 +18,62 @@ 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)
}
*/
val INSTANCE = new ActiveObjectGuiceConfigurator
/**
* 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 getActiveObject[T](clazz: Class[T]): T = INSTANCE.getActiveObject(clazz)
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))
def configureActiveObjects(
restartStrategy: RestartStrategy, components: Array[Component]):
ActiveObjectGuiceConfiguratorForJava = {
INSTANCE.configureActiveObjects(
restartStrategy.transform,
components.toList.asInstanceOf[scala.List[Component]].map(_.transform))
this
}
def inject(): ActiveObjectGuiceConfiguratorForJava = synchronized {
if (injector != null) throw new IllegalStateException("inject() has already been called on this configurator")
injector = Guice.createInjector(modules)
def inject(): ActiveObjectGuiceConfiguratorForJava = {
INSTANCE.inject
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
def supervise: ActiveObjectGuiceConfiguratorForJava = {
INSTANCE.supervise
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)
def addExternalGuiceModule(module: Module): ActiveObjectGuiceConfiguratorForJava = {
INSTANCE.addExternalGuiceModule(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)
def addRoutes(routes: Routes): ActiveObjectGuiceConfiguratorForJava = {
INSTANCE.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 getComponentInterfaces: List[Class[_]] = {
val al = new ArrayList[Class[_]]
for (c <- INSTANCE.getComponentInterfaces) al.add(c)
al
}
def stop = synchronized {
//camelContext.stop
supervisor.stop
}
def getExternalDependency[T](clazz: Class[T]): T = INSTANCE.getExternalDependency(clazz)
def getRoutingEndpoint(uri: String): Endpoint = INSTANCE.getRoutingEndpoint(uri)
def getRoutingEndpoints: java.util.Collection[Endpoint] = INSTANCE.getRoutingEndpoints
def getRoutingEndpoints(uri: String): java.util.Collection[Endpoint] = INSTANCE.getRoutingEndpoints(uri)
def getGuiceModules: List[Module] = INSTANCE.getGuiceModules
def reset = INSTANCE.reset
def stop = INSTANCE.stop
}

View file

@ -29,7 +29,6 @@ trait CamelConfigurator {
def getRoutingEndpoint(uri: String): Endpoint
// F
def getRoutingEndpoints: java.util.Collection[Endpoint]
def getRoutingEndpoints(uri: String): java.util.Collection[Endpoint]

View file

@ -86,6 +86,8 @@ object JavaConfig {
@BeanProperty val target: Class[_],
@BeanProperty val lifeCycle: LifeCycle,
@BeanProperty val timeout: Int) extends Server {
def transform = se.scalablesolutions.akka.kernel.config.ScalaConfig.Component(
name, intf, target, lifeCycle.transform, timeout)
def newWorker(proxy: ActiveObjectProxy) =
se.scalablesolutions.akka.kernel.config.ScalaConfig.Worker(proxy.server, lifeCycle.transform)
}

View file

@ -4,18 +4,21 @@
package se.scalablesolutions.akka.kernel.jersey
import com.sun.jersey.core.spi.component.ioc.{IoCManagedComponentProvider, IoCFullyManagedComponentProvider, IoCInstantiatedComponentProvider, IoCComponentProvider}
import kernel.Logging
import config.ActiveObjectConfigurator
import com.sun.jersey.core.spi.component.ioc.IoCComponentProvider
import com.sun.jersey.core.spi.component.ComponentProvider
import java.lang.reflect.{Constructor, InvocationTargetException}
class ActiveObjectComponentProvider(val clazz: Class[_], val configurator: ActiveObjectConfigurator)
extends IoCComponentProvider with Logging {
extends IoCManagedComponentProvider with Logging {
override def getInstance: AnyRef = {
override def getInstance: AnyRef =
configurator.getActiveObject(clazz).asInstanceOf[AnyRef]
override def getInjectableInstance(obj: AnyRef): AnyRef = {
obj.asInstanceOf[ActiveObjectProxy].targetInstance
}
}

View file

@ -11,9 +11,7 @@ import config.ActiveObjectConfigurator
class ActiveObjectComponentProviderFactory(val configurator: ActiveObjectConfigurator)
extends IoCComponentProviderFactory {
override def getComponentProvider(clazz: Class[_]): ActiveObjectComponentProvider = {
new ActiveObjectComponentProvider(clazz, configurator)
}
override def getComponentProvider(clazz: Class[_]): ActiveObjectComponentProvider = getComponentProvider(null, clazz)
override def getComponentProvider(context: ComponentContext, clazz: Class[_]): ActiveObjectComponentProvider = {
new ActiveObjectComponentProvider(clazz, configurator)

View file

@ -4,16 +4,23 @@
package se.scalablesolutions.akka.kernel.jersey
import com.sun.jersey.api.core.ResourceConfig
import com.sun.jersey.api.core.{DefaultResourceConfig, ResourceConfig}
import com.sun.jersey.spi.container.servlet.ServletContainer
import com.sun.jersey.spi.container.WebApplication
import config.ActiveObjectConfigurator
import java.util.{HashSet, ArrayList}
class AkkaServlet extends ServletContainer {
override def initiate(rc: ResourceConfig, wa: WebApplication) = {
val configurator = ActiveObjectConfigurator.getConfiguratorFor(getServletContext)
wa.initiate(rc, new ActiveObjectComponentProviderFactory(configurator));
val configurator = ActiveObjectConfigurator.getConfiguratorFor(getServletContext);
val set = new HashSet[Class[_]]
for (c <- configurator.getComponentInterfaces) {
println("========== " + c)
set.add(c)
}
wa.initiate(
new DefaultResourceConfig(set),
new ActiveObjectComponentProviderFactory(configurator));
}
}