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