You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2007/03/18 05:48:53 UTC

svn commit: r519541 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/implementation/ core/src/main/java/org/apache/tuscany/core/wire/jdk/ core/src/test/java/org/apache/tuscany/core/implementation/java/ core/src/test/j...

Author: jboynes
Date: Sat Mar 17 21:48:50 2007
New Revision: 519541

URL: http://svn.apache.org/viewvc?view=rev&rev=519541
Log:
tunnel work context through pojos on the thread

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoWorkContextTunnel.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaTargetInvokerSequenceTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/WireToScopedJavaTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/scope/ScopeReferenceTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/BasicReferenceInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerSerializationTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInvocationHandler.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/event/AbstractEventPublisherTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractInvocationHandlerTestCase.java

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoWorkContextTunnel.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoWorkContextTunnel.java?view=auto&rev=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoWorkContextTunnel.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoWorkContextTunnel.java Sat Mar 17 21:48:50 2007
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+package org.apache.tuscany.core.implementation;
+
+import org.apache.tuscany.spi.component.WorkContext;
+
+/**
+ * Class for tunneling a WorkContext through the invocation of a user class.
+ *
+ * @version $Rev$ $Date$
+ */
+public final class PojoWorkContextTunnel {
+    private PojoWorkContextTunnel() {
+    }
+
+    private static final ThreadLocal<WorkContext> CONTEXT = new ThreadLocal<WorkContext>();
+
+    /**
+     * Set the WorkContext for the current thread.
+     * The current work context is returned and must be restored after the invocation is complete.
+     * Typical usage would be:
+     * <pre>
+     *   WorkContext old = PojoWorkContextTunnel.setThreadWorkContext(newContext);
+     *   try {
+     *      ... invoke user code ...
+     *   } finally {
+     *     PojoWorkContextTunnel.setThreadWorkContext(old);
+     *   }
+     * </pre>
+     * @param context
+     * @return the current work context for the thread; this must be restored after the invocation is made
+     */
+    public static WorkContext setThreadWorkContext(WorkContext context) {
+        WorkContext old = CONTEXT.get();
+        CONTEXT.set(context);
+        return old;
+    }
+
+    /**
+     * Returns the WorkContext for the current thread.
+     *
+     * @return the WorkContext for the current thread
+     */
+    public static WorkContext getThreadWorkContext() {
+        return CONTEXT.get();
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoWorkContextTunnel.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoWorkContextTunnel.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandler.java Sat Mar 17 21:48:50 2007
@@ -45,6 +45,7 @@
 
 import org.apache.tuscany.core.wire.NoMethodForOperationException;
 import org.apache.tuscany.core.wire.WireUtils;
+import org.apache.tuscany.core.implementation.PojoWorkContextTunnel;
 
 
 /**
@@ -120,6 +121,7 @@
         }
         TargetInvoker invoker = getInvoker(holder);
         InvocationChain chain = holder.getChain();
+        WorkContext workContext = PojoWorkContextTunnel.getThreadWorkContext();
 
 // JFM commonting out temporarily
 //        if (wireContainerIsAtomicComponent && contractHasCallback && !callbackIsImplemented) {

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaTargetInvokerSequenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaTargetInvokerSequenceTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaTargetInvokerSequenceTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/JavaTargetInvokerSequenceTestCase.java Sat Mar 17 21:48:50 2007
@@ -53,11 +53,13 @@
         foo.invoke();
         EasyMock.replay(foo);
 
-        msg = new MessageImpl();
         contextId = new Object();
         workContext = EasyMock.createMock(WorkContext.class);
         EasyMock.expect(workContext.getIdentifier(Scope.CONVERSATION)).andStubReturn(contextId);
         EasyMock.replay(workContext);
+
+        msg = new MessageImpl();
+        msg.setWorkContext(workContext);
 
         component = EasyMock.createMock(JavaAtomicComponent.class);
         scopeContainer = EasyMock.createMock(ScopeContainer.class);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/CallbackInvocationTestCase.java Sat Mar 17 21:48:50 2007
@@ -52,6 +52,7 @@
 import org.apache.tuscany.core.implementation.java.JavaAtomicComponent;
 import org.apache.tuscany.core.implementation.java.JavaComponentBuilder;
 import org.apache.tuscany.core.implementation.java.JavaImplementation;
+import org.apache.tuscany.core.implementation.PojoWorkContextTunnel;
 import org.apache.tuscany.core.wire.jdk.JDKProxyService;
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expectLastCall;
@@ -95,10 +96,15 @@
         targetComponent.start();
         clientComponent.start();
         FooClient client = (FooClient) clientComponent.getTargetInstance();
-        client.invoke();
-        assertTrue(client.invoked);
-        client.invokeMultiCallback();
-        assertTrue(client.count == 2);
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            client.invoke();
+            assertTrue(client.invoked);
+            client.invokeMultiCallback();
+            assertTrue(client.count == 2);
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
     }
 
     /**
@@ -135,12 +141,17 @@
         connector.connect(sourceDefinition2);
         targetComponent.start();
 
-        FooClient client1 = (FooClient) clientComponent1.getTargetInstance();
-        client1.invoke();
-        assertTrue(client1.invoked);
-        FooClient client2 = (FooClient) clientComponent2.getTargetInstance();
-        client2.invoke();
-        assertTrue(client2.invoked);
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            FooClient client1 = (FooClient) clientComponent1.getTargetInstance();
+            client1.invoke();
+            assertTrue(client1.invoked);
+            FooClient client2 = (FooClient) clientComponent2.getTargetInstance();
+            client2.invoke();
+            assertTrue(client2.invoked);
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
     }
 
 

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/WireToScopedJavaTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/WireToScopedJavaTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/WireToScopedJavaTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/WireToScopedJavaTestCase.java Sat Mar 17 21:48:50 2007
@@ -50,6 +50,7 @@
 import org.apache.tuscany.core.component.scope.StatelessScopeContainer;
 import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
 import org.apache.tuscany.core.implementation.PojoConfiguration;
+import org.apache.tuscany.core.implementation.PojoWorkContextTunnel;
 import org.apache.tuscany.core.implementation.java.JavaAtomicComponent;
 import org.apache.tuscany.core.injection.PojoObjectFactory;
 import org.apache.tuscany.core.mock.component.Target;
@@ -74,8 +75,13 @@
         final Wire wire = getWire(scope);
         Target service = proxyService.createProxy(Target.class, wire);
         assertNotNull(service);
-        service.setString("foo");
-        assertEquals(null, service.getString());
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            service.setString("foo");
+            assertEquals(null, service.getString());
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
         scope.stop();
     }
 
@@ -170,10 +176,15 @@
         final Wire wire = getWire(scope);
         Target service = proxyService.createProxy(Target.class, wire);
         Target target = proxyService.createProxy(Target.class, wire);
-        assertNotNull(service);
-        service.setString("foo");
-        assertEquals("foo", service.getString());
-        assertEquals("foo", target.getString());
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            assertNotNull(service);
+            service.setString("foo");
+            assertEquals("foo", service.getString());
+            assertEquals("foo", target.getString());
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
         scope.stop();
     }
 

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/scope/ScopeReferenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/scope/ScopeReferenceTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/scope/ScopeReferenceTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/integration/scope/ScopeReferenceTestCase.java Sat Mar 17 21:48:50 2007
@@ -52,6 +52,9 @@
 import org.apache.tuscany.core.mock.component.Target;
 import org.apache.tuscany.core.mock.component.TargetImpl;
 import org.apache.tuscany.core.util.JavaIntrospectionHelper;
+import org.apache.tuscany.core.implementation.PojoWorkContextTunnel;
+
+import org.easymock.EasyMock;
 
 /**
  * Tests scoping is properly handled for service references
@@ -63,6 +66,7 @@
     private URI groupId;
     private ScopeContainer statelessScope;
     private ScopeContainer compositeScope;
+    private WorkContext workContext;
 
     /**
      * Tests a composite-to-composite scoped wire
@@ -79,11 +83,16 @@
         AtomicComponent targetComponent = contexts.get("target");
         Source source = (Source) sourceComponent.getTargetInstance();
         Target target = (Target) targetComponent.getTargetInstance();
-        assertNull(source.getTarget().getString());
-        assertNull(target.getString());
-        target.setString("foo");
-        assertTrue(Proxy.isProxyClass(source.getTarget().getClass()));
-        assertEquals("foo", source.getTarget().getString());
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            assertNull(source.getTarget().getString());
+            assertNull(target.getString());
+            target.setString("foo");
+            assertTrue(Proxy.isProxyClass(source.getTarget().getClass()));
+            assertEquals("foo", source.getTarget().getString());
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
     }
 
     /**
@@ -204,15 +213,20 @@
         AtomicComponent targetComponent = contexts.get("target");
         Source source = (Source) sourceComponent.getTargetInstance();
         Target target = (Target) targetComponent.getTargetInstance();
-        assertTrue(Proxy.isProxyClass(source.getTarget().getClass()));
-        assertNull(source.getTarget().getString());
-        assertNull(target.getString());
-        target.setString("foo");
-        assertFalse("foo".equals(source.getTarget().getString()));
-        Target target2 = (Target) targetComponent.getTargetInstance();
-        assertFalse("foo".equals(target2.getString()));
-        source.getTarget().setString("bar");
-        assertFalse("bar".equals(source.getTarget().getString()));
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            assertTrue(Proxy.isProxyClass(source.getTarget().getClass()));
+            assertNull(source.getTarget().getString());
+            assertNull(target.getString());
+            target.setString("foo");
+            assertFalse("foo".equals(source.getTarget().getString()));
+            Target target2 = (Target) targetComponent.getTargetInstance();
+            assertFalse("foo".equals(target2.getString()));
+            source.getTarget().setString("bar");
+            assertFalse("bar".equals(source.getTarget().getString()));
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
     }
 
 
@@ -627,15 +641,20 @@
         AtomicComponent targetComponent = contexts.get("target");
         Source source = (Source) sourceComponent.getTargetInstance();
         Target target = (Target) targetComponent.getTargetInstance();
-        assertTrue(Proxy.isProxyClass(source.getTarget().getClass()));
-        assertNull(source.getTarget().getString());
-        assertNull(target.getString());
-        target.setString("foo");
-        assertFalse("foo".equals(source.getTarget().getString()));
-        Target target2 = (Target) targetComponent.getTargetInstance();
-        assertFalse("foo".equals(target2.getString()));
-        source.getTarget().setString("bar");
-        assertFalse("bar".equals(source.getTarget().getString()));
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            assertTrue(Proxy.isProxyClass(source.getTarget().getClass()));
+            assertNull(source.getTarget().getString());
+            assertNull(target.getString());
+            target.setString("foo");
+            assertFalse("foo".equals(source.getTarget().getString()));
+            Target target2 = (Target) targetComponent.getTargetInstance();
+            assertFalse("foo".equals(target2.getString()));
+            source.getTarget().setString("bar");
+            assertFalse("bar".equals(source.getTarget().getString()));
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
     }
 
     /**
@@ -741,32 +760,22 @@
      * Tests a stateless-to-composite scoped wire is setup properly by the runtime
      */
     public void testStatelessToComposite() throws Exception {
-        WorkContext ctx = new WorkContextImpl();
-
         Map<String, AtomicComponent> contexts = MockFactory.createWiredComponents("source", SourceImpl.class,
             statelessScope, members, "target", Target.class, TargetImpl.class, compositeScope);
         AtomicComponent sourceComponent = contexts.get("source");
         AtomicComponent targetComponent = contexts.get("target");
         Source source = (Source) sourceComponent.getTargetInstance();
         Target target = (Target) targetComponent.getTargetInstance();
-        assertNull(source.getTarget().getString());
-        assertNull(target.getString());
-        target.setString("foo");
-        assertTrue(Proxy.isProxyClass(source.getTarget().getClass()));
-        assertEquals("foo", source.getTarget().getString());
-
-        //second session
-        Object session2 = new Object();
-        ctx.setIdentifier(Scope.SESSION, session2);
-        compositeScope.onEvent(new HttpSessionStart(this, session2));
-
-        Target target2 = (Target) targetComponent.getTargetInstance();
-        assertEquals("foo", target2.getString());
-
-        assertEquals("foo", source.getTarget().getString());
-        source.getTarget().setString("bar");
-        assertEquals("bar", target2.getString());
-        assertEquals("bar", source.getTarget().getString());
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            assertNull(source.getTarget().getString());
+            assertNull(target.getString());
+            target.setString("foo");
+            assertTrue(Proxy.isProxyClass(source.getTarget().getClass()));
+            assertEquals("foo", source.getTarget().getString());
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
     }
 
     protected void setUp() throws Exception {
@@ -787,6 +796,13 @@
         compositeScope.start();
         compositeScope.createGroup(groupId);
         compositeScope.startContext(groupId, groupId);
+
+        workContext = EasyMock.createMock(WorkContext.class);
+        EasyMock.expect(workContext.getIdentifier(Scope.COMPOSITE)).andStubReturn(URI.create("composite"));
+        EasyMock.expect(workContext.getIdentifier(Scope.STATELESS)).andStubReturn(null);
+        EasyMock.expect(workContext.getCorrelationId()).andStubReturn(null);
+        EasyMock.expect(workContext.getCallbackUris()).andStubReturn(null);
+        EasyMock.replay(workContext);
     }
 
 

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/BasicReferenceInvocationHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/BasicReferenceInvocationHandlerTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/BasicReferenceInvocationHandlerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/BasicReferenceInvocationHandlerTestCase.java Sat Mar 17 21:48:50 2007
@@ -35,6 +35,7 @@
 import org.apache.tuscany.core.mock.wire.MockStaticInvoker;
 import org.apache.tuscany.core.mock.wire.MockSyncInterceptor;
 import org.apache.tuscany.core.wire.jdk.JDKInvocationHandler;
+import org.apache.tuscany.core.implementation.PojoWorkContextTunnel;
 
 import org.easymock.EasyMock;
 
@@ -62,8 +63,13 @@
         wire.setSourceContract(contract);
         wire.setSourceUri(URI.create("#wire"));
         JDKInvocationHandler handler = new JDKInvocationHandler(SimpleTarget.class, wire, workContext);
-        assertEquals("foo", handler.invoke(null, echo, new String[]{"foo"}));
-        assertEquals(1, interceptor.getCount());
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            assertEquals("foo", handler.invoke(null, echo, new String[]{"foo"}));
+            assertEquals(1, interceptor.getCount());
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
     }
 
     public void setUp() throws Exception {

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InvocationHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InvocationHandlerTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InvocationHandlerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/InvocationHandlerTestCase.java Sat Mar 17 21:48:50 2007
@@ -36,6 +36,7 @@
 import org.apache.tuscany.core.mock.wire.MockStaticInvoker;
 import org.apache.tuscany.core.mock.wire.MockSyncInterceptor;
 import org.apache.tuscany.core.wire.jdk.JDKInvocationHandler;
+import org.apache.tuscany.core.implementation.PojoWorkContextTunnel;
 
 import org.easymock.EasyMock;
 
@@ -131,6 +132,11 @@
         EasyMock.expect(workContext.getCorrelationId()).andStubReturn(null);
         EasyMock.expect(workContext.getCallbackUris()).andStubReturn(null);
         EasyMock.replay(workContext);
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
     }
 
+    protected void tearDown() throws Exception {
+        PojoWorkContextTunnel.setThreadWorkContext(null);
+        super.tearDown();
+    }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerSerializationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerSerializationTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerSerializationTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerSerializationTestCase.java Sat Mar 17 21:48:50 2007
@@ -44,6 +44,8 @@
 import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.core.wire.InvocationChainImpl;
 import org.apache.tuscany.core.wire.InvokerInterceptor;
+import org.apache.tuscany.core.implementation.PojoWorkContextTunnel;
+
 import org.easymock.EasyMock;
 
 /**
@@ -57,19 +59,24 @@
     public void testSerializeDeserialize() throws Throwable {
         JDKInvocationHandler handler =
             new JDKInvocationHandler(Foo.class, wire, workContext);
-        handler.invoke(Foo.class.getMethod("invoke"), null);
-        ByteArrayOutputStream stream = new ByteArrayOutputStream();
-        ObjectOutputStream ostream = new ObjectOutputStream(stream);
-        ostream.writeObject(handler);
+        PojoWorkContextTunnel.setThreadWorkContext(workContext);
+        try {
+            handler.invoke(null, Foo.class.getMethod("invoke"), null);
+            ByteArrayOutputStream stream = new ByteArrayOutputStream();
+            ObjectOutputStream ostream = new ObjectOutputStream(stream);
+            ostream.writeObject(handler);
 
-        ObjectInputStream istream = new ObjectInputStream(new ByteArrayInputStream(stream.toByteArray()));
-        JDKInvocationHandler externalizable = (JDKInvocationHandler) istream.readObject();
+            ObjectInputStream istream = new ObjectInputStream(new ByteArrayInputStream(stream.toByteArray()));
+            JDKInvocationHandler externalizable = (JDKInvocationHandler) istream.readObject();
 
-        externalizable.setWorkContext(workContext);
-        externalizable.reactivate();
-        externalizable.invoke(Foo.class.getMethod("invoke"), null);
-        EasyMock.verify(invoker);
-        EasyMock.verify(wire);
+            externalizable.setWorkContext(workContext);
+            externalizable.reactivate();
+            externalizable.invoke(Foo.class.getMethod("invoke"), null);
+            EasyMock.verify(invoker);
+            EasyMock.verify(wire);
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
     }
 
     protected void setUp() throws Exception {

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/jdk/JDKInvocationHandlerTestCase.java Sat Mar 17 21:48:50 2007
@@ -41,8 +41,10 @@
 
 import junit.framework.TestCase;
 import org.apache.tuscany.core.component.WorkContextImpl;
+import org.apache.tuscany.core.component.SimpleWorkContext;
 import org.apache.tuscany.core.wire.InvocationChainImpl;
 import org.apache.tuscany.core.wire.WireImpl;
+import org.apache.tuscany.core.implementation.PojoWorkContextTunnel;
 
 /**
  * @version $Rev$ $Date$
@@ -83,29 +85,34 @@
         contract.setConversational(true);
         op1.setServiceContract(contract);
 
-        WorkContext wc = new WorkContextImpl();
-        MockInvoker invoker = new MockInvoker(wc);
-
-        InvocationChain chain = new InvocationChainImpl(op1);
-        chain.setTargetInvoker(invoker);
-        wire.addInvocationChain(op1, chain);
-        URI uri = URI.create("fooRef");
-        wire.setSourceUri(uri);
-        wire.setSourceContract(contract);
-
-        String convID = UUID.randomUUID().toString();
-        wc.setIdentifier(Scope.CONVERSATION, convID);
-        invoker.setCurrentConversationID(convID);
-
-        JDKInvocationHandler handler = new JDKInvocationHandler(Foo.class, wire, wc);
-        handler.invoke(Foo.class.getMethod("test", String.class), new Object[]{"bar"});
-        String currentConvID = (String) wc.getIdentifier(Scope.CONVERSATION);
-        assertSame(convID, currentConvID);
-
-        JDKInvocationHandler handler2 = new JDKInvocationHandler(Foo.class, wire, wc);
-        handler2.invoke(Foo.class.getMethod("test", String.class), new Object[]{"bar"});
-        currentConvID = (String) wc.getIdentifier(Scope.CONVERSATION);
-        assertSame(convID, currentConvID);
+        WorkContext wc = new SimpleWorkContext();
+        PojoWorkContextTunnel.setThreadWorkContext(wc);
+        try {
+            MockInvoker invoker = new MockInvoker(wc);
+
+            InvocationChain chain = new InvocationChainImpl(op1);
+            chain.setTargetInvoker(invoker);
+            wire.addInvocationChain(op1, chain);
+            URI uri = URI.create("fooRef");
+            wire.setSourceUri(uri);
+            wire.setSourceContract(contract);
+
+            String convID = UUID.randomUUID().toString();
+            wc.setIdentifier(Scope.CONVERSATION, convID);
+            invoker.setCurrentConversationID(convID);
+
+            JDKInvocationHandler handler = new JDKInvocationHandler(Foo.class, wire, wc);
+            handler.invoke(null, Foo.class.getMethod("test", String.class), new Object[]{"bar"});
+            String currentConvID = (String) wc.getIdentifier(Scope.CONVERSATION);
+            assertSame(convID, currentConvID);
+
+            JDKInvocationHandler handler2 = new JDKInvocationHandler(Foo.class, wire, wc);
+            handler2.invoke(null, Foo.class.getMethod("test", String.class), new Object[]{"bar"});
+            currentConvID = (String) wc.getIdentifier(Scope.CONVERSATION);
+            assertSame(convID, currentConvID);
+        } finally {
+            PojoWorkContextTunnel.setThreadWorkContext(null);
+        }
     }
 
     private interface Foo {

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/TargetInvokerExtension.java Sat Mar 17 21:48:50 2007
@@ -48,6 +48,7 @@
     public Message invoke(Message msg) throws InvocationRuntimeException {
         try {
             Object messageId = msg.getMessageId();
+            WorkContext workContext = msg.getWorkContext();
             if (messageId != null) {
                 workContext.setCorrelationId(messageId);
             }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInvocationHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInvocationHandler.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInvocationHandler.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/AbstractInvocationHandler.java Sat Mar 17 21:48:50 2007
@@ -67,6 +67,7 @@
             }
         } else {
             Message msg = new MessageImpl();
+            msg.setWorkContext(workContext);
             msg.setTargetInvoker(invoker);
             msg.setCorrelationId(workContext.getCorrelationId());
             msg.setCallbackUris(workContext.getCallbackUris());

Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/event/AbstractEventPublisherTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/event/AbstractEventPublisherTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/event/AbstractEventPublisherTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/event/AbstractEventPublisherTestCase.java Sat Mar 17 21:48:50 2007
@@ -36,7 +36,7 @@
         EasyMock.replay(listener);
         publisher.addListener(listener);
         publisher.publish(event);
-        EasyMock.verify(publisher);
+        EasyMock.verify(listener);
     }
 
     public void testRemoveListener() {
@@ -46,7 +46,7 @@
         publisher.addListener(listener);
         publisher.removeListener(listener);
         publisher.publish(event);
-        EasyMock.verify(publisher);
+        EasyMock.verify(listener);
     }
 
     public void testFalseFilterListener() {
@@ -55,7 +55,7 @@
         EasyMock.replay(listener);
         publisher.addListener(new FalseFilter(), listener);
         publisher.publish(event);
-        EasyMock.verify(publisher);
+        EasyMock.verify(listener);
     }
 
     public void testTrueFilterListener() {
@@ -66,7 +66,7 @@
         EasyMock.replay(listener);
         publisher.addListener(new TrueFilter(), listener);
         publisher.publish(event);
-        EasyMock.verify(publisher);
+        EasyMock.verify(listener);
     }
 
     protected void setUp() throws Exception {

Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionSequenceTestCase.java Sat Mar 17 21:48:50 2007
@@ -50,6 +50,7 @@
         EasyMock.replay(target);
         Invoker invoker = new Invoker(context, monitor, target);
         Message msg = new MessageImpl();
+        msg.setWorkContext(context);
         msg.pushCallbackUri(from);
         msg.setBody("test");
         msg.setConversationSequence(Invoker.START);
@@ -74,6 +75,7 @@
         EasyMock.replay(target);
         Invoker invoker = new Invoker(context, monitor, target);
         Message msg = new MessageImpl();
+        msg.setWorkContext(context);
         msg.pushCallbackUri(from);
         msg.setBody("test");
         msg.setConversationSequence(Invoker.CONTINUE);
@@ -98,6 +100,7 @@
         EasyMock.replay(target);
         Invoker invoker = new Invoker(context, monitor, target);
         Message msg = new MessageImpl();
+        msg.setWorkContext(context);
         msg.pushCallbackUri(from);
         msg.setBody("test");
         msg.setConversationSequence(Invoker.END);
@@ -122,6 +125,7 @@
         EasyMock.replay(target);
         Invoker invoker = new Invoker(context, monitor, target);
         Message msg = new MessageImpl();
+        msg.setWorkContext(context);
         msg.pushCallbackUri(from);
         msg.setBody("test");
         invoker.invoke(msg);

Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/extension/TargetInvokerExtensionTestCase.java Sat Mar 17 21:48:50 2007
@@ -50,6 +50,7 @@
         EasyMock.replay(target);
         Invoker invoker = new Invoker(context, monitor, target);
         Message msg = new MessageImpl();
+        msg.setWorkContext(context);
         msg.pushCallbackUri(from);
         msg.setBody("test");
         invoker.invoke(msg);

Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractInvocationHandlerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractInvocationHandlerTestCase.java?view=diff&rev=519541&r1=519540&r2=519541
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractInvocationHandlerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/AbstractInvocationHandlerTestCase.java Sat Mar 17 21:48:50 2007
@@ -37,6 +37,9 @@
     protected void setUp() throws Exception {
         super.setUp();
         workContext = EasyMock.createMock(WorkContext.class);
+        EasyMock.expect(workContext.getCorrelationId()).andStubReturn(null);
+        EasyMock.expect(workContext.getCallbackUris()).andStubReturn(null);
+        EasyMock.replay(workContext);
     }
 
     public void testInvocation() throws Throwable {



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