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/11/26 10:41:21 UTC

svn commit: r479319 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/builder/ test/java/org/apache/tuscany/core/component/scope/ test/java/org/apache/tuscany/core/implementation/system/component/ test/java/org/apache/...

Author: jmarino
Date: Sun Nov 26 01:41:20 2006
New Revision: 479319

URL: http://svn.apache.org/viewvc?view=rev&rev=479319
Log:
more testcase cleanup; use EasyMock objects for scope testcases

Added:
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java   (contents, props changed)
      - copied, changed from r479273, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockFactory.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java   (contents, props changed)
      - copied, changed from r479273, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockComponentFactory.java
Removed:
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Sun Nov 26 01:41:20 2006
@@ -27,7 +27,6 @@
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.builder.Connector;
-import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.ComponentRuntimeException;
@@ -47,6 +46,7 @@
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.OutboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
 import org.apache.tuscany.spi.wire.WireService;
 
 import org.apache.tuscany.core.implementation.composite.CompositeReference;
@@ -204,7 +204,7 @@
      * @param targetWire  the target wire to connect to
      * @param optimizable true if the wire connection can be optimized
      */
-    void connect(OutboundWire sourceWire, InboundWire targetWire, boolean optimizable) {
+    public void connect(OutboundWire sourceWire, InboundWire targetWire, boolean optimizable) {
         SCAObject source = sourceWire.getContainer();
         SCAObject target = targetWire.getContainer();
         ServiceContract contract = sourceWire.getServiceContract();

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicHttpSessionScopeTestCase.java Sun Nov 26 01:41:20 2006
@@ -38,7 +38,6 @@
  * @version $$Rev$$ $$Date$$
  */
 public class BasicHttpSessionScopeTestCase extends TestCase {
-
     private EventInvoker<Object> initInvoker;
     private EventInvoker<Object> destroyInvoker;
     private PojoObjectFactory<?> factory;

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/BasicStatelessScopeTestCase.java Sun Nov 26 01:41:20 2006
@@ -18,6 +18,7 @@
  */
 package org.apache.tuscany.core.component.scope;
 
+import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.SystemAtomicComponent;
 import org.apache.tuscany.spi.component.TargetNotFoundException;
 import org.apache.tuscany.spi.component.WorkContext;
@@ -25,9 +26,12 @@
 import junit.framework.Assert;
 import junit.framework.TestCase;
 import org.apache.tuscany.core.component.WorkContextImpl;
+import org.apache.tuscany.core.implementation.PojoConfiguration;
+import org.apache.tuscany.core.implementation.system.component.SystemAtomicComponentImpl;
+import org.apache.tuscany.core.injection.PojoObjectFactory;
+import org.apache.tuscany.core.mock.component.RequestScopeInitDestroyComponent;
 import org.apache.tuscany.core.mock.component.StatelessComponent;
 import org.apache.tuscany.core.mock.component.StatelessComponentImpl;
-import org.apache.tuscany.core.mock.factories.MockFactory;
 
 /**
  * Unit tests for the module scope container
@@ -35,6 +39,7 @@
  * @version $Rev$ $Date$
  */
 public class BasicStatelessScopeTestCase extends TestCase {
+    private PojoObjectFactory<StatelessComponentImpl> factory;
 
     /**
      * Verfies instance identity is properly maintained
@@ -43,15 +48,13 @@
         WorkContext ctx = new WorkContextImpl();
         StatelessScopeContainer scope = new StatelessScopeContainer(ctx);
         scope.start();
-        SystemAtomicComponent context1 =
-            MockFactory.createAtomicComponent("comp1", scope, StatelessComponentImpl.class);
-        scope.register(context1);
-        SystemAtomicComponent context2 =
-            MockFactory.createAtomicComponent("comp2", scope, StatelessComponentImpl.class);
-        scope.register(context2);
-        StatelessComponentImpl comp1 = (StatelessComponentImpl) scope.getInstance(context1);
+        SystemAtomicComponent component1 = createComponent(scope);
+        scope.register(component1);
+        SystemAtomicComponent component2 = createComponent(scope);
+        scope.register(component2);
+        StatelessComponentImpl comp1 = (StatelessComponentImpl) scope.getInstance(component1);
         Assert.assertNotNull(comp1);
-        StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(context2);
+        StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(component2);
         Assert.assertNotNull(comp2);
         Assert.assertNotSame(comp1, comp2);
         scope.stop();
@@ -61,12 +64,11 @@
         WorkContext ctx = new WorkContextImpl();
         StatelessScopeContainer scope = new StatelessScopeContainer(ctx);
         scope.start();
-        SystemAtomicComponent context1 =
-            MockFactory.createAtomicComponent("comp1", scope, StatelessComponentImpl.class);
-        scope.register(context1);
+        SystemAtomicComponent component1 = createComponent(scope);
+        scope.register(component1);
         try {
             // always throws an exception, which is the semantic for stateless implementations
-            scope.getAssociatedInstance(context1);
+            scope.getAssociatedInstance(component1);
             fail();
         } catch (TargetNotFoundException e) {
             // expected
@@ -79,15 +81,13 @@
         StatelessScopeContainer scope = new StatelessScopeContainer(ctx);
 
         scope.start();
-        SystemAtomicComponent context1 =
-            MockFactory.createAtomicComponent("comp1", scope, StatelessComponentImpl.class);
-        scope.register(context1);
-        StatelessComponent comp1 = (StatelessComponentImpl) scope.getInstance(context1);
+        SystemAtomicComponent component1 = createComponent(scope);
+        scope.register(component1);
+        StatelessComponent comp1 = (StatelessComponentImpl) scope.getInstance(component1);
         Assert.assertNotNull(comp1);
-        SystemAtomicComponent context2 =
-            MockFactory.createAtomicComponent("comp2", scope, StatelessComponentImpl.class);
-        scope.register(context2);
-        StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(context2);
+        SystemAtomicComponent component2 = createComponent(scope);
+        scope.register(component2);
+        StatelessComponentImpl comp2 = (StatelessComponentImpl) scope.getInstance(component2);
         Assert.assertNotNull(comp2);
         scope.stop();
     }
@@ -103,5 +103,21 @@
         scope.stop();
     }
 
+    protected void setUp() throws Exception {
+        super.setUp();
+        factory =
+            new PojoObjectFactory<StatelessComponentImpl>(StatelessComponentImpl.class.getConstructor((Class[]) null));
 
+    }
+
+    private SystemAtomicComponent createComponent(ScopeContainer scopeContainer) {
+        PojoConfiguration configuration = new PojoConfiguration();
+        configuration.setScopeContainer(scopeContainer);
+        configuration.addServiceInterface(RequestScopeInitDestroyComponent.class);
+        configuration.setInstanceFactory(factory);
+        configuration.setName("foo");
+        SystemAtomicComponentImpl component = new SystemAtomicComponentImpl(configuration);
+        scopeContainer.register(component);
+        return component;
+    }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ConversationalScopeInstanceLifecycleTestCase.java Sun Nov 26 01:41:20 2006
@@ -18,25 +18,26 @@
  */
 package org.apache.tuscany.core.component.scope;
 
-import org.apache.tuscany.core.component.WorkContextImpl;
-import org.apache.tuscany.core.component.event.ConversationEnd;
-import org.apache.tuscany.core.component.event.ConversationStart;
-import org.apache.tuscany.core.mock.component.ConversationalScopeDestroyOnlyComponent;
-import org.apache.tuscany.core.mock.component.ConversationalScopeInitDestroyComponent;
-import org.apache.tuscany.core.mock.component.ConversationalScopeInitOnlyComponent;
-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.factories.MockFactory;
 import org.apache.tuscany.spi.component.SystemAtomicComponent;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.event.RuntimeEventListener;
 import org.apache.tuscany.spi.model.Scope;
 
-import junit.framework.Assert;
 import junit.framework.TestCase;
+import org.apache.tuscany.core.component.WorkContextImpl;
+import org.apache.tuscany.core.component.event.ConversationEnd;
+import org.apache.tuscany.core.component.event.ConversationStart;
+import org.apache.tuscany.core.mock.component.OrderedInitPojo;
+import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
 
 /**
  * Lifecycle unit tests for the conversational scope container
+ * <p/>
+ * TODO [JFM] these tests should be removed since conversational components will not have init/destroy semantics. We may
+ * want to have init() supported but not destroy() since passivated instances will nned to be deserialized upon
+ * expiration
  *
  * @version $Rev: 451895 $ $Date: 2006-10-02 02:58:18 -0400 (Mon, 02 Oct 2006) $
  */
@@ -47,47 +48,23 @@
         ConversationalScopeContainer scope = new ConversationalScopeContainer(ctx);
         scope.start();
 
-        SystemAtomicComponent initDestroyContext = MockFactory.createAtomicComponent("InitDestroy",
-            scope,
-            ConversationalScopeInitDestroyComponent.class);
-        initDestroyContext.start();
-
-        SystemAtomicComponent initOnlyContext = MockFactory.createAtomicComponent("InitOnly",
-            scope,
-            ConversationalScopeInitOnlyComponent.class);
-        initOnlyContext.start();
-
-        SystemAtomicComponent destroyOnlyContext = MockFactory.createAtomicComponent("DestroyOnly",
-            scope,
-            ConversationalScopeDestroyOnlyComponent.class);
-        destroyOnlyContext.start();
-
-        Object conversation = new Object();
-        ctx.setIdentifier(Scope.CONVERSATION, conversation);
-        scope.onEvent(new ConversationStart(this, conversation));
-        ConversationalScopeInitDestroyComponent initDestroy =
-            (ConversationalScopeInitDestroyComponent) scope.getInstance(initDestroyContext);
-        Assert.assertNotNull(initDestroy);
-
-        ConversationalScopeInitOnlyComponent initOnly =
-            (ConversationalScopeInitOnlyComponent) scope.getInstance(initOnlyContext);
-        Assert.assertNotNull(initOnly);
-
-        ConversationalScopeDestroyOnlyComponent destroyOnly =
-            (ConversationalScopeDestroyOnlyComponent) 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 ConversationEnd(this, conversation));
-
-        Assert.assertTrue(initDestroy.isDestroyed());
-        Assert.assertTrue(destroyOnly.isDestroyed());
-
+        Foo comp = new Foo();
+        SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+        EasyMock.expect(component.createInstance()).andReturn(comp);
+        EasyMock.expect(component.isEagerInit()).andReturn(true).atLeastOnce();
+        component.addListener(EasyMock.isA(RuntimeEventListener.class));
+        component.init(EasyMock.eq(comp));
+        component.destroy(EasyMock.eq(comp));
+        EasyMock.replay(component);
+        scope.register(component);
+        Object session = new Object();
+        ctx.setIdentifier(Scope.CONVERSATION, session);
+        scope.onEvent(new ConversationStart(this, session));
+        assertNotNull(scope.getInstance(component));
+        // expire
+        scope.onEvent(new ConversationEnd(this, session));
+        scope.stop();
+        EasyMock.verify(component);
         scope.stop();
     }
 
@@ -96,38 +73,37 @@
         ConversationalScopeContainer scope = new ConversationalScopeContainer(ctx);
         scope.start();
 
-        SystemAtomicComponent oneCtx =
-            MockFactory.createAtomicComponent("one", scope, OrderedInitPojoImpl.class);
-        scope.register(oneCtx);
-        SystemAtomicComponent twoCtx =
-            MockFactory.createAtomicComponent("two", scope, OrderedInitPojoImpl.class);
-        scope.register(twoCtx);
-        SystemAtomicComponent threeCtx =
-            MockFactory.createAtomicComponent("three", scope, OrderedInitPojoImpl.class);
-        scope.register(threeCtx);
-
-        Object conversation = new Object();
-        ctx.setIdentifier(Scope.CONVERSATION, conversation);
-        scope.onEvent(new ConversationStart(this, conversation));
-        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 ConversationEnd(this, conversation));
-        Assert.assertEquals(0, one.getNumberInstantiated());
+        SystemAtomicComponent oneComponent = createComponent(false);
+        scope.register(oneComponent);
+        SystemAtomicComponent twoComponent = createComponent(false);
+        scope.register(twoComponent);
+        SystemAtomicComponent threeComponent = createComponent(false);
+        scope.register(threeComponent);
+
+        Object session = new Object();
+        ctx.setIdentifier(Scope.CONVERSATION, session);
+        scope.onEvent(new ConversationStart(this, session));
+        OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneComponent);
+        assertNotNull(one);
+        assertEquals(1, one.getNumberInstantiated());
+        assertEquals(1, one.getInitOrder());
+
+        OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoComponent);
+        assertNotNull(two);
+        assertEquals(2, two.getNumberInstantiated());
+        assertEquals(2, two.getInitOrder());
+
+        OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeComponent);
+        assertNotNull(three);
+        assertEquals(3, three.getNumberInstantiated());
+        assertEquals(3, three.getInitOrder());
+
+        scope.onEvent(new ConversationEnd(this, session));
+        assertEquals(0, one.getNumberInstantiated());
         scope.stop();
