You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/05/13 07:45:29 UTC

svn commit: r406016 [3/4] - in /incubator/tuscany/sandbox/jboynes/sca: containers/container.java/src/main/java/org/apache/tuscany/container/java/builder/ containers/container.java/src/main/java/org/apache/tuscany/container/java/context/ containers/cont...

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWireFactory.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWireFactory.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWireFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java Fri May 12 22:45:22 2006
@@ -6,10 +6,9 @@
 import java.util.Map;
 
 import org.apache.tuscany.core.util.MethodHashMap;
-import org.apache.tuscany.spi.wire.TargetInvocationConfiguration;
-import org.apache.tuscany.spi.wire.TargetWireFactory;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
+import org.apache.tuscany.spi.wire.TargetWire;
 import org.apache.tuscany.spi.wire.WireFactoryInitException;
-import org.apache.tuscany.spi.wire.WireTargetConfiguration;
 
 /**
  * Creates proxies that are returned to non-SCA clients using JDK dynamic proxy facilities and front a wire.
@@ -18,7 +17,7 @@
  *
  * @version $Rev: 394431 $ $Date: 2006-04-15 21:27:44 -0700 (Sat, 15 Apr 2006) $
  */
-public class JDKTargetWireFactory<T> implements TargetWireFactory<T> {
+public class JDKTargetWire<T> implements TargetWire<T> {
 
     private static final int UNINITIALIZED = 0;
 
@@ -28,19 +27,20 @@
 
     private Class[] businessInterfaceArray;
 
-    private Map<Method, TargetInvocationConfiguration> methodToInvocationConfig;
+    private Map<Method, TargetInvocationChain> methodToInvocationConfig;
 
-    private WireTargetConfiguration configuration;
+    //private WireTargetConfiguration configuration;
 
     public void initialize() throws WireFactoryInitException {
         if (state != UNINITIALIZED) {
-            throw new IllegalStateException("Proxy factory in wrong state [" + state + "]");
+            throw new IllegalStateException("Wire factory in wrong state [" + state + "]");
         }
-        Map<Method, TargetInvocationConfiguration> invocationConfigs = configuration.getInvocationConfigurations();
-        methodToInvocationConfig = new MethodHashMap<TargetInvocationConfiguration>(invocationConfigs.size());
-        for (Map.Entry<Method, TargetInvocationConfiguration> entry : invocationConfigs.entrySet()) {
-            Method method = entry.getKey();
-            methodToInvocationConfig.put(method, entry.getValue());
+        if (invocationChains != null) {
+            methodToInvocationConfig = new MethodHashMap<TargetInvocationChain>(invocationChains.size());
+            for (Map.Entry<Method, TargetInvocationChain> entry : invocationChains.entrySet()) {
+                Method method = entry.getKey();
+                methodToInvocationConfig.put(method, entry.getValue());
+            }
         }
         state = INITIALIZED;
     }
@@ -54,14 +54,6 @@
         return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), businessInterfaceArray, handler);
     }
 
-    public WireTargetConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    public void setConfiguration(WireTargetConfiguration config) {
-        configuration = config;
-    }
-
     public void setBusinessInterface(Class interfaze) {
         businessInterfaceArray = new Class[]{interfaze};
     }
@@ -75,8 +67,28 @@
         throw new UnsupportedOperationException("Additional proxy interfaces not yet supported");
     }
 
-    public Class[] getImplementatedInterfaces() {
+    public Class[] getImplementedInterfaces() {
         return businessInterfaceArray;
+    }
+
+    private String serviceName;
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    private Map<Method, TargetInvocationChain> invocationChains;
+
+    public Map<Method, TargetInvocationChain> getInvocationChains() {
+        return invocationChains;
+    }
+
+    public void setInvocationChains(Map<Method, TargetInvocationChain> chains) {
+        this.invocationChains = chains;
     }
 
 }

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryService.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactory.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryService.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryService.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactory.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKWireFactoryService.java Fri May 12 22:45:22 2006
@@ -13,9 +13,9 @@
  */
 package org.apache.tuscany.core.wire.jdk;
 
-import org.apache.tuscany.spi.wire.SourceWireFactory;
-import org.apache.tuscany.spi.wire.TargetWireFactory;
-import org.apache.tuscany.spi.wire.WireFactoryFactory;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.WireFactoryService;
 import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Scope;
 import org.osoa.sca.annotations.Service;
@@ -29,22 +29,22 @@
  * @version $Rev$ $Date$
  */
 @Scope("MODULE")
