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

svn commit: r479342 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/component/scope/ test/java/org/apache/tuscany/core/implementation/java/integration/ test/java/org/apache/tuscany/core/integration/conversation/ test...

Author: jmarino
Date: Sun Nov 26 03:07:04 2006
New Revision: 479342

URL: http://svn.apache.org/viewvc?view=rev&rev=479342
Log:
more testcase cleanup; have conversational scope container persist instances after creation

Added:
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicConversationInvocationTestCase.java   (contents, props changed)
      - copied, changed from r479280, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicInvocationTestCase.java
Removed:
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicInvocationTestCase.java
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/mock/MockFactory.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java?view=diff&rev=479342&r1=479341&r2=479342
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ConversationalScopeContainerImpl.java Sun Nov 26 03:07:04 2006
@@ -92,11 +92,19 @@
             if (instance != null) {
                 return instance;
             } else {
-                // TODO do we persist after we create?
-                return component.createInstance();
+                Object o = component.createInstance();
+                // FIXME support expirations
+                nonDurableStore.insertRecord(component, conversationId, o, Store.NEVER);
+                return o;
             }
         } catch (StoreReadException e) {
-            throw new TargetException(e);
+            TargetException e2 = new TargetException(e);
+            e2.setIdentifier(component.getName());
+            throw e2;
+        } catch (StoreWriteException e) {
+            TargetException e2 = new TargetException(e);
+            e2.setIdentifier(component.getName());
+            throw e2;
         } finally {
             workContext.setCurrentAtomicComponent(null);
         }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java?view=diff&rev=479342&r1=479341&r2=479342
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java Sun Nov 26 03:07:04 2006
@@ -192,7 +192,7 @@
         source.addOutboundWire(outboundWire);
         configuration.setName("target");
         JavaAtomicComponent target = new JavaAtomicComponent(configuration);