+        EasyMock.verify(oneComponent);
+        EasyMock.verify(twoComponent);
+        EasyMock.verify(threeComponent);
     }
 
     public void testEagerInitDestroyOrder() throws Exception {
@@ -135,31 +111,55 @@
         ConversationalScopeContainer scope = new ConversationalScopeContainer(ctx);
         scope.start();
 
-        SystemAtomicComponent oneCtx =
-            MockFactory.createAtomicComponent("one", scope, OrderedEagerInitPojo.class);
-        scope.register(oneCtx);
-        SystemAtomicComponent twoCtx =
-            MockFactory.createAtomicComponent("two", scope, OrderedEagerInitPojo.class);
-        scope.register(twoCtx);
-        SystemAtomicComponent threeCtx =
-            MockFactory.createAtomicComponent("three", scope, OrderedEagerInitPojo.class);
-        scope.register(threeCtx);
-
-        Object conversation = new Object();
-        ctx.setIdentifier(Scope.CONVERSATION, conversation);
-        scope.onEvent(new ConversationStart(this, conversation));
-        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 ConversationEnd(this, conversation));
-        Assert.assertEquals(0, one.getNumberInstantiated());
+        SystemAtomicComponent oneComponent = createComponent(true);
+        scope.register(oneComponent);
+        SystemAtomicComponent twoComponent = createComponent(true);
+        scope.register(twoComponent);
+        SystemAtomicComponent threeComponent = createComponent(true);
+        scope.register(threeComponent);
+
+        Object session = new Object();
+        ctx.setIdentifier(Scope.CONVERSATION, session);
+        scope.onEvent(new ConversationStart(this, session));
+        scope.onEvent(new ConversationEnd(this, session));
         scope.stop();
+        EasyMock.verify(oneComponent);
+        EasyMock.verify(twoComponent);
+        EasyMock.verify(threeComponent);
+    }
+
+    @SuppressWarnings("unchecked")
+    private SystemAtomicComponent createComponent(boolean init) {
+        SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+        EasyMock.expect(component.createInstance()).andStubAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                return new OrderedInitPojoImpl();
+            }
+        });
+        EasyMock.expect(component.isEagerInit()).andReturn(init).atLeastOnce();
+        component.addListener(EasyMock.isA(RuntimeEventListener.class));
+        component.init(EasyMock.isA(OrderedInitPojoImpl.class));
+        EasyMock.expectLastCall().andAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+                pojo.init();
+                return null;
+            }
+        });
+        component.destroy(EasyMock.isA(OrderedInitPojoImpl.class));
+        EasyMock.expectLastCall().andAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+                pojo.destroy();
+                return null;
+            }
+        });
+        EasyMock.replay(component);
+        return component;
     }
