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());