-@Service(interfaces = {WireFactoryFactory.class})
-public class JDKWireFactoryFactory implements WireFactoryFactory {
+@Service(interfaces = {WireFactoryService.class})
+public class JDKWireFactoryService implements WireFactoryService {
 
-    public JDKWireFactoryFactory() {
+    public JDKWireFactoryService() {
     }
 
     @Init(eager = true)
     public void init() {
     }
 
-    public TargetWireFactory createTargetWireFactory() {
-        return new JDKTargetWireFactory();
+    public TargetWire createTargetWire() {
+        return new JDKTargetWire();
     }
 
-    public SourceWireFactory createSourceWireFactory() {
-        return new JDKSourceWireFactory();
+    public SourceWire createSourceWire() {
+        return new JDKSourceWire();
     }
 
     public boolean isProxy(Object object) {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicHttpSessionScopeTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicHttpSessionScopeTestCase.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicHttpSessionScopeTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicHttpSessionScopeTestCase.java Fri May 12 22:45:22 2006
@@ -9,6 +9,7 @@
 import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.mock.component.SessionScopeInitDestroyComponent;
 import org.apache.tuscany.core.mock.context.MockCompositeContext;
+import org.apache.tuscany.core.system.context.SystemAtomicContextImpl;
 import org.apache.tuscany.core.system.context.SystemAtomicContext;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.WorkContext;
@@ -83,6 +84,6 @@
     }
 
     private SystemAtomicContext createContext() {
-        return new SystemAtomicContext("foo", factory, false, initInvoker, destroyInvoker);
+        return new SystemAtomicContextImpl("foo", SessionScopeInitDestroyComponent.class, factory, false, initInvoker, destroyInvoker);
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicModuleScopeTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicModuleScopeTestCase.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicModuleScopeTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicModuleScopeTestCase.java Fri May 12 22:45:22 2006
@@ -9,6 +9,7 @@
 import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.mock.component.ModuleScopeInitDestroyComponent;
 import org.apache.tuscany.core.mock.context.MockCompositeContext;
+import org.apache.tuscany.core.system.context.SystemAtomicContextImpl;
 import org.apache.tuscany.core.system.context.SystemAtomicContext;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.WorkContext;
@@ -76,6 +77,6 @@
     }
 
     private SystemAtomicContext createContext() {
-        return new SystemAtomicContext("foo", factory, false, initInvoker, destroyInvoker);
+        return new SystemAtomicContextImpl("foo", ModuleScopeInitDestroyComponent.class,factory, false, initInvoker, destroyInvoker);
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicRequestScopeTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicRequestScopeTestCase.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicRequestScopeTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicRequestScopeTestCase.java Fri May 12 22:45:22 2006
@@ -9,6 +9,7 @@
 import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.mock.component.RequestScopeInitDestroyComponent;
 import org.apache.tuscany.core.mock.context.MockCompositeContext;
+import org.apache.tuscany.core.system.context.SystemAtomicContextImpl;
 import org.apache.tuscany.core.system.context.SystemAtomicContext;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.WorkContext;
@@ -75,6 +76,6 @@
     }
 
     private SystemAtomicContext createContext() {
-        return new SystemAtomicContext("foo", factory, false, initInvoker, destroyInvoker);
+        return new SystemAtomicContextImpl("foo", RequestScopeInitDestroyComponent.class,factory, false, initInvoker, destroyInvoker);
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicStatelessScopeTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicStatelessScopeTestCase.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicStatelessScopeTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicStatelessScopeTestCase.java Fri May 12 22:45:22 2006
@@ -1,16 +1,12 @@
 package org.apache.tuscany.core.context.scope;
 
-import java.util.List;
-import java.util.ArrayList;
-
-import junit.framework.TestCase;
 import junit.framework.Assert;
-import org.apache.tuscany.core.wire.jdk.JDKWireFactoryFactory;
+import junit.framework.TestCase;
 import org.apache.tuscany.core.context.WorkContextImpl;
-import org.apache.tuscany.core.system.context.SystemAtomicContext;
 import org.apache.tuscany.core.mock.MockFactory;
-import org.apache.tuscany.core.mock.component.StatelessComponentImpl;
 import org.apache.tuscany.core.mock.component.StatelessComponent;
+import org.apache.tuscany.core.mock.component.StatelessComponentImpl;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
 import org.apache.tuscany.spi.context.WorkContext;
 
 /**
@@ -27,10 +23,10 @@
         WorkContext ctx = new WorkContextImpl();
         StatelessScopeContext scope = new StatelessScopeContext(ctx);
         scope.start();
-        SystemAtomicContext context1 = MockFactory.createSystemAtomicContext("comp1",StatelessComponentImpl.class);
+        SystemAtomicContext context1 = MockFactory.createSystemAtomicContext("comp1", StatelessComponentImpl.class);
         context1.setScopeContext(scope);
         scope.register(context1);
-        SystemAtomicContext context2 = MockFactory.createSystemAtomicContext("comp2",StatelessComponentImpl.class);
+        SystemAtomicContext context2 = MockFactory.createSystemAtomicContext("comp2", StatelessComponentImpl.class);
         context2.setScopeContext(scope);
         scope.register(context2);
         StatelessComponentImpl comp1 = (StatelessComponentImpl) scope.getInstance(context1);
@@ -46,12 +42,12 @@
         StatelessScopeContext scope = new StatelessScopeContext(ctx);
 
         scope.start();
-        SystemAtomicContext context1 = MockFactory.createSystemAtomicContext("comp1",StatelessComponentImpl.class);
+        SystemAtomicContext context1 = MockFactory.createSystemAtomicContext("comp1", StatelessComponentImpl.class);
         context1.setScopeContext(scope);
         scope.register(context1);
-        StatelessComponentImpl comp1 = (StatelessComponentImpl) scope.getInstance(context1);
+        StatelessComponent comp1 = (StatelessComponentImpl) scope.getInstance(context1);
         Assert.assertNotNull(comp1);
-        SystemAtomicContext context2 = MockFactory.createSystemAtomicContext("comp2",StatelessComponentImpl.class);
+        SystemAtomicContext context2 = MockFactory.createSystemAtomicContext("comp2", StatelessComponentImpl.class);
         context2.setScopeContext(scope);
         scope.register(context2);
         StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(context2);

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeInstanceLifecycleTestCase.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeLifecycleTestCase.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeInstanceLifecycleTestCase.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeInstanceLifecycleTestCase.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeLifecycleTestCase.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeLifecycleTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeInstanceLifecycleTestCase.java Fri May 12 22:45:22 2006
@@ -20,7 +20,7 @@
  *
  * @version $Rev: 398107 $ $Date: 2006-04-29 01:38:27 -0700 (Sat, 29 Apr 2006) $
  */
-public class HttpSessionScopeLifecycleTestCase extends TestCase {
+public class HttpSessionScopeInstanceLifecycleTestCase extends TestCase {
 
     public void testInitDestroy() throws Exception {
         WorkContext ctx = new WorkContextImpl();

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeRestartTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeRestartTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeRestartTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeRestartTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,78 @@
+package org.apache.tuscany.core.context.scope;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.HttpSessionStart;
+import org.apache.tuscany.core.context.event.HttpSessionEnd;
+import org.apache.tuscany.core.injection.MethodEventInvoker;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
+import org.apache.tuscany.core.mock.MockFactory;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class HttpSessionScopeRestartTestCase extends TestCase {
+
+    public void testRestart() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        HttpSessionScopeContext scope = new HttpSessionScopeContext(ctx);
+        scope.start();
+        MethodEventInvoker<Object> initInvoker = new MethodEventInvoker<Object>(HttpSessionScopeRestartTestCase.InitDestroyOnce.class.getMethod("init"));
+        MethodEventInvoker<Object> destroyInvoker = new MethodEventInvoker<Object>(HttpSessionScopeRestartTestCase.InitDestroyOnce.class.getMethod("destroy"));
+        List<Class<?>> interfaces = new ArrayList<Class<?>>();
+        interfaces.add(HttpSessionScopeRestartTestCase.InitDestroyOnce.class);
+        SystemAtomicContext context = MockFactory.createSystemAtomicContext("InitDestroy", interfaces,
+                HttpSessionScopeRestartTestCase.InitDestroyOnce.class, false, initInvoker, destroyInvoker, null);
+        context.setScopeContext(scope);
+        context.start();
+
+        Object session = new Object();
+        ctx.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER,session);
+        scope.onEvent(new HttpSessionStart(this,session));
+        Object instance = context.getService();
+        assertSame(instance, context.getService());
+
+        scope.onEvent(new HttpSessionEnd(this,session));
+        scope.stop();
+        context.stop();
+
+        scope.start();
+        scope.onEvent(new HttpSessionStart(this,session));
+        scope.register(context);
+        context.start();
+        assertNotSame(instance, context.getService());
+        scope.onEvent(new HttpSessionEnd(this,session));
+        scope.stop();
+        context.stop();
+    }
+
+    public static class InitDestroyOnce {
+
+        private boolean initialized;
+        private boolean destroyed;
+
+        public InitDestroyOnce() {
+        }
+
+        public void init() {
+            if (!initialized) {
+                initialized = true;
+            } else {
+                fail("Scope did not clean up properly - Init called more than once");
+            }
+        }
+
+        public void destroy() {
+            if (!destroyed) {
+                destroyed = true;
+            } else {
+                fail("Scope did not clean up properly - Destroyed called more than once");
+            }
+        }
+
+    }
+}

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeInstanceLifecycleTestCase.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeLifecycleTestCase.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeInstanceLifecycleTestCase.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeInstanceLifecycleTestCase.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeLifecycleTestCase.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeLifecycleTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeInstanceLifecycleTestCase.java Fri May 12 22:45:22 2006
@@ -21,7 +21,7 @@
  *
  * @version $Rev: 398107 $ $Date: 2006-04-29 01:38:27 -0700 (Sat, 29 Apr 2006) $
  */
-public class ModuleScopeLifecycleTestCase extends TestCase {
+public class ModuleScopeInstanceLifecycleTestCase extends TestCase {
 
     public void testInitDestroy() throws Exception {
         WorkContext ctx = new WorkContextImpl();

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeRestartTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeRestartTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeRestartTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeRestartTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,76 @@
+package org.apache.tuscany.core.context.scope;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.injection.MethodEventInvoker;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
+import org.apache.tuscany.spi.context.WorkContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ModuleScopeRestartTestCase extends TestCase {
+
+    public void testRestart() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        ModuleScopeContext scope = new ModuleScopeContext(ctx);
+        scope.start();
+        MethodEventInvoker<Object> initInvoker = new MethodEventInvoker<Object>(InitDestroyOnce.class.getMethod("init"));
+        MethodEventInvoker<Object> destroyInvoker = new MethodEventInvoker<Object>(InitDestroyOnce.class.getMethod("destroy"));
+        List<Class<?>> interfaces = new ArrayList<Class<?>>();
+        interfaces.add(InitDestroyOnce.class);
+        SystemAtomicContext context = MockFactory.createSystemAtomicContext("InitDestroy", interfaces,
+                InitDestroyOnce.class, false, initInvoker, destroyInvoker, null);
+        context.setScopeContext(scope);
+        context.start();
+
+        scope.onEvent(new ModuleStart(this, null));
+        Object instance = context.getService();
+        assertSame(instance, context.getService());
+
+        scope.onEvent(new ModuleStop(this, null));
+        scope.stop();
+        context.stop();
+
+        scope.start();
+        scope.onEvent(new ModuleStart(this, null));
+        scope.register(context);
+        context.start();
+        assertNotSame(instance, context.getService());
+        scope.onEvent(new ModuleStop(this, null));
+        scope.stop();
+        context.stop();
+    }
+
+    public static class InitDestroyOnce {
+
+        private boolean initialized;
+        private boolean destroyed;
+
+        public InitDestroyOnce() {
+        }
+
+        public void init() {
+            if (!initialized) {
+                initialized = true;
+            } else {
+                fail("Scope did not clean up properly - Init called more than once");
+            }
+        }
+
+        public void destroy() {
+            if (!destroyed) {
+                destroyed = true;
+            } else {
+                fail("Scope did not clean up properly - Destroyed called more than once");
+            }
+        }
+
+    }
+}

Copied: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeInstanceLifecycleTestCase.java (from r405791, incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeLifecycleTestCase.java)
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeInstanceLifecycleTestCase.java?p2=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeInstanceLifecycleTestCase.java&p1=incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeLifecycleTestCase.java&r1=405791&r2=406016&rev=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeLifecycleTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeInstanceLifecycleTestCase.java Fri May 12 22:45:22 2006
@@ -20,7 +20,7 @@
  *
  * @version $Rev: 398107 $ $Date: 2006-04-29 01:38:27 -0700 (Sat, 29 Apr 2006) $
  */
-public class RequestScopeLifecycleTestCase extends TestCase {
+public class RequestScopeInstanceLifecycleTestCase extends TestCase {
 
     public void testInitDestroy() throws Exception {
         WorkContext ctx = new WorkContextImpl();

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeRestartTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeRestartTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeRestartTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeRestartTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,73 @@
+package org.apache.tuscany.core.context.scope;
+
+import java.util.List;
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.RequestEnd;
+import org.apache.tuscany.core.injection.MethodEventInvoker;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
+import org.apache.tuscany.core.mock.MockFactory;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class RequestScopeRestartTestCase extends TestCase {
+
+    public void testRestart() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        RequestScopeContext scope = new RequestScopeContext(ctx);
+        scope.start();
+        MethodEventInvoker<Object> initInvoker = new MethodEventInvoker<Object>(RequestScopeRestartTestCase.InitDestroyOnce.class.getMethod("init"));
+        MethodEventInvoker<Object> destroyInvoker = new MethodEventInvoker<Object>(RequestScopeRestartTestCase.InitDestroyOnce.class.getMethod("destroy"));
+        List<Class<?>> interfaces = new ArrayList<Class<?>>();
+        interfaces.add(RequestScopeRestartTestCase.InitDestroyOnce.class);
+        SystemAtomicContext context = MockFactory.createSystemAtomicContext("InitDestroy", interfaces,
+                RequestScopeRestartTestCase.InitDestroyOnce.class, false, initInvoker, destroyInvoker, null);
+        context.setScopeContext(scope);
+        context.start();
+
+        Object instance = context.getService();
+        assertSame(instance, context.getService());
+
+        scope.onEvent(new RequestEnd(this));
+        scope.stop();
+        context.stop();
+
+        scope.start();
+        scope.register(context);
+        context.start();
+        assertNotSame(instance, context.getService());
+        scope.onEvent(new RequestEnd(this));
+        scope.stop();
+        context.stop();
+    }
+
+    public static class InitDestroyOnce {
+
+        private boolean initialized;
+        private boolean destroyed;
+
+        public InitDestroyOnce() {
+        }
+
+        public void init() {
+            if (!initialized) {
+                initialized = true;
+            } else {
+                fail("Scope did not clean up properly - Init called more than once");
+            }
+        }
+
+        public void destroy() {
+            if (!destroyed) {
+                destroyed = true;
+            } else {
+                fail("Scope did not clean up properly - Destroyed called more than once");
+            }
+        }
+
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/AtomicContextToReferenceContextTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,51 @@
+package org.apache.tuscany.core.integration.system;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.injection.Injector;
+import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.injection.TargetInstanceResolver;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.mock.component.Source;
+import org.apache.tuscany.core.mock.component.SourceImpl;
+import org.apache.tuscany.core.mock.component.Target;
+import org.apache.tuscany.core.mock.component.TargetImpl;
+import org.apache.tuscany.core.mock.context.MockReferenceContext;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
+import org.apache.tuscany.core.system.context.SystemCompositeContext;
+import org.apache.tuscany.core.system.context.SystemCompositeContextImpl;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.spi.wire.WireFactoryInitException;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class AtomicContextToReferenceContextTestCase extends TestCase {
+
+    public void testWireResolution() throws NoSuchMethodException, WireFactoryInitException {
+        WorkContext ctx = new WorkContextImpl();
+        ModuleScopeContext scope = new ModuleScopeContext(ctx);
+        SystemCompositeContext context = new SystemCompositeContextImpl();
+        scope.start();
+        ReferenceContext<Target> serviceContext = new MockReferenceContext<Target>("service", Target.class, new TargetImpl());
+        context.registerContext(serviceContext);
+        List<Injector> injectors = new ArrayList<Injector>();
+        MethodInjector injector = new MethodInjector(SourceImpl.class.getMethod("setTarget", Target.class), new TargetInstanceResolver<Target>(serviceContext));
+        injectors.add(injector);
+        List<Class<?>> interfaces = new ArrayList<Class<?>>();
+        interfaces.add(Source.class);
+        SystemAtomicContext sourceContext = MockFactory.createSystemAtomicContext("source", interfaces, SourceImpl.class, injectors);
+        context.registerContext(sourceContext);
+        sourceContext.setScopeContext(scope);
+        context.start();
+        MockReferenceContext serviceContext2 = (MockReferenceContext) context.getContext("service");
+        assertSame(serviceContext, serviceContext2);
+        Target target = (Target) serviceContext2.getService();
+        assertSame(((Source) sourceContext.getService()).getTarget(), target);
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/ServiceContextToAtomicContextTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/ServiceContextToAtomicContextTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/ServiceContextToAtomicContextTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/ServiceContextToAtomicContextTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,37 @@
+package org.apache.tuscany.core.integration.system;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.mock.component.Target;
+import org.apache.tuscany.core.mock.component.TargetImpl;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
+import org.apache.tuscany.core.system.context.SystemCompositeContext;
+import org.apache.tuscany.core.system.context.SystemCompositeContextImpl;
+import org.apache.tuscany.core.system.context.SystemServiceContext;
+import org.apache.tuscany.core.system.context.SystemServiceContextImpl;
+import org.apache.tuscany.spi.context.WorkContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ServiceContextToAtomicContextTestCase extends TestCase {
+
+    public void testWireResolution() throws NoSuchMethodException {
+        WorkContext ctx = new WorkContextImpl();
+        ModuleScopeContext scope = new ModuleScopeContext(ctx);
+        SystemCompositeContext context = new SystemCompositeContextImpl();
+        scope.start();
+        SystemAtomicContext targetContext = MockFactory.createSystemAtomicContext("target", TargetImpl.class);
+        context.registerContext(targetContext);
+        targetContext.setScopeContext(scope);
+        SystemServiceContext<Target> serviceContext = new SystemServiceContextImpl<Target>("service", Target.class, "target", context);
+        context.registerContext(serviceContext);
+        context.start();
+        SystemServiceContext serviceContext2 = (SystemServiceContext) context.getContext("service");
+        assertSame(serviceContext, serviceContext2);
+        Target target = (Target) serviceContext2.getService();
+        assertSame(targetContext.getService(), target);
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/ServiceContextToReferenceContextTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/ServiceContextToReferenceContextTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/ServiceContextToReferenceContextTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/integration/system/ServiceContextToReferenceContextTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,36 @@
+package org.apache.tuscany.core.integration.system;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.mock.component.Target;
+import org.apache.tuscany.core.mock.component.TargetImpl;
+import org.apache.tuscany.core.mock.context.MockReferenceContext;
+import org.apache.tuscany.core.system.context.SystemCompositeContext;
+import org.apache.tuscany.core.system.context.SystemCompositeContextImpl;
+import org.apache.tuscany.core.system.context.SystemServiceContext;
+import org.apache.tuscany.core.system.context.SystemServiceContextImpl;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.WorkContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ServiceContextToReferenceContextTestCase extends TestCase {
+
+    public void testWireResolution() throws NoSuchMethodException {
+        WorkContext ctx = new WorkContextImpl();
+        ModuleScopeContext scope = new ModuleScopeContext(ctx);
+        SystemCompositeContext context = new SystemCompositeContextImpl();
+        scope.start();
+        ReferenceContext<Target> referenceContext = new MockReferenceContext<Target>("reference", Target.class, new TargetImpl());
+        context.registerContext(referenceContext);
+        SystemServiceContext<Target> serviceContext = new SystemServiceContextImpl<Target>("service", Target.class, "reference", context);
+        context.registerContext(serviceContext);
+        context.start();
+        SystemServiceContext serviceContext2 = (SystemServiceContext) context.getContext("service");
+        assertSame(serviceContext, serviceContext2);
+        Target target = (Target) serviceContext2.getService();
+        assertNotNull(target);
+    }
+}

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=406016&r1=406015&r2=406016&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 Fri May 12 22:45:22 2006
@@ -15,8 +15,16 @@
 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.core.system.context.SystemAtomicContextImpl;
+import org.apache.tuscany.core.util.MethodHashMap;
+import org.apache.tuscany.core.wire.InvokerInterceptor;
+import org.apache.tuscany.core.wire.TargetInvocationChainImpl;
+import org.apache.tuscany.core.wire.jdk.JDKTargetWire;
 import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.apache.tuscany.spi.wire.WireFactoryInitException;
 import org.osoa.sca.annotations.Destroy;
 import org.osoa.sca.annotations.Init;
 
@@ -25,6 +33,13 @@
  */
 public class MockFactory {
 
+    public static Map<String, AtomicContext> createWiredContexts(String source, Class<?> sourceClass, ScopeContext<AtomicContext> sourceScopeCtx,
+                                                                 String target, Class<?> targetClass, ScopeContext<AtomicContext> targetScopeCtx) throws NoSuchMethodException {
+        List<Class<?>> sourceClasses = new ArrayList<Class<?>>();
+        sourceClasses.add(sourceClass);
+        return createWiredContexts(source, sourceClasses, sourceClass, sourceScopeCtx, target, targetClass, targetScopeCtx);
+    }
+
     /**
      * Creates source and target {@link AtomicContext}s whose instances are wired together. The wiring
      * algorithm searches for the first method on the source with a single parameter type matching an
@@ -32,8 +47,8 @@
      *
      * @throws NoSuchMethodException
      */
-    public static Map<String, AtomicContext> createWiredContexts(String source, Class<?> sourceClass, ScopeContext<AtomicContext> sourceScopeCtx,
-                                                                 String target, Class<?> targetClass,ScopeContext<AtomicContext> targetScopeCtx) throws NoSuchMethodException {
+    public static Map<String, AtomicContext> createWiredContexts(String source, List<Class<?>> sourceInterfaces, Class<?> sourceClass, ScopeContext<AtomicContext> sourceScopeCtx,
+                                                                 String target, Class<?> targetClass, ScopeContext<AtomicContext> targetScopeCtx) throws NoSuchMethodException {
 
         Map<String, AtomicContext> contexts = new HashMap<String, AtomicContext>();
         SystemAtomicContext targetCtx = createSystemAtomicContext(target, targetClass);//, targetEager, targetInitInvoker, targetDestroyInvoker, null);
@@ -62,7 +77,7 @@
         MethodInjector injector = new MethodInjector(setter, new AtomicContextInstanceFactory(targetCtx));
         List<Injector> injectors = new ArrayList<Injector>();
         injectors.add(injector);
-        SystemAtomicContext sourceCtx = createSystemAtomicContext(source, sourceClass,injectors);//, sourceEager, sourceInitInvoker, sourceDestroyInvoker, injectors);
+        SystemAtomicContext sourceCtx = createSystemAtomicContext(source, sourceInterfaces, sourceClass, injectors);//, sourceEager, sourceInitInvoker, sourceDestroyInvoker, injectors);
         sourceCtx.setScopeContext(sourceScopeCtx);
         contexts.put(source, sourceCtx);
         contexts.put(target, targetCtx);
@@ -71,10 +86,13 @@
 
 
     public static SystemAtomicContext createSystemAtomicContext(String name, Class<?> clazz) throws NoSuchMethodException {
-       return  createSystemAtomicContext(name, clazz, null);
+        List<Class<?>> serviceInterfaces = new ArrayList<Class<?>>();
+        serviceInterfaces.add(clazz);
+        return createSystemAtomicContext(name, serviceInterfaces, clazz, null);
     }
 
-    public static SystemAtomicContext createSystemAtomicContext(String name, Class<?> clazz, List<Injector> injectors) throws NoSuchMethodException {
+    public static SystemAtomicContext createSystemAtomicContext(String name, List<Class<?>> serviceInterfaces,
+                                                                Class<?> clazz, List<Injector> injectors) throws NoSuchMethodException {
         Method[] methods = clazz.getMethods();
         EventInvoker<Object> initInvoker = null;
         EventInvoker<Object> destroyInvoker = null;
@@ -89,7 +107,7 @@
                 destroyInvoker = new MethodEventInvoker<Object>(method);
             }
         }
-        return createSystemAtomicContext(name, clazz, eager, initInvoker, destroyInvoker, injectors);
+        return createSystemAtomicContext(name, serviceInterfaces, clazz, eager, initInvoker, destroyInvoker, injectors);
     }
 
     /**
@@ -103,10 +121,32 @@
      * @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);
+    public static SystemAtomicContextImpl createSystemAtomicContext(String name, List<Class<?>> serviceInterfaces, Class<?> clazz, boolean eagerInit, EventInvoker<Object> initInvoker,
+                                                                    EventInvoker<Object> destroyInvoker, List<Injector> injectors) throws NoSuchMethodException {
+        return new SystemAtomicContextImpl(name, serviceInterfaces, createObjectFactory(clazz, injectors), eagerInit, initInvoker, destroyInvoker);
+    }
+
+    public static <T> TargetWire<T> createTargetWireFactory(String serviceName, Class<T> interfaze) throws WireFactoryInitException {
+        TargetWire<T> wire = new JDKTargetWire<T>();
+        wire.setServiceName(serviceName);
+        wire.setBusinessInterface(interfaze);
+        wire.setInvocationChains(createTargetInvocationConfigurations(interfaze));
+        wire.initialize();
+        return wire;
     }
+
+    public static Map<Method, TargetInvocationChain> createTargetInvocationConfigurations(Class<?> interfaze) {
+        Map<Method, TargetInvocationChain> invocations = new MethodHashMap<TargetInvocationChain>();
+        Method[] methods = interfaze.getMethods();
+        for (Method method : methods) {
+            TargetInvocationChain iConfig = new TargetInvocationChainImpl(method);
+            // add tail interceptor
+            iConfig.addInterceptor(new InvokerInterceptor());
+            invocations.put(method, iConfig);
+        }
+        return invocations;
+    }
+
 
     private static <T> ObjectFactory<T> createObjectFactory(Class<T> clazz, List<Injector> injectors) throws NoSuchMethodException {
         Constructor<T> ctr = clazz.getConstructor((Class<T>[]) null);

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockCompositeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockCompositeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockCompositeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockCompositeContext.java Fri May 12 22:45:22 2006
@@ -1,15 +1,27 @@
 package org.apache.tuscany.core.mock.context;
 
+import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.context.CompositeContext;
-import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.context.Context;
-import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.context.ContextNotFoundException;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.ServiceContext;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.event.Event;
+import org.apache.tuscany.spi.wire.SourceWire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.TargetWire;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
-public class MockCompositeContext extends AbstractContext implements CompositeContext {
+public class MockCompositeContext<T> extends AbstractContext<T> implements CompositeContext<T> {
 
     public Object getInstance(QualifiedName qName) throws TargetException {
         throw new UnsupportedOperationException();
@@ -21,5 +33,65 @@
 
     public Context getContext(String name) {
         throw new UnsupportedOperationException();
+    }
+
+    public List<ServiceContext> getServiceContexts() {
+        return Collections.emptyList();
+    }
+
+    public ServiceContext getServiceContext(String name) throws ContextNotFoundException {
+        return null;
+    }
+
+    public List<ReferenceContext> getReferenceContexts() {
+        return Collections.emptyList();
+    }
+
+    public void onEvent(Event event) {
+
+    }
+
+    public Object getService(String name) throws TargetException {
+        throw new UnsupportedOperationException();
+    }
+
+    public List<Class<?>> getServiceInterfaces() {
+        return null;
+    }
+
+    public void addTargetWire(TargetWire wire) {
+        throw new UnsupportedOperationException();
+    }
+
+    public TargetWire getTargetWire(String serviceName) {
+        return null;
+    }
+
+    public Map<String, TargetWire> getTargetWires() {
+        return null;
+    }
+
+    public void addSourceWire(SourceWire wire) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addSourceWires(Class<?> multiplicityClass, List<SourceWire> wires) {
+        throw new UnsupportedOperationException();
+    }
+
+    public List<SourceWire> getSourceWires() {
+        return null;
+    }
+
+    public void prepare() {
+
+    }
+
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+        throw new UnsupportedOperationException();
+    }
+
+    public T getService() throws TargetException {
+        return null;
     }
 }

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockReferenceContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockReferenceContext.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockReferenceContext.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockReferenceContext.java Fri May 12 22:45:22 2006
@@ -0,0 +1,44 @@
+package org.apache.tuscany.core.mock.context;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+
+/**
+ * A mock reference context which returns a singleton
+ *
+ * @version $Rev: 399991 $ $Date: 2006-05-04 23:44:07 -0700 (Thu, 04 May 2006) $
+ */
+public class MockReferenceContext<T> extends AbstractContext<T> implements ReferenceContext<T> {
+
+    private Class<T> referenceInterface;
+    private T instance;
+
+    public MockReferenceContext(String name, Class<T> referenceInterface, T instance) {
+        super(name);
+        assert (referenceInterface != null) : "Reference interface was null";
+        this.referenceInterface = referenceInterface;
+        this.instance = instance;
+    }
+
+    public TargetInvoker createTargetInvoker(String serviceName, Method operation) {
+        throw new UnsupportedOperationException();
+    }
+
+    public T getService() throws TargetException {
+        return instance;
+    }
+
+    public InvocationHandler getHandler() throws TargetException {
+        throw new UnsupportedOperationException();
+    }
+
+    public Class<T> getInterface() {
+        return referenceInterface;
+    }
+
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/MockScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/MockScopeContext.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/MockScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/scope/MockScopeContext.java Fri May 12 22:45:22 2006
@@ -8,7 +8,7 @@
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.Context;
-import org.apache.tuscany.spi.context.InstanceContext;
+import org.apache.tuscany.spi.context.InstanceWrapper;
 import org.apache.tuscany.spi.context.TargetException;
 import org.apache.tuscany.spi.event.Event;
 
@@ -17,9 +17,9 @@
  */
 public class MockScopeContext extends AbstractScopeContext<AtomicContext> {
 
-    private Map<Context, InstanceContext> instanceContexts;
+    private Map<Context, InstanceWrapper> instanceContexts;
     private Scope scope;
-    private static final InstanceContext EMPTY = new EmptyContext();
+    private static final InstanceWrapper EMPTY = new EmptyWrapper();
 
     public MockScopeContext() {
         this(null);
@@ -27,7 +27,7 @@
 
     public MockScopeContext(Scope scope) {
         super("Module Scope", null);
-        instanceContexts = new ConcurrentHashMap<Context, InstanceContext>();
+        instanceContexts = new ConcurrentHashMap<Context, InstanceWrapper>();
         this.scope = scope;
     }
 
@@ -35,8 +35,8 @@
         return scope;
     }
 
-    public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
-        InstanceContext ctx = instanceContexts.get(context);
+    public InstanceWrapper getInstanceContext(AtomicContext context) throws TargetException {
+        InstanceWrapper ctx = instanceContexts.get(context);
         if(ctx == EMPTY){
             ctx = context.createInstance();
             instanceContexts.put(context,ctx);
@@ -53,7 +53,7 @@
     }
 
 
-    private static class EmptyContext extends AbstractLifecycle implements InstanceContext {
+    private static class EmptyWrapper extends AbstractLifecycle implements InstanceWrapper {
         public Object getInstance() {
             return null;
         }

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,101 @@
+package org.apache.tuscany.core.system.context;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.mock.context.MockReferenceContext;
+import org.apache.tuscany.spi.context.ReferenceContext;
+import org.apache.tuscany.spi.context.WorkContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class AutowireTestCase extends TestCase {
+
+    public void testAtomicAutowire() throws Exception {
+        WorkContext workContext = new WorkContextImpl();
+        ModuleScopeContext scopeContext = new ModuleScopeContext(workContext);
+        scopeContext.start();
+        SystemCompositeContext<?> parent = new SystemCompositeContextImpl("parent", null, null);
+        parent.start();
+        List<Class<?>> interfaces = new ArrayList<Class<?>>();
+        interfaces.add(Source.class);
+        interfaces.add(Source2.class);
+        SystemAtomicContext context = MockFactory.createSystemAtomicContext("source", interfaces,
+                SourceImpl.class, false, null, null, null);
+        scopeContext.register(context);
+        context.setScopeContext(scopeContext);
+        parent.registerContext(context);
+        scopeContext.publish(new ModuleStart(this, parent));
+        Source source = parent.resolveInstance(Source.class);
+        assertNotNull(source);
+        Source2 source2 = parent.resolveInstance(Source2.class);
+        assertSame(source, source2);
+        assertNull(parent.resolveExternalInstance(Source.class));
+    }
+
+    public void testServiceAutowire() throws Exception {
+        WorkContext workContext = new WorkContextImpl();
+        ModuleScopeContext scopeContext = new ModuleScopeContext(workContext);
+        scopeContext.start();
+        SystemCompositeContext<?> parent = new SystemCompositeContextImpl("parent", null, null);
+        parent.start();
+        List<Class<?>> interfaces = new ArrayList<Class<?>>();
+        interfaces.add(Source.class);
+        interfaces.add(Source2.class);
+        SystemAtomicContext context = MockFactory.createSystemAtomicContext("source", interfaces,
+                SourceImpl.class, false, null, null, null);
+        scopeContext.register(context);
+        context.setScopeContext(scopeContext);
+        SystemServiceContext<Source> serviceContext = new SystemServiceContextImpl<Source>("sourceService", Source.class, "source", parent);
+        parent.registerContext(serviceContext);
+        parent.registerContext(context);
+        scopeContext.publish(new ModuleStart(this, parent));
+        Source source = parent.resolveExternalInstance(Source.class);
+        assertNotNull(source);
+        Source2 source2 = parent.resolveExternalInstance(Source2.class);
+        assertNull(source2);
+    }
+
+    public void testReferenceAutowire() throws Exception {
+        WorkContext workContext = new WorkContextImpl();
+        ModuleScopeContext scopeContext = new ModuleScopeContext(workContext);
+        scopeContext.start();
+        SystemCompositeContext<?> parent = new SystemCompositeContextImpl("parent", null, null);
+        parent.start();
+        ReferenceContext<Source> referenceContext = new MockReferenceContext<Source>(
+                "sourceReference", Source.class, new SourceImpl());
+        parent.registerContext(referenceContext);
+        scopeContext.publish(new ModuleStart(this, parent));
+        Source source = parent.resolveInstance(Source.class);
+        assertNotNull(source);
+        assertNull(parent.resolveExternalInstance(Source.class));
+    }
+
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public static class SourceImpl implements Source, Source2 {
+        public SourceImpl() {
+        }
+    }
+
+    public static interface Source {
+
+    }
+
+    public static interface Source2 {
+    }
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/ChildLocateTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/ChildLocateTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/ChildLocateTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/ChildLocateTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,59 @@
+package org.apache.tuscany.core.system.context;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.mock.component.SourceImpl;
+import org.apache.tuscany.core.mock.component.Source;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.CompositeContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class ChildLocateTestCase extends TestCase {
+
+     public void testChildLocate() throws Exception {
+//         WorkContext workContext = new WorkContextImpl();
+//         ModuleScopeContext scopeContext = new ModuleScopeContext(workContext);
+//         scopeContext.start();
+//         SystemCompositeContext parent = new SystemCompositeContextImpl("parent", null, null);
+//         SystemCompositeContext child1 = new SystemCompositeContextImpl("child1", null, null);
+//         child1.setParent(parent);
+//         parent.registerContext(child1);
+//         parent.start();
+//         SystemAtomicContext context = MockFactory.createSystemAtomicContext("source", SourceImpl.class);
+//         scopeContext.register(context);
+//         context.setScopeContext(scopeContext);
+//         scopeContext.publish(new ModuleStart(this, parent));
+//
+//         assertNotNull(source);
+//         CompositeContext composite1 = (CompositeContext) parent.getContext("child1");
+//         CompositeContext composite2 = (CompositeContext) composite1.getContext("child2");
+//         AtomicContext ctx2 = (AtomicContext) composite2.getContext("source");
+//         Source source2 = (Source) ctx2.getInstance();
+//         assertSame(source, source2);
+//         scopeContext.onEvent(new ModuleStop(this, parent));
+//         parent.stop();
+//         scopeContext.stop();
+/////
+
+//        system.start();
+//        Component compositeComponent = MockFactory.createCompositeComponent("system.child");
+//        system.registerModelObject(compositeComponent);
+//        CompositeContext childContext = (CompositeContext) system.getContext("system.child");
+//        Assert.assertNotNull(childContext);
+//
+//        Component component = factory.createSystemComponent("TestService1", ModuleScopeSystemComponent.class, ModuleScopeSystemComponentImpl.class, Scope.MODULE);
+//        EntryPoint ep = MockFactory.createEPSystemBinding("TestService1EP", ModuleScopeSystemComponent.class, "TestService1", component);
+//        childContext.registerModelObject(component);
+//        childContext.registerModelObject(ep);
+//        childContext.publish(new ModuleStart(this));
+//        Assert.assertNotNull(system.getContext("system.child").getInstance(new QualifiedName("./TestService1EP")));
+//        childContext.publish(new ModuleStop(this));
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/CompositePropagationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/CompositePropagationTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/CompositePropagationTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/CompositePropagationTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,122 @@
+package org.apache.tuscany.core.system.context;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.injection.EventInvoker;
+import org.apache.tuscany.core.injection.MethodEventInvoker;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.mock.component.ModuleScopeInitDestroyComponent;
+import org.apache.tuscany.core.mock.component.Source;
+import org.apache.tuscany.core.mock.component.SourceImpl;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.WorkContext;
+
+/**
+ * Tests registering arbirarily deep child composite contexts
+ *
+ * @version $Rev$ $Date$
+ */
+public class CompositePropagationTestCase extends TestCase {
+
+    private EventInvoker<Object> initInvoker;
+    private EventInvoker<Object> destroyInvoker;
+
+    public void testLifecyclePropagation() throws NoSuchMethodException {
+        WorkContext workContext = new WorkContextImpl();
+        ModuleScopeContext scopeContext = new ModuleScopeContext(workContext);
+        scopeContext.start();
+        SystemCompositeContext parent = new SystemCompositeContextImpl("parent", null, null);
+        SystemCompositeContext child1 = new SystemCompositeContextImpl("child1", null, null);
+        SystemCompositeContext child2 = new SystemCompositeContextImpl("child2", null, null);
+        child2.setParent(child1);
+        child1.setParent(parent);
+        parent.registerContext(child1);
+        child1.registerContext(child2);
+        parent.start();
+        SystemAtomicContext context = MockFactory.createSystemAtomicContext("source", SourceImpl.class);
+        scopeContext.register(context);
+        context.setScopeContext(scopeContext);
+        child2.registerContext(context);
+        scopeContext.publish(new ModuleStart(this, parent));
+        AtomicContext ctx = (AtomicContext) child2.getContext("source");
+        Source source = (Source) ctx.getService();
+        assertNotNull(source);
+        CompositeContext composite1 = (CompositeContext) parent.getContext("child1");
+        CompositeContext composite2 = (CompositeContext) composite1.getContext("child2");
+        AtomicContext ctx2 = (AtomicContext) composite2.getContext("source");
+        Source source2 = (Source) ctx2.getService();
+        assertSame(source, source2);
+        scopeContext.onEvent(new ModuleStop(this, parent));
+        parent.stop();
+        scopeContext.stop();
+
+        //restart
+        scopeContext.start();
+        child2.setParent(child1);
+        child1.setParent(parent);
+        parent.registerContext(child1);
+        child1.registerContext(child2);
+
+        scopeContext.register(context);
+        context.setScopeContext(scopeContext);
+        child2.registerContext(context);
+
+        parent.start();
+        scopeContext.register(context);
+        context.setScopeContext(scopeContext);
+        AtomicContext ctx3 = (AtomicContext) child2.getContext("source");
+        Source source3 = (Source) ctx3.getService();
+        assertNotSame(source, source3);
+        parent.stop();
+        scopeContext.stop();
+
+    }
+
+    public void testEventPropagation() throws NoSuchMethodException {
+        WorkContext workContext = new WorkContextImpl();
+        ModuleScopeContext scopeContext = new ModuleScopeContext(workContext);
+        scopeContext.start();
+        SystemCompositeContext parent = new SystemCompositeContextImpl("parent", null, null);
+        SystemCompositeContext child1 = new SystemCompositeContextImpl("child1", null, null);
+        SystemCompositeContext child2 = new SystemCompositeContextImpl("child2", null, null);
+        child2.setParent(child1);
+        child1.setParent(parent);
+        parent.registerContext(child1);
+        child1.registerContext(child2);
+        parent.start();
+        List<Class<?>> interfaces = new ArrayList<Class<?>>();
+        interfaces.add(ModuleScopeInitDestroyComponent.class);
+        SystemAtomicContext context = MockFactory.createSystemAtomicContext("source", interfaces,
+                ModuleScopeInitDestroyComponent.class, false, initInvoker, destroyInvoker, null);
+        scopeContext.register(context);
+        context.setScopeContext(scopeContext);
+        child2.registerContext(context);
+        scopeContext.publish(new ModuleStart(this, parent));
+        AtomicContext ctx = (AtomicContext) child2.getContext("source");
+        ModuleScopeInitDestroyComponent source = (ModuleScopeInitDestroyComponent) ctx.getService();
+        assertNotNull(source);
+        assertTrue(source.isInitialized());
+        scopeContext.onEvent(new ModuleStop(this, parent));
+        assertTrue(source.isDestroyed());
+        parent.stop();
+        scopeContext.stop();
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        initInvoker = new MethodEventInvoker<Object>(ModuleScopeInitDestroyComponent.class.getMethod("init", (Class[]) null));
+        destroyInvoker = new MethodEventInvoker<Object>(ModuleScopeInitDestroyComponent.class.getMethod("destroy", (Class[]) null));
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/DuplicateRegistrationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/DuplicateRegistrationTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/DuplicateRegistrationTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/DuplicateRegistrationTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,44 @@
+package org.apache.tuscany.core.system.context;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.DuplicateNameException;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.mock.MockFactory;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DuplicateRegistrationTestCase extends TestCase {
+
+    public void testDuplicateRegistration() throws Exception {
+        SystemCompositeContext systemContext = new SystemCompositeContextImpl();
+        systemContext.start();
+        systemContext.publish(new ModuleStart(this, null));
+        SystemAtomicContext context1 = MockFactory.createSystemAtomicContext("foo", MockComponent.class);
+        SystemAtomicContext context2 = MockFactory.createSystemAtomicContext("foo", MockComponent.class);
+        systemContext.registerContext(context1);
+        try {
+            systemContext.registerContext(context2);
+            fail();
+        } catch (DuplicateNameException e) {
+            // ok
+        }
+        systemContext.publish(new ModuleStop(this, null));
+        systemContext.stop();
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public static class MockComponent {
+        public String hello(String message) {
+            return message;
+        }
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemAtomicContextTestCase.java Fri May 12 22:45:22 2006
@@ -19,9 +19,9 @@
     public void testContextCreationAndInit() throws Exception {
         ObjectFactory<Foo> factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor((Class[]) null), null, null);
         ScopeContext<AtomicContext> scopeContext = new MockScopeContext();
-        SystemAtomicContext context = new SystemAtomicContext("foo",factory, false, initInvoker, null);
+        SystemAtomicContext context = new SystemAtomicContextImpl("foo",Foo.class,factory,false,initInvoker,null);
         context.setScopeContext(scopeContext);
-        Foo instance = (Foo) context.getInstance(null);
+        Foo instance = (Foo) context.getService(null);
         assertNotNull(instance);
         assertTrue(instance.initialized);
     }

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeContextResolutionTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeContextResolutionTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeContextResolutionTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeContextResolutionTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,46 @@
+package org.apache.tuscany.core.system.context;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.mock.component.Source;
+import org.apache.tuscany.core.mock.component.SourceImpl;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.spi.context.WorkContext;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemCompositeContextResolutionTestCase extends TestCase {
+
+    public void testComponentResolution() throws NoSuchMethodException {
+        WorkContext workContext = new WorkContextImpl();
+        ModuleScopeContext scopeContext = new ModuleScopeContext(workContext);
+        scopeContext.start();
+        SystemCompositeContext composite = new SystemCompositeContextImpl("foo", null, null);
+        composite.start();
+        SystemAtomicContext context = MockFactory.createSystemAtomicContext("source", SourceImpl.class);
+        scopeContext.register(context);
+        context.setScopeContext(scopeContext);
+        composite.registerContext(context);
+        scopeContext.publish(new ModuleStart(this, composite));
+        AtomicContext ctx = (AtomicContext) composite.getContext("source");
+        Source source = (Source) ctx.getService();
+        assertNotNull(source);
+        scopeContext.publish(new ModuleStop(this, composite));
+        composite.stop();
+        scopeContext.stop();
+    }
+
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeLifecycleTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeLifecycleTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeLifecycleTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeLifecycleTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,67 @@
+package org.apache.tuscany.core.system.context;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.spi.context.AtomicContext;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.mock.component.SourceImpl;
+import org.apache.tuscany.core.mock.component.Source;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SystemCompositeLifecycleTestCase extends TestCase {
+
+    public void testLifecycle() throws Exception {
+        SystemCompositeContext composite = new SystemCompositeContextImpl("foo", null, null);
+        composite.start();
+        assertNull(composite.getContext("nothtere"));
+        composite.stop();
+        composite.start();
+        assertNull(composite.getContext("nothtere"));
+        composite.stop();
+    }
+
+    public void testRestart() throws NoSuchMethodException {
+        WorkContext workContext = new WorkContextImpl();
+        ModuleScopeContext scopeContext = new ModuleScopeContext(workContext);
+        scopeContext.start();
+        SystemCompositeContext composite = new SystemCompositeContextImpl("foo", null, null);
+        composite.start();
+        SystemAtomicContext context = MockFactory.createSystemAtomicContext("source", SourceImpl.class);
+        scopeContext.register(context);
+        context.setScopeContext(scopeContext);
+        composite.registerContext(context);
+        scopeContext.publish(new ModuleStart(this, composite));
+        AtomicContext ctx = (AtomicContext) composite.getContext("source");
+        Source source = (Source) ctx.getService();
+        assertNotNull(source);
+        scopeContext.publish(new ModuleStop(this, composite));
+        composite.stop();
+        scopeContext.stop();
+
+        scopeContext.start();
+        composite.start();
+        composite.registerContext(context);
+        scopeContext.publish(new ModuleStart(this, composite));
+        ctx = (AtomicContext) composite.getContext("source");
+        Source source2 = (Source) ctx.getService();
+        assertNotSame(source, source2);
+        scopeContext.publish(new ModuleStop(this, composite));
+        composite.stop();
+        scopeContext.stop();
+
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemObjectRegistrationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemObjectRegistrationTestCase.java?rev=406016&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemObjectRegistrationTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/system/context/SystemObjectRegistrationTestCase.java Fri May 12 22:45:22 2006
@@ -0,0 +1,60 @@
+package org.apache.tuscany.core.system.context;
+
+import javax.naming.ConfigurationException;
+
+import org.apache.tuscany.core.context.event.ModuleStart;
+import org.apache.tuscany.core.context.event.ModuleStop;
+import org.apache.tuscany.core.context.DuplicateNameException;
+import org.apache.tuscany.spi.context.AtomicContext;
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SystemObjectRegistrationTestCase extends TestCase {
+    private SystemCompositeContext systemContext;
+
+    public void testRegistration() throws Exception {
+        MockComponent instance = new MockComponent();
+        systemContext.registerJavaObject("foo", MockComponent.class, instance);
+        MockComponent resolvedInstance = (MockComponent)((AtomicContext)systemContext.getContext("foo")).getService();
+        assertSame(instance, resolvedInstance);
+    }
+
+    public void testDuplicateRegistration() throws ConfigurationException {
+        MockComponent instance = new MockComponent();
+        systemContext.registerJavaObject("foo", MockComponent.class, instance);
+        try {
+            systemContext.registerJavaObject("foo", MockComponent.class, instance);
+            fail();
+        } catch (DuplicateNameException e) {
+            // ok
+        }
+    }
+
+    public void testAutowireToObject()  {
+        MockComponent instance = new MockComponent();
+        systemContext.registerJavaObject("foo", MockComponent.class, instance);
+        assertSame(instance, systemContext.resolveInstance(MockComponent.class));
+        assertNull(systemContext.resolveExternalInstance(MockComponent.class));
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+        systemContext = new SystemCompositeContextImpl();
+        systemContext.start();
+        systemContext.publish(new ModuleStart(this,null));
+    }
+
+    protected void tearDown() throws Exception {
+        systemContext.publish(new ModuleStop(this,null));
+        systemContext.stop();
+        super.tearDown();
+    }
+
+    private static class MockComponent {
+        public String hello(String message) {
+            return message;
+        }
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/InvocationConfigurationErrorTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/InvocationConfigurationErrorTestCase.java?rev=406016&r1=406015&r2=406016&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/InvocationConfigurationErrorTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/InvocationConfigurationErrorTestCase.java Fri May 12 22:45:22 2006
@@ -22,8 +22,8 @@
 import org.apache.tuscany.core.wire.mock.SimpleTarget;
 import org.apache.tuscany.core.wire.mock.SimpleTargetImpl;
 import org.apache.tuscany.spi.wire.Message;
-import org.apache.tuscany.spi.wire.SourceInvocationConfiguration;
-import org.apache.tuscany.spi.wire.TargetInvocationConfiguration;
+import org.apache.tuscany.spi.wire.SourceInvocationChain;
+import org.apache.tuscany.spi.wire.TargetInvocationChain;
 
 /**
  * Tests error propagation through an innvocation
@@ -48,7 +48,7 @@
     }
 
     public void testInvokeWithHandlers() throws Exception {
-        SourceInvocationConfiguration source = new SourceInvocationConfigurationImpl(hello);
+        SourceInvocationChain source = new SourceInvocationChainImpl(hello);
         MockHandler sourceRequestHandler = new MockHandler();
         MockHandler sourceResponseHandler = new MockHandler();
         MockSyncInterceptor sourceInterceptor = new MockSyncInterceptor();
@@ -56,7 +56,7 @@
         source.addResponseHandler(sourceResponseHandler);
         source.addInterceptor(sourceInterceptor);
 
-        TargetInvocationConfiguration target = new TargetInvocationConfigurationImpl(hello);
+        TargetInvocationChain target = new TargetInvocationChainImpl(hello);
         MockHandler targetRequestHandler = new MockHandler();
         MockHandler targetResponseHandler = new MockHandler();
         MockSyncInterceptor targetInterceptor = new MockSyncInterceptor();
@@ -86,13 +86,13 @@
     }
 
     public void testInvokeWithRequestHandlers() throws Exception {
-        SourceInvocationConfiguration source = new SourceInvocationConfigurationImpl(hello);
+        SourceInvocationChain source = new SourceInvocationChainImpl(hello);
         MockHandler sourceRequestHandler = new MockHandler();
         MockSyncInterceptor sourceInterceptor = new MockSyncInterceptor();
         source.addRequestHandler(sourceRequestHandler);
         source.addInterceptor(sourceInterceptor);
 
-        TargetInvocationConfiguration target = new TargetInvocationConfigurationImpl(hello);
+        TargetInvocationChain target = new TargetInvocationChainImpl(hello);
         MockHandler targetRequestHandler = new MockHandler();
         MockSyncInterceptor targetInterceptor = new MockSyncInterceptor();
         target.addRequestHandler(targetRequestHandler);
@@ -121,11 +121,11 @@
      * Tests basic wiring of a source to a target, including handlers and interceptors
      */
     public void testInvokeWithInterceptorsOnly() throws Exception {
-        SourceInvocationConfiguration source = new SourceInvocationConfigurationImpl(hello);
+        SourceInvocationChain source = new SourceInvocationChainImpl(hello);
         MockSyncInterceptor sourceInterceptor = new MockSyncInterceptor();
         source.addInterceptor(sourceInterceptor);
 
-        TargetInvocationConfiguration target = new TargetInvocationConfigurationImpl(hello);
+        TargetInvocationChain target = new TargetInvocationChainImpl(hello);
         MockSyncInterceptor targetInterceptor = new MockSyncInterceptor();
         target.addInterceptor(targetInterceptor);
         target.addInterceptor(new InvokerInterceptor());