+
+    private class Foo {
+
+    }
+
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/DependencyLifecycleTestCase.java Sun Nov 26 01:41:20 2006
@@ -35,7 +35,6 @@
 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.core.mock.factories.MockFactory;
 
 /**
  * Tests dependencies are initalized and destroyed in the proper order (i.e. LIFO)

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInstanceLifecycleTestCase.java Sun Nov 26 01:41:20 2006
@@ -20,19 +20,17 @@
 
 import org.apache.tuscany.spi.component.SystemAtomicComponent;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.event.RuntimeEventListener;
 import org.apache.tuscany.spi.model.Scope;
 
 import junit.framework.TestCase;
 import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.core.component.event.HttpSessionEnd;
 import org.apache.tuscany.core.component.event.HttpSessionStart;
-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.mock.factories.MockFactory;
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
 
 /**
  * Lifecycle unit tests for the module scope container
@@ -45,48 +43,23 @@
         WorkContext ctx = new WorkContextImpl();
         HttpSessionScopeContainer scope = new HttpSessionScopeContainer(ctx);
         scope.start();
-
-        SystemAtomicComponent initDestroyComponent = MockFactory.createAtomicComponent("InitDestroy",
-            scope,
-            RequestScopeInitDestroyComponent.class);
-        initDestroyComponent.start();
-
-        SystemAtomicComponent initOnlyComponent = MockFactory.createAtomicComponent("InitOnly",
-            scope,
-            RequestScopeInitOnlyComponent.class);
-        initOnlyComponent.start();
-
-        SystemAtomicComponent destroyOnlyComponent = MockFactory.createAtomicComponent("DestroyOnly",
-            scope,
-            RequestScopeDestroyOnlyComponent.class);
-        destroyOnlyComponent.start();
-
+        Foo comp = new Foo();
+        SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+        EasyMock.expect(component.createInstance()).andReturn(comp);
+        EasyMock.expect(component.isEagerInit()).andReturn(true).atLeastOnce();
+        component.addListener(EasyMock.isA(RuntimeEventListener.class));
+        component.init(EasyMock.eq(comp));
+        component.destroy(EasyMock.eq(comp));
+        EasyMock.replay(component);
+        scope.register(component);
         Object session = new Object();
         ctx.setIdentifier(Scope.SESSION, session);
         scope.onEvent(new HttpSessionStart(this, session));
-        RequestScopeInitDestroyComponent initDestroy =
-            (RequestScopeInitDestroyComponent) scope.getInstance(initDestroyComponent);
-        assertNotNull(initDestroy);
-
-        RequestScopeInitOnlyComponent initOnly =
-            (RequestScopeInitOnlyComponent) scope.getInstance(initOnlyComponent);
-        assertNotNull(initOnly);
-
-        RequestScopeDestroyOnlyComponent destroyOnly =
-            (RequestScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyComponent);
-        assertNotNull(destroyOnly);
-
-        assertTrue(initDestroy.isInitialized());
-        assertTrue(initOnly.isInitialized());
-        assertFalse(initDestroy.isDestroyed());
-        assertFalse(destroyOnly.isDestroyed());
-
-        // expire module
+        assertNotNull(scope.getInstance(component));
+        // expire
         scope.onEvent(new HttpSessionEnd(this, session));
-
-        assertTrue(initDestroy.isDestroyed());
-        assertTrue(destroyOnly.isDestroyed());
-
+        scope.stop();
+        EasyMock.verify(component);
         scope.stop();
     }
 
@@ -95,14 +68,11 @@
         HttpSessionScopeContainer scope = new HttpSessionScopeContainer(ctx);
         scope.start();
 
-        SystemAtomicComponent oneComponent =
-            MockFactory.createAtomicComponent("one", scope, OrderedInitPojoImpl.class);
+        SystemAtomicComponent oneComponent = createComponent(false);
         scope.register(oneComponent);
-        SystemAtomicComponent twoComponent =
-            MockFactory.createAtomicComponent("two", scope, OrderedInitPojoImpl.class);
+        SystemAtomicComponent twoComponent = createComponent(false);
         scope.register(twoComponent);
-        SystemAtomicComponent threeComponent =
-            MockFactory.createAtomicComponent("three", scope, OrderedInitPojoImpl.class);
+        SystemAtomicComponent threeComponent = createComponent(false);
         scope.register(threeComponent);
 
         Object session = new Object();
@@ -123,10 +93,12 @@
         assertEquals(3, three.getNumberInstantiated());
         assertEquals(3, three.getInitOrder());
 
-        // expire module
         scope.onEvent(new HttpSessionEnd(this, session));
         assertEquals(0, one.getNumberInstantiated());
         scope.stop();
+        EasyMock.verify(oneComponent);
+        EasyMock.verify(twoComponent);
+        EasyMock.verify(threeComponent);
     }
 
     public void testEagerInitDestroyOrder() throws Exception {
@@ -134,32 +106,54 @@
         HttpSessionScopeContainer scope = new HttpSessionScopeContainer(ctx);
         scope.start();
 
-        SystemAtomicComponent oneComponent =
-            MockFactory.createAtomicComponent("one", scope, OrderedEagerInitPojo.class);
+        SystemAtomicComponent oneComponent = createComponent(true);
         scope.register(oneComponent);
-        SystemAtomicComponent twoComponent =
-            MockFactory.createAtomicComponent("two", scope, OrderedEagerInitPojo.class);
+        SystemAtomicComponent twoComponent = createComponent(true);
         scope.register(twoComponent);
-        SystemAtomicComponent threeComponent =
-            MockFactory.createAtomicComponent("three", scope, OrderedEagerInitPojo.class);
+        SystemAtomicComponent threeComponent = createComponent(true);
         scope.register(threeComponent);
 
         Object session = new Object();
         ctx.setIdentifier(Scope.SESSION, session);
         scope.onEvent(new HttpSessionStart(this, session));
-        OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneComponent);
-        assertNotNull(one);
-
-        OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoComponent);
-        assertNotNull(two);
-
-        OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeComponent);
-        assertNotNull(three);
-
-        // expire module
         scope.onEvent(new HttpSessionEnd(this, session));
-        assertEquals(0, one.getNumberInstantiated());
         scope.stop();
+        EasyMock.verify(oneComponent);
+        EasyMock.verify(twoComponent);
+        EasyMock.verify(threeComponent);
     }
 
+    @SuppressWarnings("unchecked")
+    private SystemAtomicComponent createComponent(boolean init) {
+        SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+        EasyMock.expect(component.createInstance()).andStubAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                return new OrderedInitPojoImpl();
+            }
+        });
+        EasyMock.expect(component.isEagerInit()).andReturn(init).atLeastOnce();
+        component.addListener(EasyMock.isA(RuntimeEventListener.class));
+        component.init(EasyMock.isA(OrderedInitPojoImpl.class));
+        EasyMock.expectLastCall().andAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+                pojo.init();
+                return null;
+            }
+        });
+        component.destroy(EasyMock.isA(OrderedInitPojoImpl.class));
+        EasyMock.expectLastCall().andAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+                pojo.destroy();
+                return null;
+            }
+        });
+        EasyMock.replay(component);
+        return component;
+    }
+
+    private class Foo {
+
+    }
 }

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java (from r479273, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockFactory.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java?view=diff&rev=479319&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockFactory.java&r1=479273&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java Sun Nov 26 01:41:20 2006
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.mock.factories;
+package org.apache.tuscany.core.component.scope;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
@@ -31,15 +31,8 @@
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.SystemAtomicComponent;
-import org.apache.tuscany.spi.idl.InvalidServiceContractException;
-import org.apache.tuscany.spi.idl.java.JavaInterfaceProcessorRegistry;
-import org.apache.tuscany.spi.idl.java.JavaServiceContract;
-import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.model.ServiceContract;
-import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
 
-import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
 import org.apache.tuscany.core.implementation.PojoConfiguration;
 import org.apache.tuscany.core.implementation.system.component.SystemAtomicComponentImpl;
 import org.apache.tuscany.core.implementation.system.wire.SystemInboundWireImpl;
@@ -47,9 +40,6 @@
 import org.apache.tuscany.core.implementation.system.wire.SystemOutboundWireImpl;
 import org.apache.tuscany.core.injection.MethodEventInvoker;
 import org.apache.tuscany.core.injection.PojoObjectFactory;
-import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
-import org.apache.tuscany.core.wire.InboundWireImpl;
-import org.apache.tuscany.core.wire.InvokerInterceptor;
 
 /**
  * @version $$Rev$$ $$Date$$
@@ -59,37 +49,17 @@
     private MockFactory() {
     }
 
-    public static Map<String, AtomicComponent> createWiredComponents(String source,
-                                                                     Class<?> sourceClass,
-                                                                     ScopeContainer sourceScopeContainer,
-                                                                     String target,
-                                                                     Class<?> targetClass,
-                                                                     ScopeContainer targetScopeContainer)
-        throws NoSuchMethodException {
-        List<Class<?>> sourceClasses = new ArrayList<Class<?>>();
-        sourceClasses.add(sourceClass);
-        return createWiredComponents(source, sourceClasses, sourceClass, sourceScopeContainer, target, targetClass,
-            targetScopeContainer);
-    }
-
-    /**
-     * Creates source and target {@link AtomicComponent}s whose instances are wired together. The wiring algorithm
-     * searches for the first method on the source with a single parameter type matching an interface implemented by the
-     * target.
-     *
-     * @throws NoSuchMethodException
-     */
     @SuppressWarnings("unchecked")
     public static Map<String, AtomicComponent> createWiredComponents(String source,
-                                                                     List<Class<?>> sourceInterfaces,
                                                                      Class<?> sourceClass,
                                                                      ScopeContainer sourceScopeContainer,
                                                                      String target,
                                                                      Class<?> targetClass,
                                                                      ScopeContainer targetScopeContainer)
         throws NoSuchMethodException {
-
-        Map<String, AtomicComponent> contexts = new HashMap<String, AtomicComponent>();
+        List<Class<?>> sourceInterfaces = new ArrayList<Class<?>>();
+        sourceInterfaces.add(sourceClass);
+        Map<String, AtomicComponent> components = new HashMap<String, AtomicComponent>();
         SystemAtomicComponent targetComponent = createAtomicComponent(target, targetScopeContainer, targetClass);
         PojoConfiguration sourceConfig = new PojoConfiguration();
         sourceConfig.getServiceInterfaces().addAll(sourceInterfaces);
@@ -124,16 +94,15 @@
 
         sourceConfig.addReferenceSite(setter.getName(), setter);
         sourceConfig.setName(source);
-        SystemAtomicComponent sourceCtx = new SystemAtomicComponentImpl(sourceConfig);
+        SystemAtomicComponent sourceComponent = new SystemAtomicComponentImpl(sourceConfig);
         QualifiedName targetName = new QualifiedName(target);
         SystemOutboundWire wire = new SystemOutboundWireImpl(setter.getName(), targetName, targetClass);
         InboundWire inboundWire = new SystemInboundWireImpl(targetName.getPortName(), targetClass, targetComponent);
         wire.setTargetWire(inboundWire);
-
-        sourceCtx.addOutboundWire(wire);
-        contexts.put(source, sourceCtx);
-        contexts.put(target, targetComponent);
-        return contexts;
+        sourceComponent.addOutboundWire(wire);
+        components.put(source, sourceComponent);
+        components.put(target, targetComponent);
+        return components;
     }
 
     @SuppressWarnings("unchecked")
