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/07 05:28:12 UTC

svn commit: r400402 [2/3] - in /incubator/tuscany/sandbox/jboynes/sca: containers/container.java/src/main/java/org/apache/tuscany/container/java/assembly/ containers/container.java/src/main/java/org/apache/tuscany/container/java/assembly/impl/ containe...

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/binding/EntryPointToJavaTestCase.java Sat May  6 20:28:07 2006
@@ -51,119 +51,119 @@
      * Tests creation and wire of an entry point wired to a module-scoped service offered by a Java component
      */
     public void testEPtoJavaModuleScopeInvoke() throws Throwable {
-        RuntimeContext runtime = MockFactory.registerFooBinding(MockFactory.createJavaRuntime());
-        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockFactory.SYSTEM_CHILD))
-                .getContext(MockFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
-
-        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
-        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-        registry.registerTargetBuilder(interceptorBuilder);
-        runtime.getRootContext().registerModelObject(MockFactory.createCompositeComponent("test.module"));
-        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
-        child.registerModelObject(MockFactory.createModuleWithEntryPoint(Scope.MODULE));
-        child.publish(new ModuleStart(this));
-        Object id = new Object();
-        child.publish(new RequestStart(this, id));
-        EntryPointContext ctx = (EntryPointContext) child.getContext("source");
-        Assert.assertNotNull(ctx);
-        InvocationHandler handler = (InvocationHandler) ctx.getHandler();
-        Assert.assertEquals(0, mockInterceptor.getCount());
-        Object response = handler.invoke(null, hello, new Object[]{"foo"});
-        Assert.assertEquals("Hello foo", response);
-        Assert.assertEquals(1, mockInterceptor.getCount());
-        Object id2 = new Object();
-        child.publish(new RequestStart(this, id2));
-
-        // second request
-        Object id3 = new Object();
-        child.publish(new RequestStart(this, id3));
-        ctx = (EntryPointContext) child.getContext("source");
-        Assert.assertNotNull(ctx);
-        handler = (InvocationHandler) ctx.getHandler();
-        Assert.assertEquals(1, mockInterceptor.getCount());
-        response = handler.invoke(null, hello, new Object[]{"foo"});
-        Assert.assertEquals("Hello foo", response);
-        Assert.assertEquals(2, mockInterceptor.getCount());
-        HelloWorldService service1 = (HelloWorldService) child.getContext("target").getInstance(null);
-        Assert.assertEquals(2, service1.count());
-        child.publish(new RequestEnd(this, id3));
-
-        child.publish(new ModuleStop(this));
-        runtime.stop();
+//        RuntimeContext runtime = MockFactory.registerFooBinding(MockFactory.createJavaRuntime());
+//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockFactory.SYSTEM_CHILD))
+//                .getContext(MockFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
+//
+//        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
+//        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
+//        registry.registerTargetBuilder(interceptorBuilder);
+//        runtime.getRootContext().registerModelObject(MockFactory.createCompositeComponent("test.module"));
+//        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
+//        child.registerModelObject(MockFactory.createModuleWithEntryPoint(Scope.MODULE));
+//        child.publish(new ModuleStart(this));
+//        Object id = new Object();
+//        child.publish(new RequestStart(this, id));
+//        EntryPointContext ctx = (EntryPointContext) child.getContext("source");
+//        Assert.assertNotNull(ctx);
+//        InvocationHandler handler = (InvocationHandler) ctx.getHandler();
+//        Assert.assertEquals(0, mockInterceptor.getCount());
+//        Object response = handler.invoke(null, hello, new Object[]{"foo"});
+//        Assert.assertEquals("Hello foo", response);
+//        Assert.assertEquals(1, mockInterceptor.getCount());
+//        Object id2 = new Object();
+//        child.publish(new RequestStart(this, id2));
+//
+//        // second request
+//        Object id3 = new Object();
+//        child.publish(new RequestStart(this, id3));
+//        ctx = (EntryPointContext) child.getContext("source");
+//        Assert.assertNotNull(ctx);
+//        handler = (InvocationHandler) ctx.getHandler();
+//        Assert.assertEquals(1, mockInterceptor.getCount());
+//        response = handler.invoke(null, hello, new Object[]{"foo"});
+//        Assert.assertEquals("Hello foo", response);
+//        Assert.assertEquals(2, mockInterceptor.getCount());
+//        HelloWorldService service1 = (HelloWorldService) child.getContext("target").getInstance(null);
+//        Assert.assertEquals(2, service1.count());
+//        child.publish(new RequestEnd(this, id3));
+//
+//        child.publish(new ModuleStop(this));
+//        runtime.stop();
     }
 
     /**
      * Tests creation and wire of an entry point wired to a session-scoped service offered by a Java component
      */
     public void testEPtoJavaSessionScopeInvoke() throws Throwable {
-        RuntimeContext runtime = MockFactory.registerFooBinding(MockFactory.createJavaRuntime());
-        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockFactory.SYSTEM_CHILD))
-                .getContext(MockFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
-        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
-        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-        registry.registerTargetBuilder(interceptorBuilder);
-        runtime.getRootContext().registerModelObject(MockFactory.createCompositeComponent("test.module"));
-        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
-        child.registerModelObject(MockFactory.createModuleWithEntryPoint(Scope.SESSION));
-        child.publish(new ModuleStart(this));
-
-        // first session
-        Object session = new Object();
-        Object id = new Object();
-        child.publish(new RequestStart(this, id));
-        child.publish(new HttpSessionBound(this, session));
-
-        EntryPointContext ctx = (EntryPointContext) child.getContext("source");
-        Assert.assertNotNull(ctx);
-        InvocationHandler handler = (InvocationHandler) ctx.getHandler();
-        Assert.assertEquals(0, mockInterceptor.getCount());
-        Object response = handler.invoke(null, hello, new Object[]{"foo"});
-        Assert.assertEquals("Hello foo", response);
-        Assert.assertEquals(1, mockInterceptor.getCount());
-        child.publish(new RequestEnd(this, id));
-
-        Object id2 = new Object();
-        child.publish(new RequestStart(this, id2));
-        child.publish(new HttpSessionBound(this, session));
-        EntryPointContext ctx2 = (EntryPointContext) child.getContext("source");
-        Assert.assertNotNull(ctx2);
-        response = handler.invoke(null, hello, new Object[]{"foo"});
-        Assert.assertEquals("Hello foo", response);
-        Assert.assertEquals(2, mockInterceptor.getCount());
-        HelloWorldService service1 = (HelloWorldService) child.getContext("target").getInstance(null);
-        Assert.assertEquals(2, service1.count());
-        child.publish(new RequestEnd(this, id2));
-        child.publish(new HttpSessionEnd(this, session));
-
-        // second session
-        Object session2 = new Object();
-        child.publish(new RequestStart(this, new Object()));
-        child.publish(new HttpSessionBound(this, session2));
-
-        ctx = (EntryPointContext) child.getContext("source");
-        Assert.assertNotNull(ctx);
-        Assert.assertEquals(2, mockInterceptor.getCount());
-        response = handler.invoke(null, hello, new Object[]{"foo"});
-        Assert.assertEquals("Hello foo", response);
-        Assert.assertEquals(3, mockInterceptor.getCount());
-        child.publish(new HttpSessionBound(this, session2));
-
-        Object id3 = new Object();
-        child.publish(new RequestStart(this, id3));
-        child.publish(new HttpSessionBound(this, session2));
-        ctx2 = (EntryPointContext) child.getContext("source");
-        Assert.assertNotNull(ctx2);
-        response = handler.invoke(null, hello, new Object[]{"foo"});
-        Assert.assertEquals("Hello foo", response);
-        Assert.assertEquals(4, mockInterceptor.getCount());
-        HelloWorldService service2 = (HelloWorldService) child.getContext("target").getInstance(null);
-        Assert.assertEquals(2, service2.count());
-        Assert.assertEquals(2, service1.count()); //ensure sessions not crossed
-        child.publish(new RequestEnd(this, session2));
-        child.publish(new HttpSessionBound(this, session2));
-
-        child.publish(new ModuleStop(this));
-        runtime.stop();
+//        RuntimeContext runtime = MockFactory.registerFooBinding(MockFactory.createJavaRuntime());
+//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockFactory.SYSTEM_CHILD))
+//                .getContext(MockFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
+//        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
+//        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
+//        registry.registerTargetBuilder(interceptorBuilder);
+//        runtime.getRootContext().registerModelObject(MockFactory.createCompositeComponent("test.module"));
+//        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
+//        child.registerModelObject(MockFactory.createModuleWithEntryPoint(Scope.SESSION));
+//        child.publish(new ModuleStart(this));
+//
+//        // first session
+//        Object session = new Object();
+//        Object id = new Object();
+//        child.publish(new RequestStart(this, id));
+//        child.publish(new HttpSessionBound(this, session));
+//
+//        EntryPointContext ctx = (EntryPointContext) child.getContext("source");
+//        Assert.assertNotNull(ctx);
+//        InvocationHandler handler = (InvocationHandler) ctx.getHandler();
+//        Assert.assertEquals(0, mockInterceptor.getCount());
+//        Object response = handler.invoke(null, hello, new Object[]{"foo"});
+//        Assert.assertEquals("Hello foo", response);
+//        Assert.assertEquals(1, mockInterceptor.getCount());
+//        child.publish(new RequestEnd(this, id));
+//
+//        Object id2 = new Object();
+//        child.publish(new RequestStart(this, id2));
+//        child.publish(new HttpSessionBound(this, session));
+//        EntryPointContext ctx2 = (EntryPointContext) child.getContext("source");
+//        Assert.assertNotNull(ctx2);
+//        response = handler.invoke(null, hello, new Object[]{"foo"});
+//        Assert.assertEquals("Hello foo", response);
+//        Assert.assertEquals(2, mockInterceptor.getCount());
+//        HelloWorldService service1 = (HelloWorldService) child.getContext("target").getInstance(null);
+//        Assert.assertEquals(2, service1.count());
+//        child.publish(new RequestEnd(this, id2));
+//        child.publish(new HttpSessionEnd(this, session));
+//
+//        // second session
+//        Object session2 = new Object();
+//        child.publish(new RequestStart(this, new Object()));
+//        child.publish(new HttpSessionBound(this, session2));
+//
+//        ctx = (EntryPointContext) child.getContext("source");
+//        Assert.assertNotNull(ctx);
+//        Assert.assertEquals(2, mockInterceptor.getCount());
+//        response = handler.invoke(null, hello, new Object[]{"foo"});
+//        Assert.assertEquals("Hello foo", response);
+//        Assert.assertEquals(3, mockInterceptor.getCount());
+//        child.publish(new HttpSessionBound(this, session2));
+//
+//        Object id3 = new Object();
+//        child.publish(new RequestStart(this, id3));
+//        child.publish(new HttpSessionBound(this, session2));
+//        ctx2 = (EntryPointContext) child.getContext("source");
+//        Assert.assertNotNull(ctx2);
+//        response = handler.invoke(null, hello, new Object[]{"foo"});
+//        Assert.assertEquals("Hello foo", response);
+//        Assert.assertEquals(4, mockInterceptor.getCount());
+//        HelloWorldService service2 = (HelloWorldService) child.getContext("target").getInstance(null);
+//        Assert.assertEquals(2, service2.count());
+//        Assert.assertEquals(2, service1.count()); //ensure sessions not crossed
+//        child.publish(new RequestEnd(this, session2));
+//        child.publish(new HttpSessionBound(this, session2));
+//
+//        child.publish(new ModuleStop(this));
+//        runtime.stop();
     }
 
 
