added integration tests, spring 3.0.1 and sbt
This commit is contained in:
parent
581b968d0f
commit
fe8e445f9d
10 changed files with 546 additions and 144 deletions
333
akka-spring/akka-spring-test-java/pom.xml
Executable file
333
akka-spring/akka-spring-test-java/pom.xml
Executable file
|
|
@ -0,0 +1,333 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<name>Akka Spring Tests in Java</name>
|
||||
<artifactId>akka-spring-test-java</artifactId>
|
||||
<groupId>se.scalablesolutions.akka</groupId>
|
||||
<version>0.7-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
<scala.version>2.7.7</scala.version>
|
||||
<atmosphere.version>0.5.2</atmosphere.version>
|
||||
<jersey.version>1.1.5</jersey.version>
|
||||
<grizzly.version>1.9.18-i</grizzly.version>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>project.embedded.module</id>
|
||||
<name>Project Embedded Repository</name>
|
||||
<url>file://${env.AKKA_HOME}/embedded-repo</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>repo1.maven</id>
|
||||
<name>Maven Main Repository</name>
|
||||
<url>http://repo1.maven.org/maven2</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>scala-tools-snapshots</id>
|
||||
<name>Scala-Tools Maven2 Snapshot Repository</name>
|
||||
<url>http://scala-tools.org/repo-snapshots</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>scala-tools</id>
|
||||
<name>Scala-Tools Maven2 Repository</name>
|
||||
<url>http://scala-tools.org/repo-releases</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>lag</id>
|
||||
<name>Configgy's' Repository</name>
|
||||
<url>http://www.lag.net/repo</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>multiverse-releases</id>
|
||||
<url>http://multiverse.googlecode.com/svn/maven-repository/releases</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>multiverse-snaphosts</id>
|
||||
<url>http://multiverse.googlecode.com/svn/maven-repository/snapshots</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>maven2-repository.dev.java.net</id>
|
||||
<name>Java.net Repository for Maven</name>
|
||||
<url>http://download.java.net/maven/2</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>java.net</id>
|
||||
<name>Java.net Legacy Repository for Maven</name>
|
||||
<url>http://download.java.net/maven/1</url>
|
||||
<layout>legacy</layout>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>guiceyfruit.release</id>
|
||||
<name>GuiceyFruit Release Repository</name>
|
||||
<url>http://guiceyfruit.googlecode.com/svn/repo/releases/</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
<releases>
|
||||
<enabled>true</enabled>
|
||||
</releases>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>guiceyfruit.snapshot</id>
|
||||
<name>GuiceyFruit Snapshot Repository</name>
|
||||
<url>http://guiceyfruit.googlecode.com/svn/repo/snapshots/</url>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
</snapshots>
|
||||
<releases>
|
||||
<enabled>false</enabled>
|
||||
</releases>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>guice-maven</id>
|
||||
<name>guice maven</name>
|
||||
<url>http://guice-maven.googlecode.com/svn/trunk</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>google-maven-repository</id>
|
||||
<name>Google Maven Repository</name>
|
||||
<url>http://google-maven-repository.googlecode.com/svn/repository/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>repository.codehaus.org</id>
|
||||
<name>Codehaus Maven Repository</name>
|
||||
<url>http://repository.codehaus.org</url>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>repository.jboss.org</id>
|
||||
<name>JBoss Repository for Maven</name>
|
||||
<url>http://repository.jboss.org/maven2</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>nexus.griddynamics.net</id>
|
||||
<name>Grid Dynamics Maven Repository</name>
|
||||
<url>https://nexus.griddynamics.net/nexus/content/groups/public</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>databinder.net/repo/</id>
|
||||
<name>dbDispatch Repository for Maven</name>
|
||||
<url>http://databinder.net/repo</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<!-- akka -->
|
||||
<dependency>
|
||||
<artifactId>akka-core</artifactId>
|
||||
<groupId>se.scalablesolutions.akka</groupId>
|
||||
<version>0.7-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<artifactId>akka-util</artifactId>
|
||||
<groupId>se.scalablesolutions.akka</groupId>
|
||||
<version>0.7-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<artifactId>akka-util-java</artifactId>
|
||||
<groupId>se.scalablesolutions.akka</groupId>
|
||||
<version>0.7-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<artifactId>akka-spring</artifactId>
|
||||
<groupId>se.scalablesolutions.akka</groupId>
|
||||
<version>0.7-SNAPSHOT</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<artifactId>spring</artifactId>
|
||||
<groupId>org.springframework</groupId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- spring -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-beans</artifactId>
|
||||
<version>3.0.1.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context</artifactId>
|
||||
<version>3.0.1.RELEASE</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.lag</groupId>
|
||||
<artifactId>configgy</artifactId>
|
||||
<version>1.4.7</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.aspectwerkz</groupId>
|
||||
<artifactId>aspectwerkz-nodeps-jdk5</artifactId>
|
||||
<version>2.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.aspectwerkz</groupId>
|
||||
<artifactId>aspectwerkz-jdk5</artifactId>
|
||||
<version>2.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.guiceyfruit</groupId>
|
||||
<artifactId>guice-core</artifactId>
|
||||
<version>2.0-beta-4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
<version>2.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
<version>2.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.multiverse</groupId>
|
||||
<artifactId>multiverse-alpha</artifactId>
|
||||
<version>0.4-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jboss.netty</groupId>
|
||||
<artifactId>netty</artifactId>
|
||||
<version>3.2.0.BETA1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.databinder</groupId>
|
||||
<artifactId>dispatch-json_2.7.7</artifactId>
|
||||
<version>0.6.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.databinder</groupId>
|
||||
<artifactId>dispatch-http_2.7.7</artifactId>
|
||||
<version>0.6.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>sjson.json</groupId>
|
||||
<artifactId>sjson</artifactId>
|
||||
<version>0.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>sbinary</groupId>
|
||||
<artifactId>sbinary</artifactId>
|
||||
<version>0.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.jackson</groupId>
|
||||
<artifactId>jackson-mapper-asl</artifactId>
|
||||
<version>1.2.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.codehaus.jackson</groupId>
|
||||
<artifactId>jackson-core-asl</artifactId>
|
||||
<version>1.2.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>voldemort.store.compress</groupId>
|
||||
<artifactId>h2-lzf</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.scala-tools</groupId>
|
||||
<artifactId>javautils</artifactId>
|
||||
<version>2.7.4-0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.scala-lang</groupId>
|
||||
<artifactId>scala-library</artifactId>
|
||||
<version>2.7.7</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.scala-lang</groupId>
|
||||
<artifactId>scala-library</artifactId>
|
||||
<version>2.7.7</version>
|
||||
</dependency>
|
||||
|
||||
<!-- test -->
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src/main/java</sourceDirectory>
|
||||
<testSourceDirectory>src/test/java</testSourceDirectory>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
<includes>
|
||||
<include>**/*</include>
|
||||
</includes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludes>
|
||||
<exclude>**/*Persistent*</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
<resources>
|
||||
<resource>
|
||||
<filtering>false</filtering>
|
||||
<directory>src/test/resources</directory>
|
||||
</resource>
|
||||
<resource>
|
||||
<filtering>false</filtering>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
<resource>
|
||||
<filtering>false</filtering>
|
||||
<directory>src/test/java</directory>
|
||||
<includes>
|
||||
<include>**</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>**/*.java</exclude>
|
||||
</excludes>
|
||||
</resource>
|
||||
</resources>
|
||||
</build>
|
||||
<reporting>
|
||||
<plugins></plugins>
|
||||
</reporting>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:akka="http://www.akkasource.org/schema/akka"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||
http://www.akkasource.org/schema/akka
|
||||
file:////Users/michaelkober/akka/akka-spring/src/main/resources/se/scalablesolutions/akka/spring/akka.xsd">
|
||||
|
||||
<bean id="wrappedService"
|
||||
class="se.scalablesolutions.akka.actor.ActiveObject"
|
||||
factory-method="newInstance">
|
||||
<constructor-arg index="0" type="java.lang.Class" value="se.scalablesolutions.akka.spring.foo.MyPojo"/>
|
||||
<constructor-arg index="1" value="1000"/>
|
||||
</bean>
|
||||
|
||||
<akka:active-object id="simple-active-object"
|
||||
target="se.scalablesolutions.akka.spring.foo.MyPojo"
|
||||
timeout="1000"/>
|
||||
|
||||
<akka:active-object id="simple-active-object-long-timeout"
|
||||
target="se.scalablesolutions.akka.spring.foo.MyPojo"
|
||||
timeout="10000"/>
|
||||
|
||||
<akka:active-object id="transactional-active-object"
|
||||
target="se.scalablesolutions.akka.spring.foo.MyPojo"
|
||||
timeout="2000"
|
||||
transactional="true"/>
|
||||
|
||||
<akka:active-object id="active-object-callbacks"
|
||||
target="se.scalablesolutions.akka.spring.foo.MyPojo"
|
||||
timeout="2000"
|
||||
transactional="true">
|
||||
<akka:restart-callbacks pre="preRestart" post="postRestart"/>
|
||||
</akka:active-object>
|
||||
|
||||
<akka:active-object id="remote-active-object"
|
||||
target="se.scalablesolutions.akka.spring.foo.MyPojo"
|
||||
timeout="2000"
|
||||
transactional="true">
|
||||
<akka:restart-callbacks pre="preRestart" post="postRestart"/>
|
||||
<akka:remote host="localhost" port="9999" />
|
||||
</akka:active-object>
|
||||
|
||||
<akka:active-object id="remote-service1" target="se.scalablesolutions.akka.spring.foo.MyPojo" timeout="1000">
|
||||
<akka:remote host="localhost" port="9999" />
|
||||
</akka:active-object>
|
||||
|
||||
<akka:supervision id="supervision1">
|
||||
<akka:restart-strategy failover="AllForOne" retries="3" timerange="1000">
|
||||
<akka:trap-exits>
|
||||
<akka:trap-exit>java.io.IOException</akka:trap-exit>
|
||||
<akka:trap-exit>java.lang.NullPointerException</akka:trap-exit>
|
||||
</akka:trap-exits>
|
||||
</akka:restart-strategy>
|
||||
<akka:active-objects>
|
||||
<akka:active-object target="se.scalablesolutions.akka.spring.foo.Foo" lifecycle="permanent" timeout="1000"/>
|
||||
<akka:active-object interface="se.scalablesolutions.akka.spring.foo.IBar" target="se.scalablesolutions.akka.spring.foo.Bar" lifecycle="permanent" timeout="1000"/>
|
||||
<akka:active-object target="se.scalablesolutions.akka.spring.foo.MyPojo" lifecycle="temporary" timeout="1000">
|
||||
<akka:restart-callbacks pre="preRestart" post="postRestart"/>
|
||||
</akka:active-object>
|
||||
</akka:active-objects>
|
||||
</akka:supervision>
|
||||
|
||||
<akka:supervision id="supervision2">
|
||||
<akka:restart-strategy failover="AllForOne" retries="3" timerange="5000">
|
||||
<akka:trap-exits>
|
||||
<akka:trap-exit>java.lang.Exception</akka:trap-exit>
|
||||
</akka:trap-exits>
|
||||
</akka:restart-strategy>
|
||||
<akka:active-objects>
|
||||
<akka:active-object target="se.scalablesolutions.akka.spring.foo.StatefulPojo" lifecycle="permanent" timeout="10000" transactional="true"/>
|
||||
</akka:active-objects>
|
||||
</akka:supervision>
|
||||
|
||||
</beans>
|
||||
|
|
@ -0,0 +1,120 @@
|
|||
package se.scalablesolutions.akka.spring;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
|
||||
import se.scalablesolutions.akka.config.ActiveObjectConfigurator;
|
||||
import se.scalablesolutions.akka.dispatch.FutureTimeoutException;
|
||||
import se.scalablesolutions.akka.config.Config;
|
||||
import se.scalablesolutions.akka.remote.RemoteNode;
|
||||
import se.scalablesolutions.akka.spring.foo.Foo;
|
||||
import se.scalablesolutions.akka.spring.foo.IBar;
|
||||
import se.scalablesolutions.akka.spring.foo.MyPojo;
|
||||
import se.scalablesolutions.akka.spring.foo.StatefulPojo;
|
||||
|
||||
/**
|
||||
* Tests for spring configuration of active objects and supervisor configuration.
|
||||
*/
|
||||
public class SpringConfigurationTest {
|
||||
|
||||
private ApplicationContext context = null;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
context = new ClassPathXmlApplicationContext("se/scalablesolutions/akka/spring/foo/test-config.xml");
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that the <akka:active-object/> and <akka:supervision/> element
|
||||
* can be used as a top level element.
|
||||
*/
|
||||
@Test
|
||||
public void testParse() throws Exception {
|
||||
final Resource CONTEXT = new ClassPathResource("se/scalablesolutions/akka/spring/foo/test-config.xml");
|
||||
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
|
||||
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
|
||||
reader.loadBeanDefinitions(CONTEXT);
|
||||
assertTrue(beanFactory.containsBeanDefinition("simple-active-object"));
|
||||
assertTrue(beanFactory.containsBeanDefinition("remote-active-object"));
|
||||
assertTrue(beanFactory.containsBeanDefinition("supervision1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleActiveObject() {
|
||||
MyPojo myPojo = (MyPojo) context.getBean("simple-active-object");
|
||||
String msg = myPojo.getFoo();
|
||||
msg += myPojo.getBar();
|
||||
assertEquals("wrong invocation order", "foobar", msg);
|
||||
}
|
||||
|
||||
@Test(expected=FutureTimeoutException.class)
|
||||
public void testSimpleActiveObject_Timeout() {
|
||||
MyPojo myPojo = (MyPojo) context.getBean("simple-active-object");
|
||||
myPojo.longRunning();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSimpleActiveObject_NoTimeout() {
|
||||
MyPojo myPojo = (MyPojo) context.getBean("simple-active-object-long-timeout");
|
||||
String msg = myPojo.longRunning();
|
||||
assertEquals("this took long", msg);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionalActiveObject() {
|
||||
MyPojo myPojo = (MyPojo) context.getBean("transactional-active-object");
|
||||
String msg = myPojo.getFoo();
|
||||
msg += myPojo.getBar();
|
||||
assertEquals("wrong invocation order", "foobar", msg);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoteActiveObject() {
|
||||
new Thread(new Runnable() {
|
||||
public void run() {
|
||||
RemoteNode.start();
|
||||
}
|
||||
}).start();
|
||||
try { Thread.currentThread().sleep(1000); } catch (Exception e) {}
|
||||
Config.config();
|
||||
|
||||
MyPojo myPojo = (MyPojo) context.getBean("remote-active-object");
|
||||
assertEquals("foo", myPojo.getFoo());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSupervision() {
|
||||
// get ActiveObjectConfigurator bean from spring context
|
||||
ActiveObjectConfigurator myConfigurator = (ActiveObjectConfigurator) context.getBean("supervision1");
|
||||
// get ActiveObjects
|
||||
Foo foo = myConfigurator.getInstance(Foo.class);
|
||||
assertNotNull(foo);
|
||||
IBar bar = myConfigurator.getInstance(IBar.class);
|
||||
assertNotNull(bar);
|
||||
MyPojo pojo = myConfigurator.getInstance(MyPojo.class);
|
||||
assertNotNull(pojo);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransactionalState() {
|
||||
ActiveObjectConfigurator conf = (ActiveObjectConfigurator) context.getBean("supervision2");
|
||||
StatefulPojo stateful = conf.getInstance(StatefulPojo.class);
|
||||
stateful.init();
|
||||
stateful.setMapState("testTransactionalState", "some map state");
|
||||
stateful.setVectorState("some vector state");
|
||||
stateful.setRefState("some ref state");
|
||||
assertEquals("some map state", stateful.getMapState("testTransactionalState"));
|
||||
assertEquals("some vector state", stateful.getVectorState());
|
||||
assertEquals("some ref state", stateful.getRefState());
|
||||
}
|
||||
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,76 +0,0 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>akka-spring</artifactId>
|
||||
<name>Akka Spring Integration</name>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<parent>
|
||||
<artifactId>akka</artifactId>
|
||||
<groupId>se.scalablesolutions.akka</groupId>
|
||||
<version>0.7-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
|
||||
|
||||
<dependencies>
|
||||
<!-- Core deps -->
|
||||
<dependency>
|
||||
<artifactId>akka-core</artifactId>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<artifactId>akka-util-java</artifactId>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<artifactId>akka-util</artifactId>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring</artifactId>
|
||||
<version>2.5.6</version>
|
||||
</dependency>
|
||||
<!--dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-core</artifactId>
|
||||
<version>3.0.1.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-beans</artifactId>
|
||||
<version>3.0.1.RELEASE</version>
|
||||
</dependency-->
|
||||
<dependency>
|
||||
<groupId>org.scala-lang</groupId>
|
||||
<artifactId>scala-library</artifactId>
|
||||
<version>${scala.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.scala-lang</groupId>
|
||||
<artifactId>scala-compiler</artifactId>
|
||||
<version>${scala.version}</version>
|
||||
</dependency>
|
||||
<!-- For Testing -->
|
||||
<dependency>
|
||||
<groupId>org.scalatest</groupId>
|
||||
<artifactId>scalatest</artifactId>
|
||||
<version>1.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
@ -16,7 +16,7 @@ import se.scalablesolutions.akka.config.ScalaConfig.RestartCallbacks
|
|||
* Factory bean for active objects.
|
||||
* @author michaelkober
|
||||
*/
|
||||
class ActiveObjectFactoryBean extends AbstractFactoryBean {
|
||||
class ActiveObjectFactoryBean extends AbstractFactoryBean[AnyRef] {
|
||||
import StringReflect._
|
||||
|
||||
@BeanProperty var target: String = ""
|
||||
|
|
@ -33,7 +33,7 @@ class ActiveObjectFactoryBean extends AbstractFactoryBean {
|
|||
/*
|
||||
* @see org.springframework.beans.factory.FactoryBean#getObjectType()
|
||||
*/
|
||||
def getObjectType = target.toClass
|
||||
def getObjectType: Class[AnyRef] = target.toClass
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -14,19 +14,19 @@ import reflect.BeanProperty
|
|||
* Factory bean for supervisor configuration.
|
||||
* @author michaelkober
|
||||
*/
|
||||
class SupervisionFactoryBean extends AbstractFactoryBean {
|
||||
class SupervisionFactoryBean extends AbstractFactoryBean[ActiveObjectConfigurator] {
|
||||
@BeanProperty var restartStrategy: RestartStrategy = _
|
||||
@BeanProperty var supervised: List[ActiveObjectProperties] = _
|
||||
|
||||
/*
|
||||
* @see org.springframework.beans.factory.FactoryBean#getObjectType()
|
||||
*/
|
||||
def getObjectType = classOf[ActiveObjectConfigurator]
|
||||
def getObjectType: Class[ActiveObjectConfigurator] = classOf[ActiveObjectConfigurator]
|
||||
|
||||
/*
|
||||
* @see org.springframework.beans.factory.config.AbstractFactoryBean#createInstance()
|
||||
*/
|
||||
def createInstance: AnyRef = {
|
||||
def createInstance: ActiveObjectConfigurator = {
|
||||
val configurator = new ActiveObjectConfigurator()
|
||||
|
||||
configurator.configure(
|
||||
|
|
|
|||
|
|
@ -1,62 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:akka="http://www.akkasource.org/schema/akka"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
|
||||
http://www.akkasource.org/schema/akka
|
||||
file:////../../main/resources/se/scalablesolutions/akka/spring/akka.xsd">
|
||||
|
||||
<bean id="wrappedService"
|
||||
class="se.scalablesolutions.akka.actor.ActiveObject"
|
||||
factory-method="newInstance">
|
||||
<constructor-arg index="0" type="java.lang.Class" value="foo.bar.MyPojo"/>
|
||||
<constructor-arg index="1" value="1000"/>
|
||||
</bean>
|
||||
|
||||
<akka:active-object id="active-object1"
|
||||
target="foo.bar.MyPojo"
|
||||
timeout="1000"/>
|
||||
|
||||
<akka:active-object id="service2"
|
||||
target="foo.bar.MyPojo"
|
||||
timeout="2000"
|
||||
transactional="true"/>
|
||||
|
||||
<akka:active-object id="service3"
|
||||
target="foo.bar.MyPojo"
|
||||
timeout="2000"
|
||||
transactional="true">
|
||||
<akka:restart-callbacks pre="preRestart"/>
|
||||
</akka:active-object>
|
||||
|
||||
<akka:active-object id="active-object2"
|
||||
target="foo.bar.MyPojo"
|
||||
timeout="2000"
|
||||
transactional="true">
|
||||
<akka:restart-callbacks pre="preRestartMethod" post="postRestartMethod"/>
|
||||
<akka:remote host="localhost" port="9998" />
|
||||
</akka:active-object>
|
||||
|
||||
<akka:active-object id="remote-service1" target="foo.bar.MyPojo" timeout="1000">
|
||||
<akka:remote host="localhost" port="9998" />
|
||||
</akka:active-object>
|
||||
|
||||
<akka:supervision id="supervision1">
|
||||
<akka:restart-strategy failover="AllForOne" retries="3" timerange="1000">
|
||||
<akka:trap-exits>
|
||||
<akka:trap-exit>java.io.IOException</akka:trap-exit>
|
||||
<akka:trap-exit>java.lang.NullPointerException</akka:trap-exit>
|
||||
</akka:trap-exits>
|
||||
</akka:restart-strategy>
|
||||
<akka:active-objects>
|
||||
<akka:active-object target="foo.bar.Foo" lifecycle="permanent" timeout="1000"/>
|
||||
<akka:active-object interface="foo.bar.Bar" target="foo.bar.BarImpl" lifecycle="permanent" timeout="1000"/>
|
||||
<akka:active-object target="foo.bar.SomeService" lifecycle="temporary" timeout="1000">
|
||||
<akka:restart-callbacks pre="preRestartMethod" post="postRestartMethod"/>
|
||||
</akka:active-object>
|
||||
</akka:active-objects>
|
||||
</akka:supervision>
|
||||
|
||||
|
||||
</beans>
|
||||
|
|
@ -85,6 +85,7 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) {
|
|||
lazy val akka_cluster = project("akka-cluster", "akka-cluster", new AkkaClusterParentProject(_))
|
||||
lazy val akka_kernel = project("akka-kernel", "akka-kernel", new AkkaKernelProject(_),
|
||||
akka_core, akka_rest, akka_persistence, akka_cluster, akka_amqp, akka_security, akka_comet, akka_patterns)
|
||||
lazy val akka_spring = project("akka-spring", "akka-spring", new AkkaSpringProject(_), akka_core, akka_util, akka_java_util)
|
||||
|
||||
// functional tests in java
|
||||
lazy val akka_fun_test = project("akka-fun-test-java", "akka-fun-test-java", new AkkaFunTestProject(_), akka_kernel)
|
||||
|
|
@ -119,7 +120,8 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) {
|
|||
" dist/akka-persistence-redis_%s-%s.jar".format(defScalaVersion.value, version) +
|
||||
" dist/akka-persistence-mongo_%s-%s.jar".format(defScalaVersion.value, version) +
|
||||
" dist/akka-persistence-cassandra_%s-%s.jar".format(defScalaVersion.value, version) +
|
||||
" dist/akka-kernel_%s-%s.jar".format(defScalaVersion.value, version)
|
||||
" dist/akka-kernel_%s-%s.jar".format(defScalaVersion.value, version) +
|
||||
" dist/akka-spring_%s-%s.jar".format(defScalaVersion.value, version)
|
||||
)
|
||||
|
||||
// ------------------------------------------------------------
|
||||
|
|
@ -284,6 +286,15 @@ class AkkaParent(info: ProjectInfo) extends DefaultProject(info) {
|
|||
lazy val dist = deployTask(info, distPath) dependsOn(`package`) describedAs("Deploying")
|
||||
}
|
||||
|
||||
class AkkaSpringProject(info: ProjectInfo) extends DefaultProject(info) {
|
||||
val spring_beans = "org.springframework" % "spring-beans" % "3.0.1.RELEASE"
|
||||
val spring_context = "org.springframework" % "spring-context" % "3.0.1.RELEASE"
|
||||
// testing
|
||||
val scalatest = "org.scalatest" % "scalatest" % "1.0" % "test"
|
||||
val junit = "junit" % "junit" % "4.5" % "test"
|
||||
lazy val dist = deployTask(info, distPath) dependsOn(`package`) describedAs("Deploying")
|
||||
}
|
||||
|
||||
// examples
|
||||
class AkkaFunTestProject(info: ProjectInfo) extends DefaultProject(info) {
|
||||
val protobuf = "com.google.protobuf" % "protobuf-java" % "2.2.0"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue