Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockFactory.java URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockFactory.java?rev=400402&r1=400401&r2=400402&view=diff ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockFactory.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/MockFactory.java Sat May 6 20:28:07 2006 @@ -3,17 +3,22 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.tuscany.common.ObjectCreationException; import org.apache.tuscany.common.ObjectFactory; import org.apache.tuscany.core.injection.EventInvoker; import org.apache.tuscany.core.injection.Injector; +import org.apache.tuscany.core.injection.MethodEventInvoker; import org.apache.tuscany.core.injection.MethodInjector; import org.apache.tuscany.core.injection.PojoObjectFactory; import org.apache.tuscany.core.system.context.SystemAtomicContext; import org.apache.tuscany.spi.context.AtomicContext; import org.apache.tuscany.spi.context.ScopeContext; +import org.osoa.sca.annotations.Destroy; +import org.osoa.sca.annotations.Init; /** * @version $$Rev$$ $$Date$$ @@ -25,30 +30,21 @@ * algorithm searches for the first method on the source with a single parameter type matching an * interface implemented by the target. * - * @param source - * @param sourceClass - * @param target - * @param targetClass - * @param sourceScope - * @param targetScope - * @return * @throws NoSuchMethodException */ - public static List<AtomicContext> createWiredContexts(String source, Class<?> sourceClass, String target, - Class<?> targetClass, - ScopeContext<AtomicContext> sourceScope, - ScopeContext<AtomicContext> targetScope) throws NoSuchMethodException { - - List<AtomicContext> contexts = new ArrayList<AtomicContext>(); - SystemAtomicContext targetCtx = createSystemAtomicContext(target, targetClass, false, null, null, null); - targetCtx.setScopeContext(targetScope); + public static Map<String, AtomicContext> createWiredContexts(String source, Class<?> sourceClass, ScopeContext<AtomicContext> sourceScopeCtx, + String target, Class<?> targetClass,ScopeContext<AtomicContext> targetScopeCtx) throws NoSuchMethodException { - //wire the contexts + Map<String, AtomicContext> contexts = new HashMap<String, AtomicContext>(); + SystemAtomicContext targetCtx = createSystemAtomicContext(target, targetClass);//, targetEager, targetInitInvoker, targetDestroyInvoker, null); + targetCtx.setScopeContext(targetScopeCtx); + + //create target wire + Method[] sourceMethods = sourceClass.getMethods(); Class[] interfaces = targetClass.getInterfaces(); Method setter = null; for (Class interfaze : interfaces) { - Method[] methods = sourceClass.getMethods(); - for (Method method : methods) { + for (Method method : sourceMethods) { if (method.getParameterTypes().length == 1) { if (interfaze.isAssignableFrom(method.getParameterTypes()[0])) { setter = method; @@ -66,14 +62,47 @@ MethodInjector injector = new MethodInjector(setter, new AtomicContextInstanceFactory(targetCtx)); List<Injector> injectors = new ArrayList<Injector>(); injectors.add(injector); - SystemAtomicContext sourceCtx = createSystemAtomicContext(source, sourceClass, false, null, null, injectors); - sourceCtx.setScopeContext(sourceScope); - - contexts.add(sourceCtx); - contexts.add(targetCtx); + SystemAtomicContext sourceCtx = createSystemAtomicContext(source, sourceClass,injectors);//, sourceEager, sourceInitInvoker, sourceDestroyInvoker, injectors); + sourceCtx.setScopeContext(sourceScopeCtx); + contexts.put(source, sourceCtx); + contexts.put(target, targetCtx); return contexts; } + + public static SystemAtomicContext createSystemAtomicContext(String name, Class<?> clazz) throws NoSuchMethodException { + return createSystemAtomicContext(name, clazz, null); + } + + public static SystemAtomicContext createSystemAtomicContext(String name, Class<?> clazz, List<Injector> injectors) throws NoSuchMethodException { + Method[] methods = clazz.getMethods(); + EventInvoker<Object> initInvoker = null; + EventInvoker<Object> destroyInvoker = null; + boolean eager = false; + for (Method method : methods) { + Init init; + if ((init = method.getAnnotation(Init.class)) != null) { + eager = init.eager(); + initInvoker = new MethodEventInvoker<Object>(method); + + } else if (method.getAnnotation(Destroy.class) != null) { + destroyInvoker = new MethodEventInvoker<Object>(method); + } + } + return createSystemAtomicContext(name, clazz, eager, initInvoker, destroyInvoker, injectors); + } + + /** + * Creates a system atomic context + * + * @param name the name of the context + * @param clazz the component implementation class + * @param eagerInit if the component eager initializes + * @param initInvoker the invoker for [EMAIL PROTECTED] org.osoa.sca.annotations.Init} + * @param destroyInvoker the invoker for [EMAIL PROTECTED] org.osoa.sca.annotations.Destroy} + * @param injectors the injectors responsible for injecting on an instance + * @throws NoSuchMethodException + */ public static SystemAtomicContext createSystemAtomicContext(String name, Class<?> clazz, boolean eagerInit, EventInvoker<Object> initInvoker, EventInvoker<Object> destroyInvoker, List<Injector> injectors) throws NoSuchMethodException { return new SystemAtomicContext(name, createObjectFactory(clazz, injectors), eagerInit, initInvoker, destroyInvoker); @@ -85,8 +114,10 @@ } + /** + * Used for injecting references + */ private static class AtomicContextInstanceFactory implements ObjectFactory { - private AtomicContext ctx; public AtomicContextInstanceFactory(AtomicContext ctx) { @@ -99,6 +130,3 @@ } } - -//ObjectFactory<?> objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker, -// EventInvoker<Object> destroyInvoker \ No newline at end of file
Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderException.java (from r400327, incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderException.java) URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderException.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderException.java&p1=incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderException.java&r1=400327&r2=400402&rev=400402&view=diff ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderException.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderException.java Sat May 6 20:28:07 2006 @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.tuscany.container.java.scopes; +package org.apache.tuscany.core.mock.component; public class OrderException extends Exception { Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderException.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedDependentPojo.java URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedDependentPojo.java?rev=400402&view=auto ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedDependentPojo.java (added) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedDependentPojo.java Sat May 6 20:28:07 2006 @@ -0,0 +1,11 @@ +package org.apache.tuscany.core.mock.component; + +/** + * @version $$Rev$$ $$Date$$ + */ +public interface OrderedDependentPojo extends OrderedInitPojo{ + + OrderedInitPojo getPojo(); + + void setPojo(OrderedInitPojo pojo); +} Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedDependentPojoImpl.java (from r400327, incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedDependentPojo.java) URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedDependentPojoImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedDependentPojoImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedDependentPojo.java&r1=400327&r2=400402&rev=400402&view=diff ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedDependentPojo.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedDependentPojoImpl.java Sat May 6 20:28:07 2006 @@ -1,17 +1,17 @@ -package org.apache.tuscany.container.java.scopes; +package org.apache.tuscany.core.mock.component; /** * @version $$Rev$$ $$Date$$ */ -public class OrderedDependentPojo extends OrderedInitPojo { +public class OrderedDependentPojoImpl extends OrderedInitPojoImpl implements OrderedDependentPojo { - private OrderedDependentPojo pojo; + private OrderedInitPojo pojo; - public OrderedDependentPojo getPojo() { + public OrderedInitPojo getPojo() { return pojo; } - public void setPojo(OrderedDependentPojo pojo) { + public void setPojo(OrderedInitPojo pojo) { this.pojo = pojo; } Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedEagerInitPojo.java (from r400327, incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedEagerInitPojo.java) URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedEagerInitPojo.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedEagerInitPojo.java&p1=incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedEagerInitPojo.java&r1=400327&r2=400402&rev=400402&view=diff ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedEagerInitPojo.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedEagerInitPojo.java Sat May 6 20:28:07 2006 @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.tuscany.container.java.scopes; +package org.apache.tuscany.core.mock.component; import org.osoa.sca.annotations.Destroy; import org.osoa.sca.annotations.Init; @@ -23,7 +23,7 @@ @Scope("MODULE") public class OrderedEagerInitPojo { - private static Object lock = new Object(); + private static final Object lock = new Object(); private static int numberInstantied; private int initOrder; Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedEagerInitPojo.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedEagerInitPojo.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojo.java URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojo.java?rev=400402&view=auto ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojo.java (added) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojo.java Sat May 6 20:28:07 2006 @@ -0,0 +1,10 @@ +package org.apache.tuscany.core.mock.component; + +/** + * @version $$Rev$$ $$Date$$ + */ +public interface OrderedInitPojo { + int getNumberInstantiated(); + + int getInitOrder(); +} Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojo.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojo.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java (from r400327, incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedInitPojo.java) URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java&p1=incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedInitPojo.java&r1=400327&r2=400402&rev=400402&view=diff ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/OrderedInitPojo.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java Sat May 6 20:28:07 2006 @@ -14,16 +14,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.tuscany.container.java.scopes; +package org.apache.tuscany.core.mock.component; import org.osoa.sca.annotations.Destroy; import org.osoa.sca.annotations.Init; import org.osoa.sca.annotations.Scope; @Scope("MODULE") -public class OrderedInitPojo { +public class OrderedInitPojoImpl implements OrderedInitPojo { - private static Object lock = new Object(); + private static final Object lock = new Object(); private static int numberInstantied; private int initOrder; Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java ------------------------------------------------------------------------------ svn:keywords = Rev Date Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/RequestScopedOrderedInitPojo.java (from r400327, incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/RequestScopedOrderedInitPojo.java) URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/RequestScopedOrderedInitPojo.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/RequestScopedOrderedInitPojo.java&p1=incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/RequestScopedOrderedInitPojo.java&r1=400327&r2=400402&rev=400402&view=diff ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/RequestScopedOrderedInitPojo.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/RequestScopedOrderedInitPojo.java Sat May 6 20:28:07 2006 @@ -1,19 +1,19 @@ -package org.apache.tuscany.container.java.scopes; +package org.apache.tuscany.core.mock.component; -import org.osoa.sca.annotations.Scope; -import org.osoa.sca.annotations.Init; import org.osoa.sca.annotations.Destroy; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Scope; @Scope("REQUEST") public class RequestScopedOrderedInitPojo { - private static Object lock = new Object(); + private static final Object lock = new Object(); private static int numberInstantied; private int initOrder; @Init public void init() { - synchronized (RequestScopedOrderedInitPojo.lock) { + synchronized (lock) { ++RequestScopedOrderedInitPojo.numberInstantied; initOrder = RequestScopedOrderedInitPojo.numberInstantied; } @@ -21,7 +21,7 @@ @Destroy public void destroy() throws OrderException { - synchronized (RequestScopedOrderedInitPojo.lock) { + synchronized (lock) { if (initOrder != RequestScopedOrderedInitPojo.numberInstantied) { throw new OrderException("Instance shutdown done out of order"); } Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SessionScopedOrderedInitPojo.java (from r400327, incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/SessionScopedOrderedInitPojo.java) URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SessionScopedOrderedInitPojo.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SessionScopedOrderedInitPojo.java&p1=incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/SessionScopedOrderedInitPojo.java&r1=400327&r2=400402&rev=400402&view=diff ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/scopes/SessionScopedOrderedInitPojo.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/component/SessionScopedOrderedInitPojo.java Sat May 6 20:28:07 2006 @@ -1,19 +1,19 @@ -package org.apache.tuscany.container.java.scopes; +package org.apache.tuscany.core.mock.component; -import org.osoa.sca.annotations.Scope; -import org.osoa.sca.annotations.Init; import org.osoa.sca.annotations.Destroy; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Scope; @Scope("SESSION") public class SessionScopedOrderedInitPojo { - private static Object lock = new Object(); + private static final Object lock = new Object(); private static int numberInstantied; private int initOrder; @Init public void init() { - synchronized (SessionScopedOrderedInitPojo.lock) { + synchronized (lock) { ++SessionScopedOrderedInitPojo.numberInstantied; initOrder = SessionScopedOrderedInitPojo.numberInstantied; } @@ -21,7 +21,7 @@ @Destroy public void destroy() throws OrderException { - synchronized (SessionScopedOrderedInitPojo.lock) { + synchronized (lock) { if (initOrder != SessionScopedOrderedInitPojo.numberInstantied) { throw new OrderException("Instance shutdown done out of order"); } Added: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeNotFoundException.java URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeNotFoundException.java?rev=400402&view=auto ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeNotFoundException.java (added) +++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeNotFoundException.java Sat May 6 20:28:07 2006 @@ -0,0 +1,21 @@ +package org.apache.tuscany.spi.context; + +/** + * @version $$Rev$$ $$Date$$ + */ +public class ScopeNotFoundException extends ScopeRuntimeException{ + public ScopeNotFoundException() { + } + + public ScopeNotFoundException(String message) { + super(message); + } + + public ScopeNotFoundException(String message, Throwable cause) { + super(message, cause); + } + + public ScopeNotFoundException(Throwable cause) { + super(cause); + } +} Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java?rev=400402&r1=400401&r2=400402&view=diff ============================================================================== --- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java (original) +++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/context/ScopeRegistry.java Sat May 6 20:28:07 2006 @@ -16,14 +16,17 @@ import java.util.List; import org.apache.tuscany.common.ObjectFactory; +import org.apache.tuscany.model.Scope; /** * @version $$Rev$$ $$Date$$ */ public interface ScopeRegistry { - List<ScopeContext> getScopeContexts(CompositeContext module); + ScopeContext getScopeContext(Scope scope,CompositeContext remotableContext) throws ScopeNotFoundException; + + void registerFactory(Scope scope, ObjectFactory<ScopeContext> factory); + + void deregisterFactory(Scope scope); - void registerFactory(ObjectFactory<ScopeContext> factory); - }