@@ -171,43 +171,43 @@
      * Tests creation and wire of an entry point wired to a module-scoped service offered by a Java component
      */
     public void testEPtoJavaStatelessInvoke() throws Throwable {
-        RuntimeContext runtime = MockFactory.registerFooBinding(MockFactory.createJavaRuntime());
-        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockFactory.SYSTEM_CHILD))
-                .getContext(MockFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
-        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
-        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
-        registry.registerTargetBuilder(interceptorBuilder);
-        runtime.getRootContext().registerModelObject(MockFactory.createCompositeComponent("test.module"));
-        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
-        child.registerModelObject(MockFactory.createModuleWithEntryPoint(Scope.INSTANCE));
-        child.publish(new ModuleStart(this));
-        Object id = new Object();
-        child.publish(new RequestStart(this, id));
-        EntryPointContext ctx = (EntryPointContext) child.getContext("source");
-        Assert.assertNotNull(ctx);
-        InvocationHandler handler = (InvocationHandler) ctx.getHandler();
-        Assert.assertEquals(0, mockInterceptor.getCount());
-        Object response = handler.invoke(null, hello, new Object[]{"foo"});
-        Assert.assertEquals("Hello foo", response);
-        Assert.assertEquals(1, mockInterceptor.getCount());
-        child.publish(new RequestEnd(this, id));
-
-        // second request
-        Object id2 = new Object();
-        child.publish(new RequestStart(this, id2));
-        ctx = (EntryPointContext) child.getContext("source");
-        Assert.assertNotNull(ctx);
-        handler = (InvocationHandler) ctx.getHandler();
-        Assert.assertEquals(1, mockInterceptor.getCount());
-        response = handler.invoke(null, hello, new Object[]{"foo"});
-        Assert.assertEquals("Hello foo", response);
-        Assert.assertEquals(2, mockInterceptor.getCount());
-        HelloWorldService service1 = (HelloWorldService) child.getContext("target").getInstance(null);
-        Assert.assertEquals(0, service1.count());
-        child.publish(new RequestEnd(this, id));
-
-        child.publish(new ModuleStop(this));
-        runtime.stop();
+//        RuntimeContext runtime = MockFactory.registerFooBinding(MockFactory.createJavaRuntime());
+//        PolicyBuilderRegistry registry = (PolicyBuilderRegistry) ((CompositeContext) runtime.getSystemContext().getContext(MockFactory.SYSTEM_CHILD))
+//                .getContext(MockFactory.POLICY_BUILDER_REGISTRY).getInstance(null);
+//        MockSyncInterceptor mockInterceptor = new MockSyncInterceptor();
+//        MockInterceptorBuilder interceptorBuilder = new MockInterceptorBuilder(mockInterceptor, false);
+//        registry.registerTargetBuilder(interceptorBuilder);
+//        runtime.getRootContext().registerModelObject(MockFactory.createCompositeComponent("test.module"));
+//        CompositeContext child = (CompositeContext) runtime.getRootContext().getContext("test.module");
+//        child.registerModelObject(MockFactory.createModuleWithEntryPoint(Scope.INSTANCE));
+//        child.publish(new ModuleStart(this));
+//        Object id = new Object();
+//        child.publish(new RequestStart(this, id));
+//        EntryPointContext ctx = (EntryPointContext) child.getContext("source");
+//        Assert.assertNotNull(ctx);
+//        InvocationHandler handler = (InvocationHandler) ctx.getHandler();
+//        Assert.assertEquals(0, mockInterceptor.getCount());
+//        Object response = handler.invoke(null, hello, new Object[]{"foo"});
+//        Assert.assertEquals("Hello foo", response);
+//        Assert.assertEquals(1, mockInterceptor.getCount());
+//        child.publish(new RequestEnd(this, id));
+//
+//        // second request
+//        Object id2 = new Object();
+//        child.publish(new RequestStart(this, id2));
+//        ctx = (EntryPointContext) child.getContext("source");
+//        Assert.assertNotNull(ctx);
+//        handler = (InvocationHandler) ctx.getHandler();
+//        Assert.assertEquals(1, mockInterceptor.getCount());
+//        response = handler.invoke(null, hello, new Object[]{"foo"});
+//        Assert.assertEquals("Hello foo", response);
+//        Assert.assertEquals(2, mockInterceptor.getCount());
+//        HelloWorldService service1 = (HelloWorldService) child.getContext("target").getInstance(null);
+//        Assert.assertEquals(0, service1.count());
+//        child.publish(new RequestEnd(this, id));
+//
+//        child.publish(new ModuleStop(this));
+//        runtime.stop();
     }
 
     public void testEPtoJavaRequestInvoke() throws Throwable {

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/MediationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/MediationTestCase.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/MediationTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/MediationTestCase.java Sat May  6 20:28:07 2006
@@ -22,6 +22,8 @@
 import org.apache.tuscany.core.message.Message;
 import org.apache.tuscany.core.message.MessageFactory;
 import org.apache.tuscany.core.message.impl.MessageFactoryImpl;
+import org.apache.tuscany.core.wire.MessageImpl;
+import org.apache.tuscany.spi.wire.Message;
 
 /**
  * Tests invoking on a different interface from the one actually implemented by the target
@@ -32,15 +34,13 @@
 
     private Method hello;
 
-    private MessageFactory msgFactory = new MessageFactoryImpl();
-
     public void setUp() throws Exception {
         hello = Hello.class.getMethod("hello", String.class);
     }
 
     public void testMediation() throws Exception {
         StaticJavaComponentTargetInvoker invoker = new StaticJavaComponentTargetInvoker(hello, new SimpleTargetImpl());
-        Message msg = msgFactory.createMessage();
+        Message msg = new MessageImpl();
         msg.setBody("foo");
         Assert.assertEquals("foo", invoker.invoke(msg).getBody());
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/ScopedPojoInvokerTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/ScopedPojoInvokerTestCase.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/ScopedPojoInvokerTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/ScopedPojoInvokerTestCase.java Sat May  6 20:28:07 2006
@@ -25,6 +25,9 @@
 import org.apache.tuscany.container.java.mock.MockScopeContext;
 import org.apache.tuscany.core.context.QualifiedName;
 import org.apache.tuscany.core.context.ScopeContext;
+import org.apache.tuscany.core.mock.context.scope.MockScopeContext;
+import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.QualifiedName;
 
 public class ScopedPojoInvokerTestCase extends TestCase {
 

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/mock/MockHandler.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/mock/MockHandler.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/mock/MockHandler.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/mock/MockHandler.java Sat May  6 20:28:07 2006
@@ -3,8 +3,8 @@
  */
 package org.apache.tuscany.container.java.invocation.mock;
 
-import org.apache.tuscany.core.wire.MessageHandler;
-import org.apache.tuscany.core.message.Message;
+import org.apache.tuscany.spi.wire.MessageHandler;
+import org.apache.tuscany.spi.wire.Message;
 
 /**
  *
@@ -12,13 +12,13 @@
 public class MockHandler implements MessageHandler {
 
     private int count =0;
-    
+
     public boolean processMessage(Message message) {
         //System.out.println("Invoking handler");
         count++;
         return true;
     }
-    
+
     public int getCount(){
         return count;
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/mock/MockSyncInterceptor.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/mock/MockSyncInterceptor.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/mock/MockSyncInterceptor.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/invocation/mock/MockSyncInterceptor.java Sat May  6 20:28:07 2006
@@ -16,8 +16,8 @@
  */
 package org.apache.tuscany.container.java.invocation.mock;
 
-import org.apache.tuscany.core.wire.Interceptor;
-import org.apache.tuscany.core.message.Message;
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.Message;
 
 public class MockSyncInterceptor implements Interceptor {
 
@@ -37,9 +37,9 @@
     public int getCount() {
         return count;
     }
-    
+
     public void setNext(Interceptor next) {
-        this.next=next;
+        this.next = next;
     }
 }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBinding.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBinding.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBinding.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/mock/binding/foo/FooBinding.java Sat May  6 20:28:07 2006
@@ -13,16 +13,19 @@
  */
 package org.apache.tuscany.container.java.mock.binding.foo;
 
+import java.util.Map;
+
 import org.apache.tuscany.model.assembly.AssemblyContext;
 import org.apache.tuscany.model.assembly.AssemblyVisitor;
 import org.apache.tuscany.model.assembly.Binding;
+import org.apache.tuscany.model.Binding;
 
 /**
  * Represents a mock binding that echoes back a single parameter
  * 
  * @version $Rev$ $Date$
  */
-public class FooBinding implements Binding {
+public class FooBinding extends Binding {
 
     public FooBinding() {
     }
@@ -34,25 +37,8 @@
     public void setURI(String value) {
     }
 
-    public void initialize(AssemblyContext modelContext) {
-    }
-
-    public void freeze() {
-    }
-
-    public boolean accept(AssemblyVisitor visitor) {
-        return true;
-    }
-
-    private Object contextFactory;
-
-    public void setContextFactory(Object factory) {
-        contextFactory = factory;
-    }
-
-    public Object getContextFactory() {
-        System.out.println("retting");
-        return contextFactory;
+    public Map<?, ?> getExtensions() {
+        return super.getExtensions();
     }
 
 }

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/HttpSessionStart.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/HttpSessionStart.java?rev=400402&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/HttpSessionStart.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/HttpSessionStart.java Sat May  6 20:28:07 2006
@@ -0,0 +1,19 @@
+package org.apache.tuscany.core.context.event;
+
+/**
+ * Propagated when an HTTP-based session has started
+ *
+ * @version $$Rev$$ $$Date$$
+ */
+public class HttpSessionStart extends HttpSessionEvent{
+
+    /**
+     * Creates a new event
+     * @param source the source of the event
+     * @param id the id of the HTTP session being ended
+     */
+    public HttpSessionStart(Object source, Object id) {
+        super(source,id);
+    }
+
+ }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/ModuleStart.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/ModuleStart.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/ModuleStart.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/ModuleStart.java Sat May  6 20:28:07 2006
@@ -18,7 +18,6 @@
      */
     public ModuleStart(Object source, CompositeContext ctx) {
         super(source);
-        assert(ctx != null): "Module composite context was null";
         context = ctx;
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/ModuleStop.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/ModuleStop.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/ModuleStop.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/event/ModuleStop.java Sat May  6 20:28:07 2006
@@ -18,7 +18,6 @@
      */
     public ModuleStop(Object source, CompositeContext ctx) {
         super(source);
-        assert(ctx != null): "Module composite context was null";
         context = ctx;
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/HttpSessionScopeContext.java Sat May  6 20:28:07 2006
@@ -2,10 +2,12 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.tuscany.core.context.event.HttpSessionEnd;
+import org.apache.tuscany.core.context.event.HttpSessionStart;
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.InstanceContext;
@@ -37,8 +39,14 @@
 
     public void onEvent(Event event) {
         checkInit();
-        if (event instanceof HttpSessionEnd) {
-            checkInit();
+        if (event instanceof HttpSessionStart) {
+            Object key = ((HttpSessionStart) event).getId();
+            for (Map.Entry<AtomicContext, Map<Object, InstanceContext>> entry : contexts.entrySet()) {
+                if(entry.getKey().isEagerInit()){
+                    getInstance(entry.getKey(),key);
+                }
+            }
+        } else if (event instanceof HttpSessionEnd) {
             shutdownInstances(((HttpSessionEnd) event).getId());
         }
     }
@@ -62,8 +70,13 @@
     }
 
     public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
-        Map<Object, InstanceContext> contextMap = contexts.get(context);
         Object key = workContext.getIdentifier(HTTP_IDENTIFIER);
+        assert(key != null):"HTTP session key not bound in work context";
+        return getInstance(context, key);
+    }
+
+    private InstanceContext getInstance(AtomicContext context, Object key) {
+        Map<Object, InstanceContext> contextMap = contexts.get(context);
         InstanceContext ctx = contextMap.get(key);
         if (ctx == null) {
             ctx = context.createInstance();
@@ -78,16 +91,24 @@
             }
         }
         return ctx;
+
     }
 
     private void shutdownInstances(Object key) {
-        List<InstanceContext> destroyQueue = destroyQueues.get(key);
+        List<InstanceContext> destroyQueue = destroyQueues.remove(key);
         if (destroyQueue != null) {
             for (Map<Object, InstanceContext> map : contexts.values()) {
                 map.remove(key);
             }
-            for (InstanceContext ctx : destroyQueue) {
-                ctx.stop();
+            ListIterator<InstanceContext> iter = destroyQueue.listIterator(destroyQueue.size());
+            synchronized (destroyQueue) {
+                while (iter.hasPrevious()) {
+                    try {
+                        iter.previous().stop();
+                    } catch (TargetException e) {
+                        // TODO send a monitoring event
+                    }
+                }
             }
         }
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java Sat May  6 20:28:07 2006
@@ -43,8 +43,8 @@
     public void onEvent(Event event) {
         checkInit();
         if (event instanceof ModuleStart) {
-            lifecycleState = RUNNING;
             eagerInitContexts();
+            lifecycleState = RUNNING;
         } else if (event instanceof ModuleStop) {
             shutdownContexts();
         }
@@ -68,7 +68,6 @@
      * Notifies instanceContexts of a shutdown in reverse order to which they were started
      */
     private void shutdownContexts() {
-        checkInit();
         if (destroyQueue.size() == 0) {
             return;
         }
@@ -76,10 +75,7 @@
             // shutdown destroyable instances in reverse instantiation order
             ListIterator<InstanceContext> iter = destroyQueue.listIterator(destroyQueue.size());
             while (iter.hasPrevious()) {
-                InstanceContext context = iter.previous();
-                if (context.getLifecycleState() == RUNNING) {
-                    context.stop();
-                }
+                iter.previous().stop();
             }
             destroyQueue.clear();
         }
@@ -105,13 +101,12 @@
     }
 
     private void eagerInitContexts() throws CoreRuntimeException {
-        checkInit();
         for (Map.Entry<AtomicContext, InstanceContext> entry : instanceContexts.entrySet()) {
             AtomicContext context = entry.getKey();
             if (context.isEagerInit()) {
                 InstanceContext instanceCtx = context.createInstance();
                 instanceContexts.put(context, instanceCtx);
-                instanceCtx.start();
+                destroyQueue.add(instanceCtx);
             }
         }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java Sat May  6 20:28:07 2006
@@ -2,10 +2,12 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.tuscany.core.context.event.RequestEnd;
+import org.apache.tuscany.core.context.event.RequestStart;
 import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.context.AtomicContext;
 import org.apache.tuscany.spi.context.InstanceContext;
@@ -22,7 +24,6 @@
 
     private final Map<AtomicContext, Map<Thread, InstanceContext>> contexts;
     private final Map<Thread, List<InstanceContext>> destroyQueues;
-    //flip Thread, Map<AtomicContext,InstanceContext>
 
     public RequestScopeContext(WorkContext workContext) {
         super("Request Scope", workContext);
@@ -36,8 +37,13 @@
 
     public void onEvent(Event event) {
         checkInit();
-        if (event instanceof RequestEnd) {
-            checkInit();
+        if (event instanceof RequestStart) {
+            for (Map.Entry<AtomicContext, Map<Thread, InstanceContext>> entry : contexts.entrySet()) {
+                if (entry.getKey().isEagerInit()) {
+                    getInstance(entry.getKey());
+                }
+            }
+        } else if (event instanceof RequestEnd) {
             shutdownInstances(Thread.currentThread());
         }
     }
@@ -60,6 +66,7 @@
 
     public InstanceContext getInstanceContext(AtomicContext context) throws TargetException {
         Map<Thread, InstanceContext> instanceContextMap = contexts.get(context);
+        assert(instanceContextMap != null):"Atomic context not registered";
         InstanceContext ctx = instanceContextMap.get(Thread.currentThread());
         if (ctx == null) {
             ctx = context.createInstance();
@@ -79,15 +86,23 @@
     private void shutdownInstances(Thread key) {
         List<InstanceContext> destroyQueue = destroyQueues.remove(key);
         if (destroyQueue != null && destroyQueue.size() > 0) {
-            synchronized (destroyQueue) {
+            if (destroyQueue != null) {
                 Thread thread = Thread.currentThread();
                 for (Map<Thread, InstanceContext> map : contexts.values()) {
                     map.remove(thread);
                 }
-                for (InstanceContext ctx : destroyQueue) {
-                    ctx.stop();
+                ListIterator<InstanceContext> iter = destroyQueue.listIterator(destroyQueue.size());
+                synchronized (destroyQueue) {
+                    while (iter.hasPrevious()) {
+                        try {
+                            iter.previous().stop();
+                        } catch (TargetException e) {
+                            // TODO send a monitoring event
+                        }
+                    }
                 }
             }
+
         }
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/scope/ScopeRegistryImpl.java Sat May  6 20:28:07 2006
@@ -1,14 +1,13 @@
 package org.apache.tuscany.core.context.scope;
 
-import java.util.List;
 import java.util.Map;
-import java.util.ArrayList;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.apache.tuscany.common.ObjectFactory;
+import org.apache.tuscany.model.Scope;
 import org.apache.tuscany.spi.context.CompositeContext;
 import org.apache.tuscany.spi.context.ScopeContext;
+import org.apache.tuscany.spi.context.ScopeNotFoundException;
 import org.apache.tuscany.spi.context.ScopeRegistry;
 
 /**
@@ -16,32 +15,62 @@
  */
 public class ScopeRegistryImpl implements ScopeRegistry {
 
-    private final Map<CompositeContext, List<ScopeContext>> cache;
-    private final List<ObjectFactory<ScopeContext>> factories;
+    private final Map<CompositeContext, ScopeContext> moduleScopeCache;
+    private final Map<Scope, ObjectFactory<ScopeContext>> factoryCache;
 
     public ScopeRegistryImpl() {
-        cache = new ConcurrentHashMap<CompositeContext, List<ScopeContext>>();
-        factories = new CopyOnWriteArrayList<ObjectFactory<ScopeContext>>();
+        moduleScopeCache = new ConcurrentHashMap<CompositeContext, ScopeContext>();
+        factoryCache = new ConcurrentHashMap<Scope, ObjectFactory<ScopeContext>>();
     }
 
-    public List<ScopeContext> getScopeContexts(CompositeContext module) {
-        List<ScopeContext> scopes = cache.get(module);
-        if (scopes == null){
-            scopes = new ArrayList<ScopeContext>();
-            for (ObjectFactory<ScopeContext> factory : factories) {
-                scopes.add(factory.getInstance());
+    public ScopeContext getScopeContext(Scope scope, CompositeContext remotableContext) {
+        if (Scope.MODULE == scope) {
+            ScopeContext moduleScope = moduleScopeCache.get(remotableContext);
+            if (moduleScope == null) {
+                ObjectFactory<ScopeContext> factory = factoryCache.get(scope);
+                if (factory == null) {
+                    ScopeNotFoundException e = new ScopeNotFoundException("Scope object factor not registered for scope");
+                    e.setIdentifier("MODULE");
+                    throw e;
+                }
+                moduleScope = factory.getInstance();
+                moduleScopeCache.put(remotableContext, moduleScope);
             }
-            cache.put(module,scopes);
+            return moduleScope;
         }
-        return scopes;
+        ObjectFactory<ScopeContext> factory = factoryCache.get(scope);
+        if (factory == null) {
+            ScopeNotFoundException e = new ScopeNotFoundException("Scope object factor not registered for scope");
+            switch (scope) {
+                case AGGREGATE:
+                    e.setIdentifier("AGGREGATE");
+                    break;
+                case SESSION:
+                    e.setIdentifier("SESSION");
+                    break;
+                case REQUEST:
+                    e.setIdentifier("REQUEST");
+                    break;
+                case INSTANCE:
+                    e.setIdentifier("INSTANCE");
+                    break;
+                default:
+                    e.setIdentifier("UNKNOWN");
+                    break;
+            }
+            throw e;
+
+        }
+
+        return null;
     }
 
-    public void registerFactory(ObjectFactory<ScopeContext> factory) {
-        factories.add(factory);
+    public void registerFactory(Scope scope, ObjectFactory<ScopeContext> factory) {
+        factoryCache.put(scope, factory);
     }
 
-    public void deRegisterFactory(ObjectFactory<ScopeContext> factory) {
-       factories.remove(factory);
+    public void deregisterFactory(Scope scope) {
+        factoryCache.remove(scope);
     }
 
 

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/system/context/SystemAtomicContext.java Sat May  6 20:28:07 2006
@@ -39,7 +39,7 @@
     }
 
     public Object getInstance(QualifiedName qName) throws TargetException {
-        return scopeContext.getInstance(this);
+        return getTargetInstance();
     }
 
     public void addTargetWireFactory(String serviceName, TargetWireFactory factory) {

Added: 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=400402&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicStatelessScopeTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/BasicStatelessScopeTestCase.java Sat May  6 20:28:07 2006
@@ -0,0 +1,74 @@
+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 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.spi.context.WorkContext;
+
+/**
+ * Unit tests for the module scope container
+ *
+ * @version $Rev: 396284 $ $Date: 2006-04-23 08:27:42 -0700 (Sun, 23 Apr 2006) $
+ */
+public class BasicStatelessScopeTestCase extends TestCase {
+
+    /**
+     * Tests instance identity is properly maintained
+     */
+    public void testInstanceManagement() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        StatelessScopeContext scope = new StatelessScopeContext(ctx);
+        scope.start();
+        SystemAtomicContext context1 = MockFactory.createSystemAtomicContext("comp1",StatelessComponentImpl.class);
+        context1.setScopeContext(scope);
+        scope.register(context1);
+        SystemAtomicContext context2 = MockFactory.createSystemAtomicContext("comp2",StatelessComponentImpl.class);
+        context2.setScopeContext(scope);
+        scope.register(context2);
+        StatelessComponentImpl comp1 = (StatelessComponentImpl) scope.getInstance(context1);
+        Assert.assertNotNull(comp1);
+        StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(context2);
+        Assert.assertNotNull(comp2);
+        Assert.assertNotSame(comp1, comp2);
+        scope.stop();
+    }
+
+    public void testRegisterContextAfterRequest() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        StatelessScopeContext scope = new StatelessScopeContext(ctx);
+
+        scope.start();
+        SystemAtomicContext context1 = MockFactory.createSystemAtomicContext("comp1",StatelessComponentImpl.class);
+        context1.setScopeContext(scope);
+        scope.register(context1);
+        StatelessComponentImpl comp1 = (StatelessComponentImpl) scope.getInstance(context1);
+        Assert.assertNotNull(comp1);
+        SystemAtomicContext context2 = MockFactory.createSystemAtomicContext("comp2",StatelessComponentImpl.class);
+        context2.setScopeContext(scope);
+        scope.register(context2);
+        StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(context2);
+        Assert.assertNotNull(comp2);
+        scope.stop();
+    }
+
+
+    /**
+     * Tests setting no components in the scope
+     */
+    public void testSetNullComponents() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        StatelessScopeContext scope = new StatelessScopeContext(ctx);
+        scope.start();
+        scope.stop();
+    }
+
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/CompositeScopeTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/CompositeScopeTestCase.java?rev=400402&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/CompositeScopeTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/CompositeScopeTestCase.java Sat May  6 20:28:07 2006
@@ -0,0 +1,118 @@
+package org.apache.tuscany.core.context.scope;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests component nesting. This test needs to be in the container.java progject since it relies on Java POJOs
+ * for scope testing.
+ *
+ * @version $Rev: 396284 $ $Date: 2006-04-23 08:27:42 -0700 (Sun, 23 Apr 2006) $
+ */
+public class CompositeScopeTestCase extends TestCase {
+
+    /**
+     * Ensures scope events are propagated in an composite scope
+     */
+    public void testCompositeScopePropagation() throws Exception {
+//        WorkContext ctx = new WorkContextImpl();
+//        CompositeContext moduleComponentCtx = new CompositeContextImpl();
+//        moduleComponentCtx.setName("testMC");
+//        moduleComponentCtx.start();
+//        CompositeScopeContext scopeContainer = new CompositeScopeContext(ctx);
+//        //scopeContainer.registerFactory(MockFactory.createCompositeConfiguration("CompositeComponent"));
+//        scopeContainer.start();
+//        CompositeContext child = (CompositeContext) scopeContainer.getContext("CompositeComponent");
+//
+//        scopeContainer.onEvent(new ModuleStart(this));
+//        Object session = new Object();
+//        Object id = new Object();
+//        //ctx.setIdentifier(EventContext.SESSION,session);
+//        scopeContainer.onEvent(new RequestStart(this,id));
+//        scopeContainer.onEvent(new HttpSessionBound(this,session));
+//        CompositeContext componentCtx = (CompositeContext) scopeContainer.getContext("CompositeComponent");
+//        GenericComponent testService1 = (GenericComponent) componentCtx.getContext("TestService1").getInstance(null);
+//        GenericComponent testService2 = (GenericComponent) componentCtx.getContext("TestService2").getInstance(null);
+//        GenericComponent testService3 = (GenericComponent) componentCtx.getContext("TestService3").getInstance(null);
+//        Assert.assertNotNull(testService1);
+//        Assert.assertNotNull(testService2);
+//        Assert.assertNotNull(testService3);
+//        scopeContainer.onEvent(new RequestEnd(this,id));
+//        scopeContainer.onEvent(new RequestStart(this,id));
+//        scopeContainer.onEvent(new HttpSessionBound(this,session));
+//
+//        GenericComponent testService2a = (GenericComponent) componentCtx.getContext("TestService2").getInstance(null);
+//        Assert.assertNotNull(testService2a);
+//        GenericComponent testService3a = (GenericComponent) componentCtx.getContext("TestService3").getInstance(null);
+//        Assert.assertNotNull(testService3a);
+//        Assert.assertEquals(testService2, testService2a);
+//        Assert.assertNotSame(testService3, testService3a);
+//        scopeContainer.onEvent(new RequestEnd(this,id));
+//        scopeContainer.onEvent(new HttpSessionEnd(this,session));
+//
+//        Object session2 = new Object();
+//        Object id2 = new Object();
+//        scopeContainer.onEvent(new RequestStart(this,id2));
+//        scopeContainer.onEvent(new HttpSessionBound(this,session2));
+//        GenericComponent testService2b = (GenericComponent) componentCtx.getContext("TestService2").getInstance(null);
+//        Assert.assertNotNull(testService2b);
+//        Assert.assertNotSame(testService2, testService2b);
+//
+//        scopeContainer.onEvent(new RequestEnd(this,id2));
+//        scopeContainer.onEvent(new HttpSessionEnd(this,session2));
+
+    }
+
+    /**
+     * Ensures only child entry points (and not components) are accessible from parents
+     */
+    public void testCompositeNoEntryPoint() throws Exception {
+//        EventContext ctx = new EventContextImpl();
+//        CompositeContext moduleComponentCtx = new CompositeContextImpl();
+//        moduleComponentCtx.setName("testMC");
+//        CompositeScopeContext scopeContainer = new CompositeScopeContext(ctx);
+//        scopeContainer.registerFactory(MockFactory.createCompositeConfiguration("CompositeComponent"));
+//        scopeContainer.start();
+//        CompositeContext child = (CompositeContext) scopeContainer.getContext("CompositeComponent");
+//        List<Extensible> parts = createAssembly();
+//        for (Extensible part : parts) {
+//            child.registerModelObject(part);
+//        }
+//        scopeContainer.onEvent(new ModuleStart(this));
+//        scopeContainer.getContext("CompositeComponent");
+    }
+
+    /**
+     * Tests adding a context before its parent has been started
+     */
+    public void testRegisterContextBeforeStart() throws Exception {
+//        EventContext ctx = new EventContextImpl();
+//        CompositeContext moduleComponentCtx = new CompositeContextImpl();
+//        moduleComponentCtx.setName("testMC");
+//        CompositeScopeContext scopeContainer = new CompositeScopeContext(ctx);
+//        scopeContainer.registerFactory(MockFactory.createCompositeConfiguration("CompositeComponent"));
+//        scopeContainer.start();
+//        scopeContainer.onEvent(new ModuleStart(this));
+//        scopeContainer.getContext("CompositeComponent");
+//        scopeContainer.onEvent(new ModuleStop(this));
+//        scopeContainer.stop();
+    }
+
+    /**
+     * Tests adding a context after its parent has been started
+     */
+    public void testRegisterContextAfterStart() throws Exception {
+//        EventContext ctx = new EventContextImpl();
+//        CompositeContext moduleComponentCtx = new CompositeContextImpl();
+//        moduleComponentCtx.setName("testMC");
+//        CompositeScopeContext scopeContainer = new CompositeScopeContext(ctx);
+//        scopeContainer.start();
+//
+//        scopeContainer.onEvent(new ModuleStart(this));
+//        scopeContainer.registerFactory(MockFactory.createCompositeConfiguration("CompositeComponent"));
+//        scopeContainer.getContext("CompositeComponent");
+//        scopeContainer.onEvent(new ModuleStop(this));
+//        scopeContainer.stop();
+    }
+
+
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/DependencyLifecycleTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/DependencyLifecycleTestCase.java?rev=400402&r1=400401&r2=400402&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/DependencyLifecycleTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/DependencyLifecycleTestCase.java Sat May  6 20:28:07 2006
@@ -1,26 +1,24 @@
 package org.apache.tuscany.core.context.scope;
 
-import java.util.List;
+import java.util.Map;
 
 import junit.framework.TestCase;
-import junit.framework.Assert;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.HttpSessionEnd;
 import org.apache.tuscany.core.context.event.ModuleStart;
 import org.apache.tuscany.core.context.event.ModuleStop;
-import org.apache.tuscany.core.context.event.HttpSessionEvent;
-import org.apache.tuscany.core.context.event.HttpSessionEnd;
 import org.apache.tuscany.core.context.event.RequestStart;
 import org.apache.tuscany.core.context.event.RequestEnd;
-import org.apache.tuscany.core.context.WorkContextImpl;
 import org.apache.tuscany.core.mock.MockFactory;
-import org.apache.tuscany.core.mock.component.SourceImpl;
-import org.apache.tuscany.core.mock.component.TargetImpl;
-import org.apache.tuscany.core.mock.component.Source;
-import org.apache.tuscany.spi.context.WorkContext;
+import org.apache.tuscany.core.mock.component.OrderedDependentPojo;
+import org.apache.tuscany.core.mock.component.OrderedDependentPojoImpl;
+import org.apache.tuscany.core.mock.component.OrderedInitPojo;
+import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
 import org.apache.tuscany.spi.context.AtomicContext;
-import org.apache.tuscany.model.Scope;
+import org.apache.tuscany.spi.context.WorkContext;
 
 /**
- * Tests that dependencies are initalized and destroyed in the proper order (i.e. LIFO)
+ * Tests dependencies are initalized and destroyed in the proper order (i.e. LIFO)
  *
  * @version $Rev: 393992 $ $Date: 2006-04-13 18:01:05 -0700 (Thu, 13 Apr 2006) $
  */
@@ -30,57 +28,106 @@
         WorkContext ctx = new WorkContextImpl();
         ModuleScopeContext scopeCtx = new ModuleScopeContext(ctx);
         scopeCtx.start();
-        //scopeCtx.onEvent(new ModuleStart(this, null));
-        List<AtomicContext> contexts = MockFactory.createWiredContexts("source", SourceImpl.class,"target", TargetImpl.class,scopeCtx,scopeCtx);
-        Source source = (Source)contexts.get(0).getInstance(null);
-        assertNotNull(source.getTarget());
-        //scopeCtx.onEvent(new ModuleStop(this, null));
-
-
-        //scope.registerFactories(MockContextFactory.createWiredContexts(Scope.MODULE,scope));
-//        scope.start();
-//        scope.onEvent(new ModuleStart(this));
-//        OrderedDependentPojo source = (OrderedDependentPojo) scope.getContext("source").getInstance(null);
-//        assertNotNull(source.getPojo());
-//        // expire module
-//        Assert.assertEquals(2,source.getNumberInstantiated());
-//        scope.onEvent(new ModuleStop(this));
-//        Assert.assertEquals(0,source.getNumberInstantiated());
-//        scope.stop();
+        Map<String, AtomicContext> contexts = MockFactory.createWiredContexts("source", OrderedDependentPojoImpl.class,
+                scopeCtx, "target", OrderedInitPojoImpl.class, scopeCtx);
+        for (AtomicContext context : contexts.values()) {
+            scopeCtx.register(context);
+        }
+        AtomicContext sourceContext = contexts.get("source");
+        AtomicContext targetContext = contexts.get("target");
+        scopeCtx.register(sourceContext);
+        scopeCtx.register(targetContext);
+        scopeCtx.onEvent(new ModuleStart(this, null));
+        OrderedDependentPojo source = (OrderedDependentPojo)scopeCtx.getInstance(sourceContext);
+        OrderedInitPojo target = (OrderedInitPojo) scopeCtx.getInstance(targetContext);
+        assertNotNull(source.getPojo());
+        assertNotNull(target);
+        assertEquals(2, source.getNumberInstantiated());
+        scopeCtx.onEvent(new ModuleStop(this, null));
+        assertEquals(0, source.getNumberInstantiated());
+        scopeCtx.stop();
+    }
+
+    public void testInitDestroyOrderAfterStartModuleScope() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        ModuleScopeContext scopeCtx = new ModuleScopeContext(ctx);
+        scopeCtx.start();
+        Map<String, AtomicContext> contexts = MockFactory.createWiredContexts("source", OrderedDependentPojoImpl.class,
+                scopeCtx, "target", OrderedInitPojoImpl.class, scopeCtx);
+        AtomicContext sourceContext = contexts.get("source");
+        AtomicContext targetContext = contexts.get("target");
+        scopeCtx.onEvent(new ModuleStart(this, null));
+        scopeCtx.register(sourceContext);
+        scopeCtx.register(targetContext);
+        OrderedDependentPojo source = (OrderedDependentPojo) scopeCtx.getInstance(sourceContext);
+        OrderedInitPojo target = (OrderedInitPojo) scopeCtx.getInstance(targetContext);
+        assertNotNull(source.getPojo());
+        assertNotNull(target);
+        assertEquals(2, source.getNumberInstantiated());
+        scopeCtx.onEvent(new ModuleStop(this, null));
+        assertEquals(0, source.getNumberInstantiated());
+        scopeCtx.stop();
+    }
+
+
+    public void testInitDestroyOrderSessionScope() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        HttpSessionScopeContext scopeCtx = new HttpSessionScopeContext(ctx);
+        scopeCtx.start();
+        Object session = new Object();
+        Map<String, AtomicContext> contexts = MockFactory.createWiredContexts("source", OrderedDependentPojoImpl.class,
+                scopeCtx, "target", OrderedInitPojoImpl.class, scopeCtx);
+        AtomicContext sourceContext = contexts.get("source");
+        AtomicContext targetContext = contexts.get("target");
+        scopeCtx.register(sourceContext);
+        scopeCtx.register(targetContext);
+        ctx.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER, session);
+        OrderedDependentPojo source = (OrderedDependentPojo) scopeCtx.getInstance(sourceContext);
+        assertNotNull(source.getPojo());
+        assertEquals(2, source.getNumberInstantiated());
+        scopeCtx.onEvent(new HttpSessionEnd(this, session));
+        assertEquals(0, source.getNumberInstantiated());
+        scopeCtx.stop();
+    }
+
+
+    public void testInitDestroyOrderAfterStartSessionScope() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        HttpSessionScopeContext scopeCtx = new HttpSessionScopeContext(ctx);
+        scopeCtx.start();
+        Object session = new Object();
+        Map<String, AtomicContext> contexts = MockFactory.createWiredContexts("source", OrderedDependentPojoImpl.class,
+                scopeCtx, "target", OrderedInitPojoImpl.class, scopeCtx);
+        AtomicContext sourceContext = contexts.get("source");
+        AtomicContext targetContext = contexts.get("target");
+        ctx.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER, session);
+        scopeCtx.register(sourceContext);
+        scopeCtx.register(targetContext);
+        OrderedDependentPojo source = (OrderedDependentPojo) scopeCtx.getInstance(sourceContext);
+        assertNotNull(source.getPojo());
+        assertEquals(2, source.getNumberInstantiated());
+        scopeCtx.onEvent(new HttpSessionEnd(this, session));
+        assertEquals(0, source.getNumberInstantiated());
+        scopeCtx.stop();
     }
 
-//    public void testInitDestroyOrderSessionScope() throws Exception {
-//        WorkContext ctx = new WorkContextImpl();
-//        SessionScopeContext scope = new SessionScopeContext(ctx);
-//        scope.registerFactories(MockContextFactory.createWiredContexts(Scope.SESSION,scope));
-//        scope.start();
-//        Object session =  new Object();
-//        ctx.setIdentifier(HttpSessionEvent.HTTP_IDENTIFIER,session);
-//        scope.onEvent(new HttpSessionBound(this,session));
-//        OrderedDependentPojo source = (OrderedDependentPojo) scope.getContext("source").getInstance(null);
-//        assertNotNull(source.getPojo());
-//        // expire module
-//        Assert.assertEquals(2,source.getNumberInstantiated());
-//        scope.onEvent(new HttpSessionEnd(this,session));
-//        Assert.assertEquals(0,source.getNumberInstantiated());
-//        scope.stop();
-//    }
-//
-//
-//    public void testInitDestroyOrderRequestScope() throws Exception {
-//        WorkContext ctx = new WorkContextImpl();
-//        RequestScopeContext scope = new RequestScopeContext(ctx);
-//        scope.registerFactories(MockContextFactory.createWiredContexts(Scope.REQUEST,scope));
-//        scope.start();
-//        Object request =  new Object();
-//        scope.onEvent(new RequestStart(this,request));
-//        OrderedDependentPojo source = (OrderedDependentPojo) scope.getContext("source").getInstance(null);
-//        assertNotNull(source.getPojo());
-//        // expire module
-//        Assert.assertEquals(2,source.getNumberInstantiated());
-//        scope.onEvent(new RequestEnd(this,request));
-//        Assert.assertEquals(0,source.getNumberInstantiated());
-//        scope.stop();
-//    }
+    public void testInitDestroyOrderRequestScope() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        RequestScopeContext scopeCtx = new RequestScopeContext(ctx);
+        scopeCtx.start();
+        scopeCtx.onEvent(new RequestStart(this));
+        Map<String, AtomicContext> contexts = MockFactory.createWiredContexts("source", OrderedDependentPojoImpl.class,
+                scopeCtx, "target", OrderedInitPojoImpl.class, scopeCtx);
+        AtomicContext sourceContext = contexts.get("source");
+        AtomicContext targetContext = contexts.get("target");
+        scopeCtx.register(sourceContext);
+        scopeCtx.register(targetContext);
+        OrderedDependentPojo source = (OrderedDependentPojo) scopeCtx.getInstance(sourceContext);
+        assertNotNull(source.getPojo());
+        assertEquals(2, source.getNumberInstantiated());
+        scopeCtx.onEvent(new RequestEnd(this));
+        assertEquals(0, source.getNumberInstantiated());
+        scopeCtx.stop();
+    }
 
 }

Added: 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/HttpSessionScopeLifecycleTestCase.java?rev=400402&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeLifecycleTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/HttpSessionScopeLifecycleTestCase.java Sat May  6 20:28:07 2006
@@ -0,0 +1,137 @@
+package org.apache.tuscany.core.context.scope;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.HttpSessionEnd;
+import org.apache.tuscany.core.context.event.HttpSessionStart;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.mock.component.OrderedEagerInitPojo;
+import org.apache.tuscany.core.mock.component.OrderedInitPojo;
+import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
+import org.apache.tuscany.core.mock.component.RequestScopeDestroyOnlyComponent;
+import org.apache.tuscany.core.mock.component.RequestScopeInitDestroyComponent;
+import org.apache.tuscany.core.mock.component.RequestScopeInitOnlyComponent;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
+import org.apache.tuscany.spi.context.WorkContext;
+
+/**
+ * Lifecycle unit tests for the module scope container
+ *
+ * @version $Rev: 398107 $ $Date: 2006-04-29 01:38:27 -0700 (Sat, 29 Apr 2006) $
+ */
+public class HttpSessionScopeLifecycleTestCase extends TestCase {
+
+    public void testInitDestroy() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        HttpSessionScopeContext scope = new HttpSessionScopeContext(ctx);
+        scope.start();
+
+        SystemAtomicContext initDestroyContext = MockFactory.createSystemAtomicContext("InitDestroy", RequestScopeInitDestroyComponent.class);
+        initDestroyContext.setScopeContext(scope);
+
+        SystemAtomicContext initOnlyContext = MockFactory.createSystemAtomicContext("InitOnly", RequestScopeInitOnlyComponent.class);
+        initOnlyContext.setScopeContext(scope);
+
+        SystemAtomicContext destroyOnlyContext = MockFactory.createSystemAtomicContext("DestroyOnly", RequestScopeDestroyOnlyComponent.class);
+        destroyOnlyContext.setScopeContext(scope);
+
+        Object session = new Object();
+        ctx.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER, session);
+        scope.onEvent(new HttpSessionStart(this, session));
+        RequestScopeInitDestroyComponent initDestroy = (RequestScopeInitDestroyComponent) scope.getInstance(initDestroyContext);
+        Assert.assertNotNull(initDestroy);
+
+        RequestScopeInitOnlyComponent initOnly = (RequestScopeInitOnlyComponent) scope.getInstance(initOnlyContext);
+        Assert.assertNotNull(initOnly);
+
+        RequestScopeDestroyOnlyComponent destroyOnly = (RequestScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyContext);
+        Assert.assertNotNull(destroyOnly);
+
+        Assert.assertTrue(initDestroy.isInitialized());
+        Assert.assertTrue(initOnly.isInitialized());
+        Assert.assertFalse(initDestroy.isDestroyed());
+        Assert.assertFalse(destroyOnly.isDestroyed());
+
+        // expire module
+        scope.onEvent(new HttpSessionEnd(this, session));
+
+        Assert.assertTrue(initDestroy.isDestroyed());
+        Assert.assertTrue(destroyOnly.isDestroyed());
+
+        scope.stop();
+    }
+
+    public void testDestroyOrder() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        HttpSessionScopeContext scope = new HttpSessionScopeContext(ctx);
+        scope.start();
+
+        SystemAtomicContext oneCtx = MockFactory.createSystemAtomicContext("one", OrderedInitPojoImpl.class);
+        oneCtx.setScopeContext(scope);
+        scope.register(oneCtx);
+        SystemAtomicContext twoCtx = MockFactory.createSystemAtomicContext("two", OrderedInitPojoImpl.class);
+        twoCtx.setScopeContext(scope);
+        scope.register(twoCtx);
+        SystemAtomicContext threeCtx = MockFactory.createSystemAtomicContext("three", OrderedInitPojoImpl.class);
+        threeCtx.setScopeContext(scope);
+        scope.register(threeCtx);
+
+        Object session = new Object();
+        ctx.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER, session);
+        scope.onEvent(new HttpSessionStart(this, session));
+        OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneCtx);
+        Assert.assertNotNull(one);
+        Assert.assertEquals(1, one.getNumberInstantiated());
+        Assert.assertEquals(1, one.getInitOrder());
+
+        OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoCtx);
+        Assert.assertNotNull(two);
+        Assert.assertEquals(2, two.getNumberInstantiated());
+        Assert.assertEquals(2, two.getInitOrder());
+
+        OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeCtx);
+        Assert.assertNotNull(three);
+        Assert.assertEquals(3, three.getNumberInstantiated());
+        Assert.assertEquals(3, three.getInitOrder());
+
+        // expire module
+        scope.onEvent(new HttpSessionEnd(this, session));
+        Assert.assertEquals(0, one.getNumberInstantiated());
+        scope.stop();
+    }
+
+    public void testEagerInitDestroyOrder() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        HttpSessionScopeContext scope = new HttpSessionScopeContext(ctx);
+        scope.start();
+
+        SystemAtomicContext oneCtx = MockFactory.createSystemAtomicContext("one", OrderedEagerInitPojo.class);
+        oneCtx.setScopeContext(scope);
+        scope.register(oneCtx);
+        SystemAtomicContext twoCtx = MockFactory.createSystemAtomicContext("two", OrderedEagerInitPojo.class);
+        twoCtx.setScopeContext(scope);
+        scope.register(twoCtx);
+        SystemAtomicContext threeCtx = MockFactory.createSystemAtomicContext("three", OrderedEagerInitPojo.class);
+        threeCtx.setScopeContext(scope);
+        scope.register(threeCtx);
+
+        Object session = new Object();
+        ctx.setIdentifier(HttpSessionScopeContext.HTTP_IDENTIFIER, session);
+        scope.onEvent(new HttpSessionStart(this, session));
+        OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneCtx);
+        Assert.assertNotNull(one);
+
+        OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoCtx);
+        Assert.assertNotNull(two);
+
+        OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeCtx);
+        Assert.assertNotNull(three);
+
+        // expire module
+        scope.onEvent(new HttpSessionEnd(this, session));
+        Assert.assertEquals(0, one.getNumberInstantiated());
+        scope.stop();
+    }
+
+}