-        InboundWire targetWire = MockFactory.createTargetWire("Target", Target.class);
+        InboundWire targetWire = MockFactory.createInboundWire("Target", Target.class);
         targetWire.setContainer(target);
         target.addInboundWire(targetWire);
         InboundWire inboundWire = target.getInboundWire("Target");

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicConversationInvocationTestCase.java (from r479280, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicInvocationTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicConversationInvocationTestCase.java?view=diff&rev=479342&p1=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicInvocationTestCase.java&r1=479280&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicConversationInvocationTestCase.java&r2=479342
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicInvocationTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicConversationInvocationTestCase.java Sun Nov 26 03:07:04 2006
@@ -18,71 +18,153 @@
  */
 package org.apache.tuscany.core.integration.conversation;
 
-import org.osoa.sca.annotations.Scope;
+import java.lang.reflect.Constructor;
+import java.util.Map;
+
 import org.osoa.sca.annotations.EndConversation;
+import org.osoa.sca.annotations.Scope;
 
+import org.apache.tuscany.spi.ObjectCreationException;
+import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.model.Operation;
+import static org.apache.tuscany.spi.model.Scope.CONVERSATION;
 import org.apache.tuscany.spi.services.store.StoreMonitor;
-import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.MessageImpl;
+import org.apache.tuscany.spi.wire.OutboundInvocationChain;
 import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.wire.WirePostProcessorRegistry;
 
 import junit.framework.TestCase;
+import org.apache.tuscany.core.builder.ConnectorImpl;
+import org.apache.tuscany.core.builder.WirePostProcessorRegistryImpl;
 import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.core.component.scope.ConversationalScopeContainerImpl;
-import org.apache.tuscany.core.services.store.memory.MemoryStore;
-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.injection.PojoObjectFactory;
+import org.apache.tuscany.core.integration.mock.MockFactory;
+import org.apache.tuscany.core.services.store.memory.MemoryStore;
 import org.apache.tuscany.core.wire.ConversationWirePostProcessor;
-import org.apache.tuscany.core.wire.OutboundWireImpl;
 import org.easymock.classextension.EasyMock;
 
 /**
  * @version $Rev$ $Date$
  */
-public class BasicInvocationTestCase extends TestCase {
+public class BasicConversationInvocationTestCase extends TestCase {
     private ScopeContainer container;
     private MemoryStore store;
     private WorkContext workContext;
-    private JavaInterfaceProcessorRegistryImpl registry;
-    private ServiceContract contract;
-    private JavaAtomicComponent component;
-    private ConversationWirePostProcessor processor;
+    private ConnectorImpl connector;
+    private OutboundWire owire;
+    private Foo targetInstance;
 
     public void testConversationStartContinueEnd() throws Exception {
-        OutboundWire owire = new OutboundWireImpl();
+        workContext.setIdentifier(CONVERSATION, "12345A");
+        for (Map.Entry<Operation<?>, OutboundInvocationChain> entry : owire.getInvocationChains().entrySet()) {
+            if ("operation1".equals(entry.getKey().getName())) {
+                MessageImpl msg = new MessageImpl();
+                msg.setTargetInvoker(entry.getValue().getTargetInvoker());
+                entry.getValue().getHeadInterceptor().invoke(msg);
+            }
+        }
+        for (Map.Entry<Operation<?>, OutboundInvocationChain> entry : owire.getInvocationChains().entrySet()) {
+            if ("operation2".equals(entry.getKey().getName())) {
+                MessageImpl msg = new MessageImpl();
+                msg.setTargetInvoker(entry.getValue().getTargetInvoker());
+                entry.getValue().getHeadInterceptor().invoke(msg);
+            }
+        }
+        for (Map.Entry<Operation<?>, OutboundInvocationChain> entry : owire.getInvocationChains().entrySet()) {
+            if ("end".equals(entry.getKey().getName())) {
+                MessageImpl msg = new MessageImpl();
+                msg.setTargetInvoker(entry.getValue().getTargetInvoker());
+                entry.getValue().getHeadInterceptor().invoke(msg);
+            }
+        }
+        workContext.clearIdentifier(CONVERSATION);
+
         // start, continue, end
+        EasyMock.verify(targetInstance);
     }
 
 
     protected void setUp() throws Exception {
         super.setUp();
+        bootRuntime();
+        targetInstance = EasyMock.createMock(Foo.class);
+        targetInstance.operation1();
+        targetInstance.operation2();
+        targetInstance.end();
+        EasyMock.replay(targetInstance);
+        // create target component mock
+        JavaAtomicComponent target = createAtomicComponent();
+        // create source component mock
+        JavaAtomicComponent source = EasyMock.createMock(JavaAtomicComponent.class);
+        EasyMock.expect(source.getName()).andReturn("source");
+        EasyMock.replay(source);
+
+        owire = MockFactory.createOutboundWire("foo", Foo.class);
+        owire.setContainer(source);
+        owire.setTargetName(new QualifiedName("foo/bar"));
+        InboundWire iwire = MockFactory.createInboundWire("foo", Foo.class);
+        iwire.setContainer(target);
+        connector.connect(owire, iwire, false);
+
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        container.stop();
+        store.destroy();
+    }
+
+    private void bootRuntime() {
         workContext = new WorkContextImpl();
-        registry = new JavaInterfaceProcessorRegistryImpl();
-        contract = registry.introspect(Foo.class);
-        processor = new ConversationWirePostProcessor();
+        WirePostProcessorRegistry processorRegistry = new WirePostProcessorRegistryImpl();
+        ConversationWirePostProcessor processor = new ConversationWirePostProcessor();
+        processor.setRegistry(processorRegistry);
+        processor.init();
+        connector = new ConnectorImpl(null, processorRegistry, null, workContext);
         store = new MemoryStore(EasyMock.createNiceMock(StoreMonitor.class));
         store.init();
         container = new ConversationalScopeContainerImpl(store, workContext);
         container.start();
-        component = EasyMock.createMock(JavaAtomicComponent.class);
 
     }
 
-    protected void tearDown() throws Exception {
-        super.tearDown();
-        container.stop();
-        store.destroy();
+    private JavaAtomicComponent createAtomicComponent() throws Exception {
+        PojoConfiguration configuration = new PojoConfiguration();
+        configuration.setName("target");
+        configuration.setScopeContainer(container);
+        configuration.setInstanceFactory(new MockPojoFactory(Object.class.getConstructor()));
+        JavaAtomicComponent component = new JavaAtomicComponent(configuration);
+        component.start();
+        return component;
+    }
+
+    private class MockPojoFactory extends PojoObjectFactory<Object> {
+        public MockPojoFactory(Constructor<Object> ctr) {
+            super(ctr);
+        }
+
+        public Foo getInstance() throws ObjectCreationException {
+            return targetInstance;
+        }
     }
 
     @Scope("CONVERSATION")
-    private interface Foo {
+    public static interface Foo {
 
         void operation1();
+
         void operation2();
 
         @EndConversation
         void end();
 
     }
+
 }

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicConversationInvocationTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/conversation/BasicConversationInvocationTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

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=479342&r1=479341&r2=479342
==============================================================================
--- 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 03:07:04 2006
@@ -198,25 +198,12 @@
         return components;
     }
 
-    public static <T> InboundWire createTargetWire(String serviceName, Class<T> interfaze)
+    public static <T> InboundWire createInboundWire(String serviceName, Class<T> interfaze)
         throws InvalidServiceContractException {
         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);
-    }
-
-    private static <T> InboundWire createInboundWire(String serviceName, Class<T> interfaze, Interceptor interceptor)
+    public static <T> InboundWire createInboundWire(String serviceName, Class<T> interfaze, Interceptor interceptor)
         throws InvalidServiceContractException {
         InboundWire wire = new InboundWireImpl();
         ServiceContract<?> contract = REGISTRY.introspect(interfaze);
@@ -226,7 +213,12 @@
         return wire;
     }
 
-    private static <T> OutboundWire createOutboundWire(String refName, Class<T> interfaze, Interceptor interceptor)
+    public static <T> OutboundWire createOutboundWire(String refName, Class<T> interfaze)
+        throws InvalidServiceContractException {
+        return createOutboundWire(refName, interfaze, null);
+    }
+
+    public static <T> OutboundWire createOutboundWire(String refName, Class<T> interfaze, Interceptor interceptor)
         throws InvalidServiceContractException {
 
         OutboundWire wire = new OutboundWireImpl();
@@ -236,6 +228,20 @@
         ServiceContract<?> contract = REGISTRY.introspect(interfaze);
         wire.setServiceContract(contract);
         return wire;
+    }
+
+
+    @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);
     }
 
     private static Map<Operation<?>, OutboundInvocationChain> createOutboundChains(Class<?> interfaze,



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