@@ -156,31 +125,6 @@
         }
         configuration.setName(name);
         return new SystemAtomicComponentImpl(configuration);
-    }
-
-    public static <T> InboundWire createTargetWireFactory(String serviceName, Class<T> interfaze)
-        throws InvalidServiceContractException {
-        InboundWire wire = new InboundWireImpl();
-        wire.setServiceName(serviceName);
-        JavaServiceContract contract = new JavaServiceContract(interfaze);
-        wire.setServiceContract(contract);
-        wire.addInvocationChains(createInboundChains(interfaze));
-        return wire;
-    }
-
-    public static Map<Operation<?>, InboundInvocationChain> createInboundChains(Class<?> interfaze)
-        throws InvalidServiceContractException {
-        JavaInterfaceProcessorRegistry registry = new JavaInterfaceProcessorRegistryImpl();
-        Map<Operation<?>, InboundInvocationChain> invocations = new HashMap<Operation<?>, InboundInvocationChain>();
-        ServiceContract<?> contract = registry.introspect(interfaze);
-
-        for (Operation<?> operation : contract.getOperations().values()) {
-            InboundInvocationChain chain = new InboundInvocationChainImpl(operation);
-            // add tail interceptor
-            chain.addInterceptor(new InvokerInterceptor());
-            invocations.put(operation, chain);
-        }
-        return invocations;
     }
 
 }

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/MockFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInstanceLifecycleTestCase.java Sun Nov 26 01:41:20 2006
@@ -26,13 +26,10 @@
 import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.core.component.event.CompositeStart;
 import org.apache.tuscany.core.component.event.CompositeStop;
-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.OrderedEagerInitPojo;
 import org.apache.tuscany.core.mock.component.OrderedInitPojo;
 import org.apache.tuscany.core.mock.component.OrderedInitPojoImpl;