Added: 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/ModuleScopeLifecycleTestCase.java?rev=400402&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeLifecycleTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/ModuleScopeLifecycleTestCase.java Sat May  6 20:28:07 2006
@@ -0,0 +1,132 @@
+package org.apache.tuscany.core.context.scope;
+
+
+import junit.framework.Assert;
+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.mock.MockFactory;
+import org.apache.tuscany.core.mock.component.ModuleScopeDestroyOnlyComponent;
+import org.apache.tuscany.core.mock.component.ModuleScopeInitDestroyComponent;
+import org.apache.tuscany.core.mock.component.ModuleScopeInitOnlyComponent;
+import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
+import org.apache.tuscany.core.mock.component.OrderedInitPojo;
+import org.apache.tuscany.core.mock.component.OrderedEagerInitPojo;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
+import org.apache.tuscany.spi.context.WorkContext;
+
+/**
+ * Lifecycle unit tests for the module scope container
+ *
+ * @version $Rev: 398107 $ $Date: 2006-04-29 01:38:27 -0700 (Sat, 29 Apr 2006) $
+ */
+public class ModuleScopeLifecycleTestCase extends TestCase {
+
+    public void testInitDestroy() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        ModuleScopeContext scope = new ModuleScopeContext(ctx);
+        scope.start();
+
+        SystemAtomicContext initDestroyContext = MockFactory.createSystemAtomicContext("InitDestroy", ModuleScopeInitDestroyComponent.class);
+        initDestroyContext.setScopeContext(scope);
+
+        SystemAtomicContext initOnlyContext = MockFactory.createSystemAtomicContext("InitOnly", ModuleScopeInitOnlyComponent.class);
+        initOnlyContext.setScopeContext(scope);
+
+        SystemAtomicContext destroyOnlyContext = MockFactory.createSystemAtomicContext("DestroyOnly", ModuleScopeDestroyOnlyComponent.class);
+        destroyOnlyContext.setScopeContext(scope);
+
+        scope.onEvent(new ModuleStart(this, null));
+        ModuleScopeInitDestroyComponent initDestroy = (ModuleScopeInitDestroyComponent) scope.getInstance(initDestroyContext);
+        Assert.assertNotNull(initDestroy);
+
+        ModuleScopeInitOnlyComponent initOnly = (ModuleScopeInitOnlyComponent) scope.getInstance(initOnlyContext);
+        Assert.assertNotNull(initOnly);
+
+        ModuleScopeDestroyOnlyComponent destroyOnly = (ModuleScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyContext);
+        Assert.assertNotNull(destroyOnly);
+
+        Assert.assertTrue(initDestroy.isInitialized());
+        Assert.assertTrue(initOnly.isInitialized());
+        Assert.assertFalse(initDestroy.isDestroyed());
+        Assert.assertFalse(destroyOnly.isDestroyed());
+
+        // expire module
+        scope.onEvent(new ModuleStop(this, null));
+
+        Assert.assertTrue(initDestroy.isDestroyed());
+        Assert.assertTrue(destroyOnly.isDestroyed());
+
+        scope.stop();
+    }
+
+    public void testDestroyOrder() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        ModuleScopeContext scope = new ModuleScopeContext(ctx);
+        scope.start();
+
+        SystemAtomicContext oneCtx = MockFactory.createSystemAtomicContext("one", OrderedInitPojoImpl.class);
+        oneCtx.setScopeContext(scope);
+        scope.register(oneCtx);
+        SystemAtomicContext twoCtx = MockFactory.createSystemAtomicContext("two", OrderedInitPojoImpl.class);
+        twoCtx.setScopeContext(scope);
+        scope.register(twoCtx);
+        SystemAtomicContext threeCtx = MockFactory.createSystemAtomicContext("three", OrderedInitPojoImpl.class);
+        threeCtx.setScopeContext(scope);
+        scope.register(threeCtx);
+
+        scope.onEvent(new ModuleStart(this,null));
+        OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneCtx);
+        Assert.assertNotNull(one);
+        Assert.assertEquals(1, one.getNumberInstantiated());
+        Assert.assertEquals(1, one.getInitOrder());
+
+        OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoCtx);
+        Assert.assertNotNull(two);
+        Assert.assertEquals(2, two.getNumberInstantiated());
+        Assert.assertEquals(2, two.getInitOrder());
+
+        OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeCtx);
+        Assert.assertNotNull(three);
+        Assert.assertEquals(3, three.getNumberInstantiated());
+        Assert.assertEquals(3, three.getInitOrder());
+
+        // expire module
+        scope.onEvent(new ModuleStop(this,null));
+        Assert.assertEquals(0, one.getNumberInstantiated());
+        scope.stop();
+    }
+
+    public void testEagerInitDestroyOrder() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        ModuleScopeContext scope = new ModuleScopeContext(ctx);
+        scope.start();
+
+        SystemAtomicContext oneCtx = MockFactory.createSystemAtomicContext("one", OrderedEagerInitPojo.class);
+        oneCtx.setScopeContext(scope);
+        scope.register(oneCtx);
+        SystemAtomicContext twoCtx = MockFactory.createSystemAtomicContext("two", OrderedEagerInitPojo.class);
+        twoCtx.setScopeContext(scope);
+        scope.register(twoCtx);
+        SystemAtomicContext threeCtx = MockFactory.createSystemAtomicContext("three", OrderedEagerInitPojo.class);
+        threeCtx.setScopeContext(scope);
+        scope.register(threeCtx);
+
+        scope.onEvent(new ModuleStart(this,null));
+        OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneCtx);
+        Assert.assertNotNull(one);
+
+        OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoCtx);
+        Assert.assertNotNull(two);
+
+        OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeCtx);
+        Assert.assertNotNull(three);
+
+        // expire module
+        scope.onEvent(new ModuleStop(this,null));
+        Assert.assertEquals(0, one.getNumberInstantiated());
+        scope.stop();
+    }
+
+}

