From 0ad6151dda0e74ba7fc169cb919f3f207700bf5c Mon Sep 17 00:00:00 2001 From: Jonas Boner Date: Wed, 20 May 2009 16:54:42 +0200 Subject: [PATCH] switched from DPs to AW proxy --- akka.iws | 538 ++++++++++++------ .../akka/api/InMemFailer.java | 5 + .../akka/api/InMemFailerImpl.java | 7 + .../akka/api/InMemStateful.java | 23 + .../akka/api/InMemStatefulImpl.java | 40 ++ .../akka/api/InMemoryStateTest.java | 74 +-- kernel/akka-kernel.iml | 4 +- kernel/pom.xml | 5 + kernel/src/main/scala/ActiveObject.scala | 113 ++-- kernel/src/main/scala/GenericServer.scala | 2 +- .../config/ActiveObjectConfigurator.scala | 2 - .../ActiveObjectGuiceConfigurator.scala | 52 +- ...ActiveObjectGuiceConfiguratorForJava.scala | 2 +- kernel/src/main/scala/config/Config.scala | 4 +- .../ActiveObjectComponentProvider.scala | 14 +- lib/aspectwerkz-nodeps-jdk5-2.1.jar | Bin 1849854 -> 1876429 bytes 16 files changed, 561 insertions(+), 324 deletions(-) create mode 100644 api-java/src/test/java/se/scalablesolutions/akka/api/InMemFailer.java create mode 100644 api-java/src/test/java/se/scalablesolutions/akka/api/InMemFailerImpl.java create mode 100644 api-java/src/test/java/se/scalablesolutions/akka/api/InMemStateful.java create mode 100644 api-java/src/test/java/se/scalablesolutions/akka/api/InMemStatefulImpl.java diff --git a/akka.iws b/akka.iws index 4ff0203169..03d248f4cb 100644 --- a/akka.iws +++ b/akka.iws @@ -1,23 +1,22 @@ - - - - + - + + + + - - - - + + + + - @@ -38,45 +37,6 @@ - - - - - - + + + + + + + + @@ -148,64 +160,91 @@ - - - - - - - - - - + - + - + - - + + - + - - + + - + - - + + - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -213,33 +252,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -300,6 +312,140 @@ - + @@ -1184,31 +1398,31 @@ - + - - + + - + - - + + - - + + - - + + @@ -1254,116 +1468,116 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + - + + + + + + + + diff --git a/api-java/src/test/java/se/scalablesolutions/akka/api/InMemFailer.java b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemFailer.java new file mode 100644 index 0000000000..ed985ee0df --- /dev/null +++ b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemFailer.java @@ -0,0 +1,5 @@ +package se.scalablesolutions.akka.api; + +public interface InMemFailer { + public void fail(); +} diff --git a/api-java/src/test/java/se/scalablesolutions/akka/api/InMemFailerImpl.java b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemFailerImpl.java new file mode 100644 index 0000000000..d8614f3850 --- /dev/null +++ b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemFailerImpl.java @@ -0,0 +1,7 @@ +package se.scalablesolutions.akka.api; + +public class InMemFailerImpl implements InMemFailer { + public void fail() { + throw new RuntimeException("expected"); + } +} diff --git a/api-java/src/test/java/se/scalablesolutions/akka/api/InMemStateful.java b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemStateful.java new file mode 100644 index 0000000000..4358ce1c05 --- /dev/null +++ b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemStateful.java @@ -0,0 +1,23 @@ +package se.scalablesolutions.akka.api; + +import se.scalablesolutions.akka.annotation.transactional; + +public interface InMemStateful { + // transactional + @transactional + public void success(String key, String msg); + + @transactional + public void failure(String key, String msg, InMemFailer failer); + + //@transactional + //public void clashOk(String key, String msg, InMemClasher clasher); + + //@transactional + //public void clashNotOk(String key, String msg, InMemClasher clasher); + + // non-transactional + public String getState(String key); + + public void setState(String key, String value); +} diff --git a/api-java/src/test/java/se/scalablesolutions/akka/api/InMemStatefulImpl.java b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemStatefulImpl.java new file mode 100644 index 0000000000..31420012fe --- /dev/null +++ b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemStatefulImpl.java @@ -0,0 +1,40 @@ +package se.scalablesolutions.akka.api; + +import se.scalablesolutions.akka.annotation.state; +import se.scalablesolutions.akka.kernel.TransactionalMap; +import se.scalablesolutions.akka.kernel.InMemoryTransactionalMap; + +public class InMemStatefulImpl implements InMemStateful { + @state + private TransactionalMap state = new InMemoryTransactionalMap(); + + public String getState(String key) { + return state.get(key).get(); + } + + public void setState(String key, String msg) { + state.put(key, msg); + } + + public void success(String key, String msg) { + state.put(key, msg); + } + + public void failure(String key, String msg, InMemFailer failer) { + state.put(key, msg); + failer.fail(); + } + + /* + public void clashOk(String key, String msg, InMemClasher clasher) { + state.put(key, msg); + clasher.clash(); + } + + public void clashNotOk(String key, String msg, InMemClasher clasher) { + state.put(key, msg); + clasher.clash(); + this.success("clash", "clash"); + } + */ +} \ No newline at end of file diff --git a/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java index 488ab3e375..00b5514b1c 100755 --- a/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java +++ b/api-java/src/test/java/se/scalablesolutions/akka/api/InMemoryStateTest.java @@ -20,17 +20,18 @@ public class InMemoryStateTest extends TestCase { protected void setUp() { conf.configureActiveObjects( new RestartStrategy(new AllForOne(), 3, 5000), - new Component[] { + new Component[] { + // FIXME: remove string-name, add ctor to only accept target class new Component("inmem-stateful", InMemStateful.class, InMemStatefulImpl.class, new LifeCycle(new Permanent(), 1000), 10000000), - new Component("inmem-failer", InMemFailer.class, InMemFailerImpl.class, new LifeCycle(new Permanent(), 1000), 1000), - new Component("inmem-clasher", InMemClasher.class, InMemClasherImpl.class, new LifeCycle(new Permanent(), 1000), 100000) + new Component("inmem-failer", InMemFailer.class, InMemFailerImpl.class, new LifeCycle(new Permanent(), 1000), 1000) + //new Component("inmem-clasher", InMemClasher.class, InMemClasherImpl.class, new LifeCycle(new Permanent(), 1000), 100000) }).inject().supervise(); } protected void tearDown() { conf.stop(); } - + public void testShouldNotRollbackStateForStatefulServerInCaseOfSuccess() { InMemStateful stateful = conf.getActiveObject(InMemStateful.class); stateful.setState("testShouldNotRollbackStateForStatefulServerInCaseOfSuccess", "init"); // set init state @@ -82,69 +83,7 @@ public class InMemoryStateTest extends TestCase { // } } -interface InMemStateful { - // transactional - @transactional - public void success(String key, String msg); - - @transactional - public void failure(String key, String msg, InMemFailer failer); - - @transactional - public void clashOk(String key, String msg, InMemClasher clasher); - - @transactional - public void clashNotOk(String key, String msg, InMemClasher clasher); - - // non-transactional - public String getState(String key); - - public void setState(String key, String value); -} - -class InMemStatefulImpl implements InMemStateful { - @state - private TransactionalMap state = new InMemoryTransactionalMap(); - - public String getState(String key) { - return state.get(key).get(); - } - - public void setState(String key, String msg) { - state.put(key, msg); - } - - public void success(String key, String msg) { - state.put(key, msg); - } - - public void failure(String key, String msg, InMemFailer failer) { - state.put(key, msg); - failer.fail(); - } - - public void clashOk(String key, String msg, InMemClasher clasher) { - state.put(key, msg); - clasher.clash(); - } - - public void clashNotOk(String key, String msg, InMemClasher clasher) { - state.put(key, msg); - clasher.clash(); - this.success("clash", "clash"); - } -} - -interface InMemFailer { - public void fail(); -} - -class InMemFailerImpl implements InMemFailer { - public void fail() { - throw new RuntimeException("expected"); - } -} - +/* interface InMemClasher { public void clash(); @@ -183,3 +122,4 @@ class InMemClasherImpl implements InMemClasher { // try { Thread.sleep(1000); } catch (InterruptedException e) {} } } +*/ diff --git a/kernel/akka-kernel.iml b/kernel/akka-kernel.iml index 2af3d27ef6..e6c8ae4520 100644 --- a/kernel/akka-kernel.iml +++ b/kernel/akka-kernel.iml @@ -141,7 +141,9 @@ - + + + diff --git a/kernel/pom.xml b/kernel/pom.xml index 7a25634c7d..e9634f2d61 100755 --- a/kernel/pom.xml +++ b/kernel/pom.xml @@ -25,6 +25,11 @@ scala-library ${scala.version} + + org.codehaus.aspectwerkz + aspectwerkz-nodeps-jdk5 + 2.1 + net.lag configgy diff --git a/kernel/src/main/scala/ActiveObject.scala b/kernel/src/main/scala/ActiveObject.scala index dc62d0e98a..a87148be9e 100755 --- a/kernel/src/main/scala/ActiveObject.scala +++ b/kernel/src/main/scala/ActiveObject.scala @@ -9,7 +9,10 @@ import config.ActiveObjectGuiceConfigurator import config.ScalaConfig._ import java.util.{List => JList, ArrayList} -import java.lang.reflect.{Method, Field, InvocationHandler, Proxy, InvocationTargetException} +import java.lang.reflect.{Method, Field} +import org.codehaus.aspectwerkz.intercept.{Advisable, AroundAdvice} +import org.codehaus.aspectwerkz.joinpoint.{MethodRtti, JoinPoint} +import org.codehaus.aspectwerkz.proxy.Proxy import java.lang.annotation.Annotation import org.apache.camel.{Processor, Exchange} @@ -31,7 +34,13 @@ object Annotations { * @author Jonas Bonér */ class ActiveObjectFactory { - def newInstance[T](intf: Class[_], proxy: ActiveObjectProxy): T = ActiveObject.newInstance(intf, proxy) + def newInstance[T](target: Class[T], server: GenericServerContainer): T = { + ActiveObject.newInstance(target, server) + } + + def newInstance[T](intf: Class[T], target: AnyRef, server: GenericServerContainer): T = { + ActiveObject.newInstance(intf, target, server) + } def supervise(restartStrategy: RestartStrategy, components: JList[Worker]): Supervisor = ActiveObject.supervise(restartStrategy, components.toArray.toList.asInstanceOf[List[Worker]]) @@ -49,18 +58,17 @@ object ActiveObject { tl } - def newInstance[T](intf: Class[_], proxy: ActiveObjectProxy): T = { - Proxy.newProxyInstance( - intf.getClassLoader, - Array(intf), - proxy).asInstanceOf[T] + def newInstance[T](target: Class[T], server: GenericServerContainer): T = { + val proxy = Proxy.newInstance(target, false, true) + // FIXME switch to weaving in the aspect at compile time + proxy.asInstanceOf[Advisable].aw_addAdvice("execution(* *.*(..))", new ActorAroundAdvice(target, proxy, server)) + proxy.asInstanceOf[T] } - def newInstance[T](intf: Class[_], target: AnyRef, timeout: Int): T = { - val proxy = new ActiveObjectProxy(intf, target.getClass, timeout) - proxy.setTargetInstance(target) - supervise(proxy) - newInstance(intf, proxy) + def newInstance[T](intf: Class[T], target: AnyRef, server: GenericServerContainer): T = { + val proxy = Proxy.newInstance(Array(intf), Array(target), false, true) + proxy.asInstanceOf[Advisable].aw_addAdvice("execution(* *.*(..))", new ActorAroundAdvice(intf, target, server)) + proxy.asInstanceOf[T] } def supervise(restartStrategy: RestartStrategy, components: List[Worker]): Supervisor = { @@ -72,13 +80,15 @@ object ActiveObject { supervisor } - private def supervise(proxy: ActiveObjectProxy): Supervisor = + /* + private def supervise(proxy: AnyRef): Supervisor = supervise( RestartStrategy(OneForOne, 5, 1000), Worker( proxy.server, LifeCycle(Permanent, 100)) :: Nil) + */ } /** @@ -86,25 +96,21 @@ object ActiveObject { */ // 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 { +sealed class ActorAroundAdvice(target: Class[_], + targetInstance: AnyRef, + val server: GenericServerContainer) extends AroundAdvice { + val (maps, vectors, refs) = getTransactionalItemsFor(targetInstance) + server.transactionalRefs = refs + server.transactionalMaps = maps + server.transactionalVectors = vectors + import ActiveObject.threadBoundTx - private[this] var activeTx: Option[Transaction] = None - private[akka] var targetInstance: AnyRef = _ - - private[akka] def setTargetInstance(instance: AnyRef) = { - targetInstance = instance - val (maps, vectors, refs) = getTransactionalItemsFor(targetInstance) - server.transactionalRefs = refs - server.transactionalMaps = maps - server.transactionalVectors = vectors - } - - private[akka] val server = new GenericServerContainer(intf.getName, () => new Dispatcher(target.getName)) - server.setTimeout(timeout) - - def invoke(proxy: AnyRef, m: Method, args: Array[AnyRef]): AnyRef = { - if (m.isAnnotationPresent(Annotations.transactional)) { + + def invoke(joinpoint: JoinPoint): AnyRef = { + // FIXME: switch to using PCD annotation matching, break out into its own aspect + switch to StaticJoinPoint + val method = joinpoint.getRtti.asInstanceOf[MethodRtti].getMethod + if (method.isAnnotationPresent(Annotations.transactional)) { if (activeTx.isDefined) { val tx = activeTx.get //val cflowTx = threadBoundTx.get @@ -128,22 +134,23 @@ class ActiveObjectProxy(val intf: Class[_], val target: Class[_], val timeout: I activeTx = Some(currentTx) } activeTx = threadBoundTx.get - invoke(Invocation(m, args, targetInstance, activeTx)) + invoke(joinpoint, activeTx) + //invoke(Invocation(method, joinpoint.getRtti.asInstanceOf[MethodRtti].getParameterValues, targetInstance, activeTx)) } - private def invoke(invocation: Invocation): AnyRef = { + private def invoke(joinpoint: JoinPoint, tx: Option[Transaction]): AnyRef = { val result: AnyRef = /* - if (invocation.target.isInstanceOf[MessageDriven] && - invocation.method.getName == "onMessage") { - val m = invocation.method + if (joinpoint.target.isInstanceOf[MessageDriven] && + joinpoint.method.getName == "onMessage") { + val m = joinpoint.method val endpointName = m.getDeclaringClass.getName + "." + m.getName val activeObjectName = m.getDeclaringClass.getName val endpoint = conf.getRoutingEndpoint(conf.lookupUriFor(m)) val producer = endpoint.createProducer val exchange = endpoint.createExchange - exchange.getIn().setBody(invocation) + exchange.getIn().setBody(joinpoint) producer.process(exchange) val fault = exchange.getException(); if (fault != null) throw new InvocationTargetException(fault) @@ -151,20 +158,22 @@ class ActiveObjectProxy(val intf: Class[_], val target: Class[_], val timeout: I // FIXME: need some timeout and future here... exchange.getOut.getBody - } else */ - if (invocation.method.isAnnotationPresent(Annotations.oneway)) { - server ! invocation + } else */ + // FIXME: switch to using PCD annotation matching, break out into its own aspect + switch to StaticJoinPoint + if (joinpoint.getRtti.asInstanceOf[MethodRtti].getMethod.isAnnotationPresent(Annotations.oneway)) { + server ! (tx, joinpoint) } else { val result: ErrRef[AnyRef] = - server !!! (invocation, { + server !!! ((tx, joinpoint), { var ref = ErrRef(activeTx) - ref() = throw new ActiveObjectInvocationTimeoutException("Invocation to active object [" + targetInstance.getClass.getName + "] timed out after " + timeout + " milliseconds") + ref() = throw new ActiveObjectInvocationTimeoutException("Invocation to active object [" + targetInstance.getClass.getName + "] timed out after " + server.timeout + " milliseconds") ref }) try { result() } catch { case e => + println("$$$$$$$$$$$$$$ " + joinpoint) rollback(result.tx) throw e } @@ -188,19 +197,19 @@ class ActiveObjectProxy(val intf: Class[_], val target: Class[_], val timeout: I var vectors: List[TransactionalVector[_]] = Nil var refs: List[TransactionalRef[_]] = Nil for { - field <- target.getDeclaredFields.toArray.toList.asInstanceOf[List[Field]] + field <- targetInstance.getClass.getDeclaredFields.toArray.toList.asInstanceOf[List[Field]] fieldType = field.getType if fieldType == classOf[TransactionalMap[_, _]] || - fieldType == classOf[TransactionalVector[_]] || - fieldType == classOf[TransactionalRef[_]] + fieldType == classOf[TransactionalVector[_]] || + fieldType == classOf[TransactionalRef[_]] txItem = { field.setAccessible(true) field.get(targetInstance) } if txItem != null } { - if (txItem.isInstanceOf[TransactionalMap[_, _]]) maps ::= txItem.asInstanceOf[TransactionalMap[_, _]] - else if (txItem.isInstanceOf[TransactionalRef[_]]) refs ::= txItem.asInstanceOf[TransactionalRef[_]] + if (txItem.isInstanceOf[TransactionalMap[_, _]]) maps ::= txItem.asInstanceOf[TransactionalMap[_, _]] + else if (txItem.isInstanceOf[TransactionalRef[_]]) refs ::= txItem.asInstanceOf[TransactionalRef[_]] else if (txItem.isInstanceOf[TransactionalVector[_]]) vectors ::= txItem.asInstanceOf[TransactionalVector[_]] } (maps, vectors, refs) @@ -215,14 +224,11 @@ class ActiveObjectProxy(val intf: Class[_], val target: Class[_], val timeout: I private[kernel] class Dispatcher(val targetName: String) extends GenericServer { override def body: PartialFunction[Any, Unit] = { - case invocation: Invocation => - val tx = invocation.tx + case (tx: Option[Transaction], joinpoint: JoinPoint) => ActiveObject.threadBoundTx.set(tx) try { - reply(ErrRef(invocation.invoke, tx)) + reply(ErrRef(joinpoint.proceed, tx)) } catch { - case e: InvocationTargetException => - val ref = ErrRef(tx); ref() = throw e.getTargetException; reply(ref) case e => val ref = ErrRef(tx); ref() = throw e; reply(ref) } @@ -254,7 +260,10 @@ private[kernel] case class Invocation(val method: Method, method.setAccessible(true) def invoke: AnyRef = synchronized { - method.invoke(target, args:_*) + println("======== " + this.toString) + if (method.getDeclaringClass.isInterface) { + target.getClass.getDeclaredMethod(method.getName, method.getParameterTypes).invoke(target, args:_*) + } else method.invoke(target, args:_*) } override def toString: String = synchronized { diff --git a/kernel/src/main/scala/GenericServer.scala b/kernel/src/main/scala/GenericServer.scala index 8b76df839d..9ecf942619 100644 --- a/kernel/src/main/scala/GenericServer.scala +++ b/kernel/src/main/scala/GenericServer.scala @@ -94,7 +94,7 @@ class GenericServerContainer( private var server: GenericServer = _ private var currentConfig: Option[AnyRef] = None - private var timeout = 5000 + private[kernel] var timeout = 5000 // TODO: see if we can parameterize class and add type safe getActor method //class GenericServerContainer[T <: GenericServer](var factory: () => T) { diff --git a/kernel/src/main/scala/config/ActiveObjectConfigurator.scala b/kernel/src/main/scala/config/ActiveObjectConfigurator.scala index 93b115b758..d48690a33f 100644 --- a/kernel/src/main/scala/config/ActiveObjectConfigurator.scala +++ b/kernel/src/main/scala/config/ActiveObjectConfigurator.scala @@ -31,8 +31,6 @@ trait ActiveObjectConfigurator { */ def getActiveObject[T](clazz: Class[T]): T - def getActiveObjectProxy(clazz: Class[_]): ActiveObjectProxy - def getExternalDependency[T](clazz: Class[T]): T def getComponentInterfaces: List[Class[_]] diff --git a/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala b/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala index 1463cb7630..6b0732f015 100644 --- a/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala +++ b/kernel/src/main/scala/config/ActiveObjectGuiceConfigurator.scala @@ -16,9 +16,7 @@ import org.apache.camel.{CamelContext, Endpoint, Routes} import scala.collection.mutable.HashMap import kernel.camel.ActiveObjectComponent -import kernel.ActiveObjectFactory -import kernel.ActiveObjectProxy -import kernel.Supervisor +import kernel.{ActiveObjectFactory, Supervisor} import kernel.config.ScalaConfig._ /** @@ -33,7 +31,7 @@ class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurator with CamelC 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[Class[_], Tuple3[Class[_], Class[_], ActiveObjectProxy]] + private var activeObjectRegistry = new HashMap[Class[_], Tuple2[Component, GenericServerContainer]] private var activeObjectFactory = new ActiveObjectFactory private var camelContext = new DefaultCamelContext private var modules = new java.util.ArrayList[Module] @@ -48,19 +46,22 @@ class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurator with CamelC 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) + val activeObjectOption: Option[Tuple2[Component, GenericServerContainer]] = activeObjectRegistry.get(clazz) if (activeObjectOption.isDefined) { - val classInfo = activeObjectOption.get - val intfClass = classInfo._1 - val implClass = classInfo._2 - val activeObjectProxy = classInfo._3 - val target = implClass.newInstance - injector.injectMembers(target) - activeObjectProxy.setTargetInstance(target.asInstanceOf[AnyRef]) - activeObjectFactory.newInstance(intfClass, activeObjectProxy).asInstanceOf[T] + val (component, server) = activeObjectOption.get + server.setTimeout(component.timeout) + val proxy = if (component.intf == null) { // subclassing proxy + activeObjectFactory.newInstance(component.target, server).asInstanceOf[T] + } else { // delegating proxy + component.target.getConstructor(Array[Class[_]]()).setAccessible(true) + val targetInstance = component.target.newInstance.asInstanceOf[AnyRef] // TODO: perhaps need to put in registry + activeObjectFactory.newInstance(component.intf, targetInstance, server).asInstanceOf[T] + } + injector.injectMembers(proxy) + proxy } else throw new IllegalStateException("Class [" + clazz.getName + "] has not been put under supervision (by passing in the config to the 'supervise') method") } - + /* override def getActiveObjectProxy(clazz: Class[_]): ActiveObjectProxy = synchronized { log.debug("Looking up active object proxy [%s]", clazz.getName) if (injector == null) throw new IllegalStateException("inject() and/or supervise() must be called before invoking getActiveObjectProxy(clazz)") @@ -68,7 +69,7 @@ class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurator with CamelC if (activeObjectOption.isDefined) activeObjectOption.get._3 else throw new IllegalStateException("Class [" + clazz.getName + "] has not been put under supervision (by passing in the config to the 'supervise') method") } - + */ override def getExternalDependency[T](clazz: Class[T]): T = synchronized { injector.getInstance(clazz).asInstanceOf[T] } @@ -108,19 +109,18 @@ class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurator with CamelC if (injector == null) inject var workers = new java.util.ArrayList[Worker] for (component <- components) { - val activeObjectProxy = new ActiveObjectProxy(component.intf, component.target, component.timeout) - workers.add(Worker(activeObjectProxy.server, component.lifeCycle)) - activeObjectRegistry.put(component.intf, (component.intf, component.target, activeObjectProxy)) - camelContext.getRegistry.asInstanceOf[JndiRegistry].bind(component.name, activeObjectProxy) - for (method <- component.intf.getDeclaredMethods.toList) { - registerMethodForUri(method, component.name) - } + val target = if (component.intf != null) component.intf // TODO: use Option + else component.target + val server = new GenericServerContainer(target.getName, () => new Dispatcher(component.target.getName)) + activeObjectRegistry.put(target, (component, server)) + workers.add(Worker(server, component.lifeCycle)) + //camelContext.getRegistry.asInstanceOf[JndiRegistry].bind(component.name, activeObjectProxy) + for (method <- component.intf.getDeclaredMethods.toList) registerMethodForUri(method, component.name) log.debug("Registering active object in Camel context under the name [%s]", component.target.getName) } supervisor = activeObjectFactory.supervise(restartStrategy, workers) - camelContext.addComponent(AKKA_CAMEL_ROUTING_SCHEME, new ActiveObjectComponent(this)) - camelContext.start - + //camelContext.addComponent(AKKA_CAMEL_ROUTING_SCHEME, new ActiveObjectComponent(this)) + //camelContext.start ActiveObjectConfigurator.registerConfigurator(this) this } @@ -154,7 +154,7 @@ class ActiveObjectGuiceConfigurator extends ActiveObjectConfigurator with CamelC def reset = synchronized { modules = new java.util.ArrayList[Module] configRegistry = new HashMap[Class[_], Component] - activeObjectRegistry = new HashMap[Class[_], Tuple3[Class[_], Class[_], ActiveObjectProxy]] + activeObjectRegistry = new HashMap[Class[_], Tuple2[Component, GenericServerContainer]] methodToUriRegistry = new HashMap[Method, String] injector = null restartStrategy = null diff --git a/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala b/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala index 2ad74931f2..68da4fe643 100644 --- a/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala +++ b/kernel/src/main/scala/config/ActiveObjectGuiceConfiguratorForJava.scala @@ -5,7 +5,7 @@ package se.scalablesolutions.akka.kernel.config import akka.kernel.config.JavaConfig._ -import akka.kernel.{Supervisor, ActiveObjectProxy, ActiveObjectFactory} +import akka.kernel.{Supervisor, ActiveObjectFactory} import com.google.inject._ import com.google.inject.jsr250.ResourceProviderFactory diff --git a/kernel/src/main/scala/config/Config.scala b/kernel/src/main/scala/config/Config.scala index 0b5b593f53..4eeb106b3b 100644 --- a/kernel/src/main/scala/config/Config.scala +++ b/kernel/src/main/scala/config/Config.scala @@ -88,8 +88,8 @@ object JavaConfig { @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) + def newWorker(server: GenericServerContainer) = + se.scalablesolutions.akka.kernel.config.ScalaConfig.Worker(server, lifeCycle.transform) } } \ No newline at end of file diff --git a/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala b/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala index 6ef9560a55..bae4bd5f2c 100644 --- a/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala +++ b/kernel/src/main/scala/jersey/ActiveObjectComponentProvider.scala @@ -4,21 +4,15 @@ package se.scalablesolutions.akka.kernel.jersey -import com.sun.jersey.core.spi.component.ioc.{IoCManagedComponentProvider, IoCFullyManagedComponentProvider, IoCInstantiatedComponentProvider, IoCComponentProvider} +import com.sun.jersey.core.spi.component.ioc.IoCFullyManagedComponentProvider + import kernel.Logging import config.ActiveObjectConfigurator -import com.sun.jersey.core.spi.component.ComponentProvider - import java.lang.reflect.{Constructor, InvocationTargetException} class ActiveObjectComponentProvider(val clazz: Class[_], val configurator: ActiveObjectConfigurator) - extends IoCManagedComponentProvider with Logging { + extends IoCFullyManagedComponentProvider with Logging { - override def getInstance: AnyRef = - configurator.getActiveObject(clazz).asInstanceOf[AnyRef] - - override def getInjectableInstance(obj: AnyRef): AnyRef = { - obj.asInstanceOf[ActiveObjectProxy].targetInstance - } + override def getInstance: AnyRef = configurator.getActiveObject(clazz).asInstanceOf[AnyRef] } \ No newline at end of file diff --git a/lib/aspectwerkz-nodeps-jdk5-2.1.jar b/lib/aspectwerkz-nodeps-jdk5-2.1.jar index 4459392249909c1ee2998024e5c1a2f5df49cdbe..c655479cbe3bd6c2646dffa1bce1ab2d1550a047 100644 GIT binary patch delta 75797 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 G1_l5g%mK>)