-import org.apache.tuscany.core.mock.factories.MockFactory;
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
 
 /**
  * Lifecycle unit tests for the module scope container
@@ -41,68 +38,66 @@
  */
 public class ModuleScopeInstanceLifecycleTestCase extends TestCase {
 
+    /**
+     * Verify init and stop by scope container on an atomic component
+     *
+     * @throws Exception
+     */
     public void testInitDestroy() throws Exception {
         WorkContext ctx = new WorkContextImpl();
         ModuleScopeContainer scope = new ModuleScopeContainer(ctx);
         scope.start();
-
-        SystemAtomicComponent initDestroyComponent = MockFactory.createAtomicComponent("InitDestroy",
-            scope,
-            ModuleScopeInitDestroyComponent.class);
-        initDestroyComponent.start();
-
-        SystemAtomicComponent initOnlyComponent = MockFactory.createAtomicComponent("InitOnly",
-            scope,
-            ModuleScopeInitOnlyComponent.class);
-        initOnlyComponent.start();
-
-        SystemAtomicComponent destroyOnlyComponent = MockFactory.createAtomicComponent("DestroyOnly",
-            scope,
-            ModuleScopeDestroyOnlyComponent.class);
-        destroyOnlyComponent.start();
-
+        Foo comp = new Foo();
+        SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+        EasyMock.expect(component.createInstance()).andReturn(comp);
+        EasyMock.expect(component.getInitLevel()).andReturn(1).atLeastOnce();
+        component.init(EasyMock.eq(comp));
+        component.destroy(EasyMock.eq(comp));
+        EasyMock.replay(component);
+        scope.register(component);
         scope.onEvent(new CompositeStart(this, null));
-        ModuleScopeInitDestroyComponent initDestroy =
-            (ModuleScopeInitDestroyComponent) scope.getInstance(initDestroyComponent);
-        assertNotNull(initDestroy);
-
-        ModuleScopeInitOnlyComponent initOnly = (ModuleScopeInitOnlyComponent) scope.getInstance(initOnlyComponent);
-        assertNotNull(initOnly);
-
-        ModuleScopeDestroyOnlyComponent destroyOnly =
-            (ModuleScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyComponent);
-        assertNotNull(destroyOnly);
-
-        assertTrue(initDestroy.isInitialized());
-        assertTrue(initOnly.isInitialized());
-        assertFalse(initDestroy.isDestroyed());
-        assertFalse(destroyOnly.isDestroyed());
-
+        assertNotNull(scope.getInstance(component));
         // expire module
         scope.onEvent(new CompositeStop(this, null));
+        scope.stop();
+        EasyMock.verify(component);
+    }
 
-        assertTrue(initDestroy.isDestroyed());
-        assertTrue(destroyOnly.isDestroyed());
-
+    /**
+     * Verify init and stop by scope container on an atomic component when set to eager initialize
+     *
+     * @throws Exception
+     */
+    public void testEagerInitDestroy() throws Exception {
+        WorkContext ctx = new WorkContextImpl();
+        ModuleScopeContainer scope = new ModuleScopeContainer(ctx);
+        scope.start();
+        Foo comp = new Foo();
+        SystemAtomicComponent initDestroyComponent = EasyMock.createMock(SystemAtomicComponent.class);
+        EasyMock.expect(initDestroyComponent.createInstance()).andReturn(comp);
+        EasyMock.expect(initDestroyComponent.getInitLevel()).andReturn(1).atLeastOnce();
+        initDestroyComponent.init(EasyMock.eq(comp));
+        initDestroyComponent.destroy(EasyMock.eq(comp));
+        EasyMock.replay(initDestroyComponent);
+        scope.register(initDestroyComponent);
+        scope.onEvent(new CompositeStart(this, null));
+        // expire module
+        scope.onEvent(new CompositeStop(this, null));
         scope.stop();
+        EasyMock.verify(initDestroyComponent);
     }
 
+
     public void testDestroyOrder() throws Exception {
         WorkContext ctx = new WorkContextImpl();
         ModuleScopeContainer scope = new ModuleScopeContainer(ctx);
         scope.start();
 
-        SystemAtomicComponent oneComponent = MockFactory.createAtomicComponent("one",
-            scope,
-            OrderedInitPojoImpl.class);
+        SystemAtomicComponent oneComponent = createComponent(0);
         scope.register(oneComponent);
-        SystemAtomicComponent twoComponent = MockFactory.createAtomicComponent("two",
-            scope,
-            OrderedInitPojoImpl.class);
+        SystemAtomicComponent twoComponent = createComponent(0);
         scope.register(twoComponent);
-        SystemAtomicComponent threeComponent = MockFactory.createAtomicComponent("three",
-            scope,
-            OrderedInitPojoImpl.class);
+        SystemAtomicComponent threeComponent = createComponent(0);
         scope.register(threeComponent);
 
         scope.onEvent(new CompositeStart(this, null));
@@ -125,6 +120,9 @@
         scope.onEvent(new CompositeStop(this, null));
         assertEquals(0, one.getNumberInstantiated());
         scope.stop();
+        EasyMock.verify(oneComponent);
+        EasyMock.verify(twoComponent);
+        EasyMock.verify(threeComponent);
     }
 
     public void testEagerInitDestroyOrder() throws Exception {
@@ -132,33 +130,62 @@
         ModuleScopeContainer scope = new ModuleScopeContainer(ctx);
         scope.start();
 
-        SystemAtomicComponent oneComponent = MockFactory.createAtomicComponent("one",
-            scope,
-            OrderedEagerInitPojo.class);
+        SystemAtomicComponent oneComponent = createComponent(1);
         scope.register(oneComponent);
-        SystemAtomicComponent twoComponent = MockFactory.createAtomicComponent("two",
-            scope,
-            OrderedEagerInitPojo.class);
+        SystemAtomicComponent twoComponent = createComponent(1);
         scope.register(twoComponent);
-        SystemAtomicComponent threeComponent = MockFactory.createAtomicComponent("three",
-            scope,
-            OrderedEagerInitPojo.class);
+        SystemAtomicComponent threeComponent = createComponent(1);
         scope.register(threeComponent);
 
         scope.onEvent(new CompositeStart(this, null));
-        OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneComponent);
+        OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneComponent);
         assertNotNull(one);
 
-        OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoComponent);
+        OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoComponent);
         assertNotNull(two);
 
-        OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeComponent);
+        OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeComponent);
         assertNotNull(three);
 
         // expire module
         scope.onEvent(new CompositeStop(this, null));
         assertEquals(0, one.getNumberInstantiated());
         scope.stop();
+        EasyMock.verify(oneComponent);
+        EasyMock.verify(twoComponent);
+        EasyMock.verify(threeComponent);
+    }
+
+    @SuppressWarnings("unchecked")
+    private SystemAtomicComponent createComponent(int init) {
+        SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+        EasyMock.expect(component.createInstance()).andStubAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                return new OrderedInitPojoImpl();
+            }
+        });
+        EasyMock.expect(component.getInitLevel()).andReturn(init).atLeastOnce();
+        component.init(EasyMock.isA(OrderedInitPojoImpl.class));
+        EasyMock.expectLastCall().andAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+                pojo.init();
+                return null;
+            }
+        });
+        component.destroy(EasyMock.isA(OrderedInitPojoImpl.class));
+        EasyMock.expectLastCall().andAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+                pojo.destroy();
+                return null;
+            }
+        });
+        EasyMock.replay(component);
+        return component;
     }
 
+    private class Foo {
+
+    }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInstanceLifecycleTestCase.java Sun Nov 26 01:41:20 2006
@@ -18,20 +18,17 @@
  */
 package org.apache.tuscany.core.component.scope;
 
-import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.component.SystemAtomicComponent;
+import org.apache.tuscany.spi.component.WorkContext;
 
 import junit.framework.TestCase;
 import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.core.component.event.RequestEnd;
 import org.apache.tuscany.core.component.event.RequestStart;
