diff --git a/akka-spring/src/main/scala/ActiveObjectFactoryBean.scala b/akka-spring/src/main/scala/ActiveObjectFactoryBean.scala index e379041322..6f62c5a8c4 100644 --- a/akka-spring/src/main/scala/ActiveObjectFactoryBean.scala +++ b/akka-spring/src/main/scala/ActiveObjectFactoryBean.scala @@ -91,18 +91,18 @@ class ActiveObjectFactoryBean extends AbstractFactoryBean[AnyRef] with Logging w /** * Stop the active object if it is a singleton. - * It will call the instance destroy method before - * stopping the active object. */ override def destroyInstance(instance:AnyRef) { - for(method <- instance.getClass.getMethods) { - if(method.isAnnotationPresent(classOf[PreDestroy])) { - method.invoke(instance) - } - } ActiveObject.stop(instance) } - + + /** + * Invokes any method annotated with @PostConstruct + * When interfaces are specified, this method is invoked both on the + * target instance and on the active object, so a developer is free do decide + * where the annotation should be. If no interface is specified it is only invoked + * on the active object + */ private def postConstruct(ref:AnyRef) : AnyRef = { // Invoke postConstruct method if any for(method <- ref.getClass.getMethods) { diff --git a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/Pojo.java b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/Pojo.java index 3df506a290..04995b75c8 100644 --- a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/Pojo.java +++ b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/Pojo.java @@ -10,7 +10,6 @@ public class Pojo implements PojoInf,ApplicationContextAware { private String string; private boolean gotApplicationContext = false; - private boolean preDestroyInvoked = false; private boolean postConstructInvoked = false; public boolean gotApplicationContext() { @@ -28,19 +27,10 @@ public class Pojo implements PojoInf,ApplicationContextAware { return string; } - @PreDestroy - public void destroy(){ - preDestroyInvoked = true; - } @PostConstruct public void create() { postConstructInvoked = true; } - - - public boolean isPreDestroyInvoked() { - return preDestroyInvoked; - } public boolean isPostConstructInvoked() { return postConstructInvoked; diff --git a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/PojoInf.java b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/PojoInf.java index c4e3e55c47..70d64245db 100644 --- a/akka-spring/src/test/java/se/scalablesolutions/akka/spring/PojoInf.java +++ b/akka-spring/src/test/java/se/scalablesolutions/akka/spring/PojoInf.java @@ -7,12 +7,8 @@ public interface PojoInf { public String getString(); public boolean gotApplicationContext(); - public boolean isPreDestroyInvoked(); public boolean isPostConstructInvoked(); - @PreDestroy - public void destroy(); - @PostConstruct public void create(); } diff --git a/akka-spring/src/test/scala/ActiveObjectFactoryBeanTest.scala b/akka-spring/src/test/scala/ActiveObjectFactoryBeanTest.scala index 6a0b9701f6..68dac8e97c 100644 --- a/akka-spring/src/test/scala/ActiveObjectFactoryBeanTest.scala +++ b/akka-spring/src/test/scala/ActiveObjectFactoryBeanTest.scala @@ -76,8 +76,6 @@ class ActiveObjectFactoryBeanTest extends Spec with ShouldMatchers { assert(pojoInf.isPostConstructInvoked) assert(pojoInf.getString == "akka rocks") assert(pojoInf.gotApplicationContext) - ctx.close - assert(pojoInf.isPreDestroyInvoked) } it("should stop the created active object when scope is singleton and the context is closed") {