Added: 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/RequestScopeLifecycleTestCase.java?rev=400402&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeLifecycleTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/context/scope/RequestScopeLifecycleTestCase.java Sat May  6 20:28:07 2006
@@ -0,0 +1,131 @@
+package org.apache.tuscany.core.context.scope;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+import org.apache.tuscany.core.context.WorkContextImpl;
+import org.apache.tuscany.core.context.event.RequestEnd;
+import org.apache.tuscany.core.context.event.RequestStart;
+import org.apache.tuscany.core.mock.MockFactory;
+import org.apache.tuscany.core.mock.component.OrderedEagerInitPojo;
+import org.apache.tuscany.core.mock.component.OrderedInitPojo;
+import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
+import org.apache.tuscany.core.mock.component.RequestScopeDestroyOnlyComponent;
+import org.apache.tuscany.core.mock.component.RequestScopeInitDestroyComponent;
+import org.apache.tuscany.core.mock.component.RequestScopeInitOnlyComponent;
+import org.apache.tuscany.core.system.context.SystemAtomicContext;
+import org.apache.tuscany.spi.context.WorkContext;
+
+/**
+ * Lifecycle unit tests for the module scope container
+ *
+ * @version $Rev: 398107 $ $Date: 2006-04-29 01:38:27 -0700 (Sat, 29 Apr 2006) $
+ */
+public class RequestScopeLifecycleTestCase extends TestCase {
+
+    public void testInitDestroy() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        RequestScopeContext scope = new RequestScopeContext(ctx);
+        scope.start();
+
+        SystemAtomicContext initDestroyContext = MockFactory.createSystemAtomicContext("InitDestroy", RequestScopeInitDestroyComponent.class);
+        initDestroyContext.setScopeContext(scope);
+
+        SystemAtomicContext initOnlyContext = MockFactory.createSystemAtomicContext("InitOnly", RequestScopeInitOnlyComponent.class);
+        initOnlyContext.setScopeContext(scope);
+
+        SystemAtomicContext destroyOnlyContext = MockFactory.createSystemAtomicContext("DestroyOnly", RequestScopeDestroyOnlyComponent.class);
+        destroyOnlyContext.setScopeContext(scope);
+
+        scope.onEvent(new RequestStart(this));
+        RequestScopeInitDestroyComponent initDestroy = (RequestScopeInitDestroyComponent) scope.getInstance(initDestroyContext);
+        Assert.assertNotNull(initDestroy);
+
+        RequestScopeInitOnlyComponent initOnly = (RequestScopeInitOnlyComponent) scope.getInstance(initOnlyContext);
+        Assert.assertNotNull(initOnly);
+
+        RequestScopeDestroyOnlyComponent destroyOnly = (RequestScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyContext);
+        Assert.assertNotNull(destroyOnly);
+
+        Assert.assertTrue(initDestroy.isInitialized());
+        Assert.assertTrue(initOnly.isInitialized());
+        Assert.assertFalse(initDestroy.isDestroyed());
+        Assert.assertFalse(destroyOnly.isDestroyed());
+
+        // expire module
+        scope.onEvent(new RequestEnd(this));
+
+        Assert.assertTrue(initDestroy.isDestroyed());
+        Assert.assertTrue(destroyOnly.isDestroyed());
+
+        scope.stop();
+    }
+
+    public void testDestroyOrder() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        RequestScopeContext scope = new RequestScopeContext(ctx);
+        scope.start();
+
+        SystemAtomicContext oneCtx = MockFactory.createSystemAtomicContext("one", OrderedInitPojoImpl.class);
+        oneCtx.setScopeContext(scope);
+        scope.register(oneCtx);
+        SystemAtomicContext twoCtx = MockFactory.createSystemAtomicContext("two", OrderedInitPojoImpl.class);
+        twoCtx.setScopeContext(scope);
+        scope.register(twoCtx);
+        SystemAtomicContext threeCtx = MockFactory.createSystemAtomicContext("three", OrderedInitPojoImpl.class);
+        threeCtx.setScopeContext(scope);
+        scope.register(threeCtx);
+
+        scope.onEvent(new RequestStart(this));
+        OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneCtx);
+        Assert.assertNotNull(one);
+        Assert.assertEquals(1, one.getNumberInstantiated());
+        Assert.assertEquals(1, one.getInitOrder());
+
+        OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoCtx);
+        Assert.assertNotNull(two);
+        Assert.assertEquals(2, two.getNumberInstantiated());
+        Assert.assertEquals(2, two.getInitOrder());
+
+        OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeCtx);
+        Assert.assertNotNull(three);
+        Assert.assertEquals(3, three.getNumberInstantiated());
+        Assert.assertEquals(3, three.getInitOrder());
+
+        // expire module
+        scope.onEvent(new RequestEnd(this));
+        Assert.assertEquals(0, one.getNumberInstantiated());
+        scope.stop();
+    }
+
+    public void testEagerInitDestroyOrder() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        RequestScopeContext scope = new RequestScopeContext(ctx);
+        scope.start();
+
+        SystemAtomicContext oneCtx = MockFactory.createSystemAtomicContext("one", OrderedEagerInitPojo.class);
+        oneCtx.setScopeContext(scope);
+        scope.register(oneCtx);
+        SystemAtomicContext twoCtx = MockFactory.createSystemAtomicContext("two", OrderedEagerInitPojo.class);
+        twoCtx.setScopeContext(scope);
+        scope.register(twoCtx);
+        SystemAtomicContext threeCtx = MockFactory.createSystemAtomicContext("three", OrderedEagerInitPojo.class);
+        threeCtx.setScopeContext(scope);
+        scope.register(threeCtx);
+
+        scope.onEvent(new RequestStart(this));
+        OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneCtx);
+        Assert.assertNotNull(one);
+
+        OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoCtx);
+        Assert.assertNotNull(two);
+
+        OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeCtx);
+        Assert.assertNotNull(three);
+
+        // expire module
+        scope.onEvent(new RequestEnd(this));
+        Assert.assertEquals(0, one.getNumberInstantiated());
+        scope.stop();
+    }
+
+}