-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.mock.factories.MockFactory;
+import org.easymock.EasyMock;
+import org.easymock.IAnswer;
 
 /**
  * Lifecycle unit tests for the module scope container
@@ -44,42 +41,20 @@
         WorkContext ctx = new WorkContextImpl();
         RequestScopeContainer scope = new RequestScopeContainer(ctx);
         scope.start();
-
-        SystemAtomicComponent initDestroyComponent = MockFactory
-            .createAtomicComponent("InitDestroy", scope, RequestScopeInitDestroyComponent.class);
-        initDestroyComponent.start();
-
-        SystemAtomicComponent initOnlyComponent =
-            MockFactory.createAtomicComponent("InitOnly", scope, RequestScopeInitOnlyComponent.class);
-        initOnlyComponent.start();
-
-        SystemAtomicComponent destroyOnlyComponent = MockFactory
-            .createAtomicComponent("DestroyOnly", scope, RequestScopeDestroyOnlyComponent.class);
-        destroyOnlyComponent.start();
-
+        Foo comp = new Foo();
+        SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+        EasyMock.expect(component.createInstance()).andReturn(comp);
+        EasyMock.expect(component.isEagerInit()).andReturn(false).atLeastOnce();
+        component.init(EasyMock.eq(comp));
+        component.destroy(EasyMock.eq(comp));
+        EasyMock.replay(component);
+        scope.register(component);
         scope.onEvent(new RequestStart(this));
-        RequestScopeInitDestroyComponent initDestroy =
-            (RequestScopeInitDestroyComponent) scope.getInstance(initDestroyComponent);
-        assertNotNull(initDestroy);
-
-        RequestScopeInitOnlyComponent initOnly = (RequestScopeInitOnlyComponent) scope.getInstance(initOnlyComponent);
-        assertNotNull(initOnly);
-
-        RequestScopeDestroyOnlyComponent destroyOnly =
-            (RequestScopeDestroyOnlyComponent) scope.getInstance(destroyOnlyComponent);
-        assertNotNull(destroyOnly);
-
-        assertTrue(initDestroy.isInitialized());
-        assertTrue(initOnly.isInitialized());
-        assertFalse(initDestroy.isDestroyed());
-        assertFalse(destroyOnly.isDestroyed());
-
-        // expire module
+        assertNotNull(scope.getInstance(component));
+        // expire
         scope.onEvent(new RequestEnd(this));
-
-        assertTrue(initDestroy.isDestroyed());
-        assertTrue(destroyOnly.isDestroyed());
-
+        scope.stop();
+        EasyMock.verify(component);
         scope.stop();
     }
 
@@ -88,36 +63,35 @@
         RequestScopeContainer scope = new RequestScopeContainer(ctx);
         scope.start();
 
-        SystemAtomicComponent oneCtx =
-            MockFactory.createAtomicComponent("one", scope, OrderedInitPojoImpl.class);
-        scope.register(oneCtx);
-        SystemAtomicComponent twoCtx =
-            MockFactory.createAtomicComponent("two", scope, OrderedInitPojoImpl.class);
-        scope.register(twoCtx);
-        SystemAtomicComponent threeCtx =
-            MockFactory.createAtomicComponent("three", scope, OrderedInitPojoImpl.class);
-        scope.register(threeCtx);
+        SystemAtomicComponent oneComponent = createComponent(false);
+        scope.register(oneComponent);
+        SystemAtomicComponent twoComponent = createComponent(false);
+        scope.register(twoComponent);
+        SystemAtomicComponent threeComponent = createComponent(false);
+        scope.register(threeComponent);
 
         scope.onEvent(new RequestStart(this));
-        OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneCtx);
+        OrderedInitPojo one = (OrderedInitPojo) scope.getInstance(oneComponent);
         assertNotNull(one);
         assertEquals(1, one.getNumberInstantiated());
         assertEquals(1, one.getInitOrder());
 
-        OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoCtx);
+        OrderedInitPojo two = (OrderedInitPojo) scope.getInstance(twoComponent);
         assertNotNull(two);
         assertEquals(2, two.getNumberInstantiated());
         assertEquals(2, two.getInitOrder());
 
-        OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeCtx);
+        OrderedInitPojo three = (OrderedInitPojo) scope.getInstance(threeComponent);
         assertNotNull(three);
         assertEquals(3, three.getNumberInstantiated());
         assertEquals(3, three.getInitOrder());
 
-        // expire module
         scope.onEvent(new RequestEnd(this));
         assertEquals(0, one.getNumberInstantiated());
         scope.stop();
+        EasyMock.verify(oneComponent);
+        EasyMock.verify(twoComponent);
+        EasyMock.verify(threeComponent);
     }
 
     public void testEagerInitDestroyOrder() throws Exception {
@@ -125,30 +99,52 @@
         RequestScopeContainer scope = new RequestScopeContainer(ctx);
         scope.start();
 
-        SystemAtomicComponent oneComponent =
-            MockFactory.createAtomicComponent("one", scope, OrderedEagerInitPojo.class);
+        SystemAtomicComponent oneComponent = createComponent(true);
         scope.register(oneComponent);
-        SystemAtomicComponent twoComponent =
-            MockFactory.createAtomicComponent("two", scope, OrderedEagerInitPojo.class);
+        SystemAtomicComponent twoComponent = createComponent(true);
         scope.register(twoComponent);
-        SystemAtomicComponent threeComponent =
-            MockFactory.createAtomicComponent("three", scope, OrderedEagerInitPojo.class);
+        SystemAtomicComponent threeComponent = createComponent(true);
         scope.register(threeComponent);
 
         scope.onEvent(new RequestStart(this));
-        OrderedEagerInitPojo one = (OrderedEagerInitPojo) scope.getInstance(oneComponent);
-        assertNotNull(one);
+        scope.onEvent(new RequestEnd(this));
+        scope.stop();
+        EasyMock.verify(oneComponent);
+        EasyMock.verify(twoComponent);
+        EasyMock.verify(threeComponent);
+    }
 
-        OrderedEagerInitPojo two = (OrderedEagerInitPojo) scope.getInstance(twoComponent);
-        assertNotNull(two);
+    @SuppressWarnings("unchecked")
+    private SystemAtomicComponent createComponent(boolean init) {
+        SystemAtomicComponent component = EasyMock.createMock(SystemAtomicComponent.class);
+        EasyMock.expect(component.createInstance()).andStubAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                return new OrderedInitPojoImpl();
+            }
+        });
+        EasyMock.expect(component.isEagerInit()).andReturn(init).atLeastOnce();
+        component.init(EasyMock.isA(OrderedInitPojoImpl.class));
+        EasyMock.expectLastCall().andAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+                pojo.init();
+                return null;
+            }
+        });
+        component.destroy(EasyMock.isA(OrderedInitPojoImpl.class));
+        EasyMock.expectLastCall().andAnswer(new IAnswer() {
+            public Object answer() throws Throwable {
+                OrderedInitPojoImpl pojo = (OrderedInitPojoImpl) EasyMock.getCurrentArguments()[0];
+                pojo.destroy();
+                return null;
+            }
+        });
+        EasyMock.replay(component);
+        return component;
+    }
 
-        OrderedEagerInitPojo three = (OrderedEagerInitPojo) scope.getInstance(threeComponent);
-        assertNotNull(three);
+    private class Foo {
 
-        // expire module
-        scope.onEvent(new RequestEnd(this));
-        assertEquals(0, one.getNumberInstantiated());
-        scope.stop();
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemAtomicComponentTestCase.java Sun Nov 26 01:41:20 2006
@@ -35,6 +35,7 @@
 public class SystemAtomicComponentTestCase extends TestCase {
 
     private EventInvoker<Object> initInvoker;
+    private EventInvoker<Object> destroyInvoker;
 
     public void testDefaultCreationAndInit() throws Exception {
         PojoObjectFactory<Foo> factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor((Class[]) null));
@@ -49,6 +50,19 @@
         assertTrue(foo.initialized);
     }
 
+    public void testDestroy() throws Exception {
+        PojoObjectFactory<Foo> factory = new PojoObjectFactory<Foo>(Foo.class.getConstructor((Class[]) null));
+        PojoConfiguration configuration = new PojoConfiguration();
+        configuration.addServiceInterface(Foo.class);
+        configuration.setInstanceFactory(factory);
+        configuration.setDestroyInvoker(destroyInvoker);
+        configuration.setName("foo");
+        SystemAtomicComponentImpl component = new SystemAtomicComponentImpl(configuration);
+        Foo foo = (Foo) component.createInstance();
+        component.destroy(foo);
+        assertTrue(foo.destroyed);
+    }
+
     public void testReferenceAndPropertyConstructor() throws Exception {
         PojoObjectFactory<Bar> factory = new PojoObjectFactory<Bar>(Bar.class.getConstructor(String.class, Foo.class));
         PojoConfiguration configuration = new PojoConfiguration();
@@ -75,6 +89,7 @@
     protected void setUp() throws Exception {
         super.setUp();
         initInvoker = new MethodEventInvoker<Object>(Foo.class.getMethod("init"));
+        destroyInvoker = new MethodEventInvoker<Object>(Foo.class.getMethod("destroy"));
     }
 
     protected void tearDown() throws Exception {
@@ -82,11 +97,15 @@
     }
 
     public static class Foo {
-
         private boolean initialized;
+        private boolean destroyed;
 
         public void init() {
             initialized = true;
+        }
+
+        public void destroy() {
+            destroyed = true;
         }
     }
 

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java (from r479273, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockComponentFactory.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java?view=diff&rev=479319&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockComponentFactory.java&r1=479273&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/factories/MockComponentFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java Sun Nov 26 01:41:20 2006
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.mock.factories;
+package org.apache.tuscany.core.integration.implementation.system.builder;
 
 import java.net.URI;
 import java.net.URISyntaxException;

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/MockComponentFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/implementation/system/builder/SystemBuilderWireTestCase.java Sun Nov 26 01:41:20 2006
@@ -44,7 +44,6 @@
 import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
 import org.apache.tuscany.core.mock.component.Source;
 import org.apache.tuscany.core.mock.component.Target;
-import org.apache.tuscany.core.mock.factories.MockComponentFactory;
 
 /**
  * Validates that system builders and the default connector create properly wired contexts

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java Sun Nov 26 01:41:20 2006
@@ -19,34 +19,30 @@
 package org.apache.tuscany.core.integration.mock;
 
 import java.lang.reflect.Member;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tuscany.spi.builder.BuilderConfigException;
+import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.idl.InvalidServiceContractException;
-import org.apache.tuscany.spi.idl.java.JavaIDLUtils;
 import org.apache.tuscany.spi.idl.java.JavaInterfaceProcessorRegistry;
 import org.apache.tuscany.spi.model.Operation;
-import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.Interceptor;
 import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.OutboundWire;
-import org.apache.tuscany.spi.wire.TargetInvoker;
 import org.apache.tuscany.spi.wire.WireService;
 
+import org.apache.tuscany.core.builder.ConnectorImpl;
 import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
 import org.apache.tuscany.core.implementation.PojoConfiguration;
 import org.apache.tuscany.core.implementation.java.JavaAtomicComponent;
-import org.apache.tuscany.core.implementation.java.JavaTargetInvoker;
 import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.wire.InboundInvocationChainImpl;
 import org.apache.tuscany.core.wire.InboundWireImpl;
@@ -54,10 +50,6 @@
 import org.apache.tuscany.core.wire.OutboundInvocationChainImpl;
 import org.apache.tuscany.core.wire.OutboundWireImpl;
 import org.apache.tuscany.core.wire.jdk.JDKWireService;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.replay;
 
 /**
  * @version $$Rev$$ $$Date$$
@@ -66,52 +58,13 @@
 
     private static final WireService WIRE_SERVICE = new JDKWireService(new WorkContextImpl(), null);
     private static final JavaInterfaceProcessorRegistry REGISTRY = new JavaInterfaceProcessorRegistryImpl();
+    private static final ConnectorImpl CONNECTOR = new ConnectorImpl();
 
     private MockFactory() {
     }
 
     /**
-     * Creates a JavaAtomicComponent which returns the given instance
-     */
-    @SuppressWarnings("unchecked")
-    public static <T> JavaAtomicComponent createJavaComponent(T instance) {
-        ScopeContainer scope = createMock(ScopeContainer.class);
-        scope.getScope();
-        expectLastCall().andReturn(Scope.MODULE);
-        scope.getInstance(isA(JavaAtomicComponent.class));
-        expectLastCall().andReturn(instance).anyTimes();
-        replay(scope);
-        PojoConfiguration configuration = new PojoConfiguration();
-        configuration.setScopeContainer(scope);
-        try {
-            configuration.setInstanceFactory(new PojoObjectFactory(DummyImpl.class.getConstructor()));
-        } catch (NoSuchMethodException e) {
-            throw new AssertionError(e);
-        }
-        configuration.addServiceInterface(DummyImpl.class);
-        configuration.setWireService(WIRE_SERVICE);
-        configuration.setWorkContext(new WorkContextImpl());
-        configuration.setName(instance.getClass().getName());
-
-        return new JavaAtomicComponent(configuration);
-    }
-
-    @SuppressWarnings("unchecked")
-    public static <T> JavaAtomicComponent createJavaComponent(String name, ScopeContainer scope, Class<T> clazz)
-        throws NoSuchMethodException {
-        PojoConfiguration configuration = new PojoConfiguration();
-        configuration.setScopeContainer(scope);
-        configuration.setInstanceFactory(new PojoObjectFactory(clazz.getConstructor()));
-        configuration.addServiceInterface(clazz);
-        configuration.setWireService(WIRE_SERVICE);
-        configuration.setWorkContext(new WorkContextImpl());
-        configuration.setName(name);
-        return new JavaAtomicComponent(configuration);
-
-    }
-
-    /**
-     * Wires two contexts together where the reference interface is the same as target service
+     * Wires two components together where the reference interface is the same as target service
      *
      * @param sourceName
      * @param sourceClass
@@ -132,25 +85,9 @@
                                                                      Class<?> targetService,
                                                                      Class<?> targetClass,
                                                                      ScopeContainer targetScope) throws Exception {
-        return createWiredComponents(sourceName, sourceClass, targetService, sourceScope, members, targetName,
-            targetService, targetClass, targetScope);
-
-    }
-
-    /**
-     * Wires two contexts together where the reference interface may be different from the target service
-     */
-    public static Map<String, AtomicComponent> createWiredComponents(String sourceName, Class<?> sourceClass,
-                                                                     Class<?> sourceReferenceClass,
-                                                                     ScopeContainer sourceScope,
-                                                                     Map<String, Member> members,
-                                                                     String targetName,
-                                                                     Class<?> targetService,
-                                                                     Class<?> targetClass,
-                                                                     ScopeContainer targetScope) throws Exception {
         return createWiredComponents(sourceName,
             sourceClass,
-            sourceReferenceClass,
+            targetService,
             sourceScope,
             null,
             members,
@@ -159,6 +96,7 @@
             targetClass,
             targetScope,
             null);
+
     }
 
     @SuppressWarnings("unchecked")
@@ -173,12 +111,12 @@
                                                                      Interceptor targetHeadInterceptor)
         throws Exception {
 
-        JavaAtomicComponent targetContext =
+        JavaAtomicComponent targetComponent =
             createJavaComponent(targetName, targetScope, targetClass);
         String serviceName = targetService.getName().substring(targetService.getName().lastIndexOf('.') + 1);
-        InboundWire inboundWire = createServiceWire(serviceName, targetService, targetHeadInterceptor);
-        targetContext.addInboundWire(inboundWire);
-
+        InboundWire inboundWire = createInboundWire(serviceName, targetService, targetHeadInterceptor);
+        targetComponent.addInboundWire(inboundWire);
+        inboundWire.setContainer(targetComponent);
         PojoConfiguration configuration = new PojoConfiguration();
         configuration.setScopeContainer(sourceScope);
         configuration.setInstanceFactory(new PojoObjectFactory(sourceClass.getConstructor()));
@@ -189,15 +127,17 @@
         }
         configuration.setWorkContext(new WorkContextImpl());
         configuration.setName(sourceName);
-        JavaAtomicComponent sourceContext = new JavaAtomicComponent(configuration);
-        OutboundWire outboundWire = createReferenceWire(targetName, sourceReferenceClass, sourceHeadInterceptor);
-        sourceContext.addOutboundWire(outboundWire);
-        targetScope.register(targetContext);
-        sourceScope.register(sourceContext);
-        connect(outboundWire, inboundWire, targetContext, false);
+        JavaAtomicComponent sourceComponent = new JavaAtomicComponent(configuration);
+        OutboundWire outboundWire = createOutboundWire(targetName, sourceReferenceClass, sourceHeadInterceptor);
+        sourceComponent.addOutboundWire(outboundWire);
+        outboundWire.setContainer(sourceComponent);
+        outboundWire.setTargetName(new QualifiedName(targetName + "/" + serviceName));
+        targetScope.register(targetComponent);
+        sourceScope.register(sourceComponent);
+        CONNECTOR.connect(outboundWire, inboundWire, false);
         Map<String, AtomicComponent> contexts = new HashMap<String, AtomicComponent>();
-        contexts.put(sourceName, sourceContext);
-        contexts.put(targetName, targetContext);
+        contexts.put(sourceName, sourceComponent);
+        contexts.put(targetName, targetComponent);
         return contexts;
     }
 
@@ -225,12 +165,12 @@
                                                                        Class<?> targetClass,
                                                                        Map<String, Member> members,
                                                                        ScopeContainer targetScope) throws Exception {
-        JavaAtomicComponent targetContext =
+        JavaAtomicComponent targetComponent =
             createJavaComponent(targetName, targetScope, targetClass);
         String serviceName = targetService.getName().substring(targetService.getName().lastIndexOf('.') + 1);
-        InboundWire inboundWire = createServiceWire(serviceName, targetService, null);
-        targetContext.addInboundWire(inboundWire);
-
+        InboundWire inboundWire = createInboundWire(serviceName, targetService, null);
+        targetComponent.addInboundWire(inboundWire);
+        inboundWire.setContainer(targetComponent);
         PojoConfiguration configuration = new PojoConfiguration();
         configuration.setScopeContainer(sourceScope);
         configuration.setInstanceFactory(new PojoObjectFactory(sourceClass.getConstructor()));
@@ -242,38 +182,51 @@
         configuration.setWorkContext(new WorkContextImpl());
         configuration.setName(sourceName);
 
-        JavaAtomicComponent sourceContext = new JavaAtomicComponent(configuration);
-        OutboundWire outboundWire = createReferenceWire(targetName, sourceReferenceClass, null);
+        JavaAtomicComponent sourceComponent = new JavaAtomicComponent(configuration);
+        OutboundWire outboundWire = createOutboundWire(targetName, sourceReferenceClass, null);
+        outboundWire.setContainer(sourceComponent);
+        outboundWire.setTargetName(new QualifiedName(targetName + "/" + serviceName));
         List<OutboundWire> factories = new ArrayList<OutboundWire>();
         factories.add(outboundWire);
-        sourceContext.addOutboundWires(sourceReferenceClass, factories);
-        targetScope.register(targetContext);
-        sourceScope.register(sourceContext);
-        connect(outboundWire, inboundWire, targetContext, false);
-        Map<String, AtomicComponent> contexts = new HashMap<String, AtomicComponent>();
-        contexts.put(sourceName, sourceContext);
-        contexts.put(targetName, targetContext);
-        return contexts;
+        sourceComponent.addOutboundWires(sourceReferenceClass, factories);
+        targetScope.register(targetComponent);
+        sourceScope.register(sourceComponent);
+        CONNECTOR.connect(outboundWire, inboundWire, false);
+        Map<String, AtomicComponent> components = new HashMap<String, AtomicComponent>();
+        components.put(sourceName, sourceComponent);
+        components.put(targetName, targetComponent);
+        return components;
     }
 
     public static <T> InboundWire createTargetWire(String serviceName, Class<T> interfaze)
         throws InvalidServiceContractException {
-        return createServiceWire(serviceName, interfaze, null);
+        return createInboundWire(serviceName, interfaze, null);
     }
 
+    @SuppressWarnings("unchecked")
+    private static <T> JavaAtomicComponent createJavaComponent(String name, ScopeContainer scope, Class<T> clazz)
+        throws NoSuchMethodException {
+        PojoConfiguration configuration = new PojoConfiguration();
+        configuration.setScopeContainer(scope);
+        configuration.setInstanceFactory(new PojoObjectFactory(clazz.getConstructor()));
+        configuration.addServiceInterface(clazz);
+        configuration.setWireService(WIRE_SERVICE);
+        configuration.setWorkContext(new WorkContextImpl());
+        configuration.setName(name);
+        return new JavaAtomicComponent(configuration);
+    }
 
-    public static <T> InboundWire createServiceWire(String serviceName, Class<T> interfaze, Interceptor interceptor)
+    private static <T> InboundWire createInboundWire(String serviceName, Class<T> interfaze, Interceptor interceptor)
         throws InvalidServiceContractException {
         InboundWire wire = new InboundWireImpl();
         ServiceContract<?> contract = REGISTRY.introspect(interfaze);
         wire.setServiceContract(contract);
         wire.setServiceName(serviceName);
-        wire.addInvocationChains(
-            createInboundChains(interfaze, interceptor));
+        wire.addInvocationChains(createInboundChains(interfaze, interceptor));
         return wire;
     }
 
-    public static <T> OutboundWire createReferenceWire(String refName, Class<T> interfaze, Interceptor interceptor)
+    private static <T> OutboundWire createOutboundWire(String refName, Class<T> interfaze, Interceptor interceptor)
         throws InvalidServiceContractException {
 
         OutboundWire wire = new OutboundWireImpl();
@@ -285,71 +238,6 @@
         return wire;
     }
 
-    public static <T> OutboundWire createReferenceWire(String refName, Class<T> interfaze)
-        throws InvalidServiceContractException {
-        OutboundWire wire = new OutboundWireImpl();
-        wire.setReferenceName(refName);
-        wire.addInvocationChains(createOutboundChains(interfaze));
-        ServiceContract<?> contract = REGISTRY.introspect(interfaze);
-        wire.setServiceContract(contract);
-        return wire;
-    }
-
-
-    /**
-     * @param outboundWire
-     * @param inboundWire
-     * @param targetContext
-     * @param cacheable
-     * @throws Exception
-     */
-    public static void connect(OutboundWire outboundWire,
-                               InboundWire inboundWire,
-                               JavaAtomicComponent targetContext,
-                               boolean cacheable) throws Exception {
-        if (inboundWire != null) {
-            // if null, the target side has no interceptors or handlers
-            Map<Operation<?>, InboundInvocationChain> targetInvocationConfigs = inboundWire.getInvocationChains();
-            for (OutboundInvocationChain outboundInvocationConfig : outboundWire.getInvocationChains().values()) {
-                // match wire chains
-                InboundInvocationChain inboundInvocationConfig =
-                    targetInvocationConfigs.get(outboundInvocationConfig.getOperation());
-                if (inboundInvocationConfig == null) {
-                    BuilderConfigException e =
-                        new BuilderConfigException("Incompatible source and target interface types for reference");
-                    e.setIdentifier(outboundWire.getReferenceName());
-                    throw e;
-                }
-                if (inboundInvocationConfig.getHeadInterceptor() == null) {
-                    BuilderConfigException e =
-                        new BuilderConfigException("No target handler or interceptor for operation");
-                    e.setIdentifier(inboundInvocationConfig.getOperation().getName());
-                    throw e;
-                }
-                if (!(outboundInvocationConfig.getTailInterceptor() instanceof InvokerInterceptor
-                    && inboundInvocationConfig.getHeadInterceptor() instanceof InvokerInterceptor)) {
-                    // check that we do not have the case where the only interceptors are invokers since we just
-                    // need one
-                    outboundInvocationConfig.setTargetInterceptor(inboundInvocationConfig.getHeadInterceptor());
-                }
-            }
-
-            for (OutboundInvocationChain chain : outboundWire.getInvocationChains().values()) {
-                //FIXME should use target method, not outboundInvocationConfig.getMethod()
-                Method[] methods = outboundWire.getServiceContract().getInterfaceClass().getMethods();
-                Method m = JavaIDLUtils.findMethod(chain.getOperation(), methods);
-                TargetInvoker invoker = new JavaTargetInvoker(m, targetContext, null, new WorkContextImpl(), null);
-                invoker.setCacheable(cacheable);
-                chain.setTargetInvoker(invoker);
-            }
-        }
-    }
-
-    private static Map<Operation<?>, OutboundInvocationChain> createOutboundChains(Class<?> interfaze)
-        throws InvalidServiceContractException {
-        return createOutboundChains(interfaze, null);
-    }
-
     private static Map<Operation<?>, OutboundInvocationChain> createOutboundChains(Class<?> interfaze,
                                                                                    Interceptor interceptor)
         throws InvalidServiceContractException {
@@ -381,11 +269,6 @@
             invocations.put(method, chain);
         }
         return invocations;
-    }
-
-    private static class DummyImpl {
-        public DummyImpl() {
-        }
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/wire/DifferentInterfaceWireTestCase.java Sun Nov 26 01:41:20 2006
@@ -58,11 +58,13 @@
                 SourceImpl.class,
                 Target.class,
                 scope,
+                null,
                 members,
                 "target",
                 OtherTarget.class,
                 OtherTargetImpl.class,
-                scope);
+                scope,
+                null);
         AtomicComponent sourceComponent = contexts.get("source");
         Source source = (Source) sourceComponent.getServiceInstance();
         Target target = source.getTarget();
@@ -78,10 +80,16 @@
         members.put("target", m);
         ScopeContainer scope = createMock();
         scope.start();
-        Map<String, AtomicComponent> contexts =
-            MockFactory.createWiredMultiplicity("source", SourceImpl.class, Target.class, scope,
-                "target", OtherTarget.class, OtherTargetImpl.class, members, scope);
-        AtomicComponent sourceComponent = contexts.get("source");
+        Map<String, AtomicComponent> components = MockFactory.createWiredMultiplicity("source",
+                SourceImpl.class,
+                Target.class,
+                scope,
+                "target",
+                OtherTarget.class,
+                OtherTargetImpl.class,
+                members,
+                scope);
+        AtomicComponent sourceComponent = components.get("source");
         Source source = (Source) sourceComponent.getServiceInstance();
         List<Target> targets = source.getTargets();
         assertEquals(1, targets.size());

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java?view=diff&rev=479319&r1=479318&r2=479319
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/mock/component/OrderedInitPojoImpl.java Sun Nov 26 01:41:20 2006
@@ -29,6 +29,9 @@
     private static int numberInstantied;
     private int initOrder;
 
+    public OrderedInitPojoImpl() {
+    }
+
     @Init
     public void init() {
         synchronized (LOCK) {



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org