You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2007/05/06 12:41:33 UTC

svn commit: r535595 - in /incubator/tuscany/java/sca/modules: binding-rmi/ binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/ binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/ core-spi/src/main/java/org/apache/tuscany/spi/componen...

Author: antelder
Date: Sun May  6 03:41:31 2007
New Revision: 535595

URL: http://svn.apache.org/viewvc?view=rev&rev=535595
Log:
Move WorkContextImpl to the spi module. This doesn't seem quite right but it seems better than having extensions like axis2, rmi etc having a dependency on the core module like they used to. Also changed the workcontext threadlocal to have an initializer to create a new workcontext which works like the rmi and axis2 binding were doing which isn't the same as the way the runtime is creating one so is probably wrong, but at least the code only needs fixing in one place now

Added:
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextImpl.java
      - copied, changed from r535505, incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextTunnel.java
Removed:
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java
Modified:
    incubator/tuscany/java/sca/modules/binding-rmi/pom.xml
    incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeActivatorImpl.java
    incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/component/scope/WorkContextTestCase.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/implementation/java/integration/AbstractConversationTestCase.java

Modified: incubator/tuscany/java/sca/modules/binding-rmi/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/pom.xml?view=diff&rev=535595&r1=535594&r2=535595
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/pom.xml Sun May  6 03:41:31 2007
@@ -37,7 +37,7 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-core</artifactId>
+            <artifactId>tuscany-core-spi</artifactId>
             <version>1.0-incubating-SNAPSHOT</version>
         </dependency>
 

Modified: incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java?view=diff&rev=535595&r1=535594&r2=535595
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/binding/rmi/RMIBindingProvider.java Sun May  6 03:41:31 2007
@@ -38,7 +38,6 @@
 import org.apache.tuscany.core.RuntimeWire;
 import org.apache.tuscany.core.ServiceBindingActivator;
 import org.apache.tuscany.core.ServiceBindingProvider;
-import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.interfacedef.Interface;
 import org.apache.tuscany.interfacedef.InterfaceContract;
 import org.apache.tuscany.interfacedef.Operation;
@@ -54,6 +53,7 @@
 import org.apache.tuscany.scope.Scope;
 import org.apache.tuscany.spi.bootstrap.ComponentNames;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.WorkContextImpl;
 import org.apache.tuscany.spi.component.WorkContextTunnel;
 
 /**
@@ -213,11 +213,6 @@
         
         Interceptor headInterceptor = chain.getHeadInterceptor();
         WorkContext workContext = WorkContextTunnel.getThreadWorkContext();
-        if (workContext == null) {
-            workContext = new WorkContextImpl();
-            workContext.setIdentifier(Scope.COMPOSITE, ComponentNames.TUSCANY_APPLICATION_ROOT.resolve("default"));
-            WorkContextTunnel.setThreadWorkContext(workContext);
-        }
         
         String oldConversationID = (String) workContext.getIdentifier(Scope.CONVERSATION);
         

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java?view=diff&rev=535595&r1=535594&r2=535595
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java Sun May  6 03:41:31 2007
@@ -42,10 +42,10 @@
 import org.apache.axis2.transport.http.AxisServlet;
 import org.apache.axis2.transport.http.ListingAgent;
 import org.apache.axis2.transport.http.server.HttpUtils;
-import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.scope.Scope;
 import org.apache.tuscany.spi.bootstrap.ComponentNames;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.WorkContextImpl;
 import org.apache.tuscany.spi.component.WorkContextTunnel;
 
 /**
@@ -236,11 +236,6 @@
             }
         }
 
-        // Create a work context TODO: where should this get done?
-        WorkContext workContext = new WorkContextImpl();
-        workContext.setIdentifier(Scope.COMPOSITE, ComponentNames.TUSCANY_APPLICATION_ROOT.resolve("default"));
-        WorkContextTunnel.setThreadWorkContext(workContext);
-        
         super.service(request, response);
     }
 

Copied: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextImpl.java (from r535505, incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextImpl.java?view=diff&rev=535595&p1=incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java&r1=535505&p2=incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextImpl.java&r2=535595
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextImpl.java Sun May  6 03:41:31 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.component;
+package org.apache.tuscany.spi.component;
 
 import java.net.URI;
 import java.util.ArrayList;
@@ -28,7 +28,6 @@
 import org.apache.tuscany.core.RuntimeComponent;
 import org.apache.tuscany.core.RuntimeWire;
 import org.apache.tuscany.scope.ScopeIdentifier;
-import org.apache.tuscany.spi.component.WorkContext;
 
 /**
  * An implementation of an {@link org.apache.tuscany.spi.component.WorkContext}

Added: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextTunnel.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextTunnel.java?view=auto&rev=535595
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextTunnel.java (added)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/spi/component/WorkContextTunnel.java Sun May  6 03:41:31 2007
@@ -0,0 +1,73 @@
+/*
+ * 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.spi.component;
+
+import org.apache.tuscany.scope.Scope;
+import org.apache.tuscany.spi.bootstrap.ComponentNames;
+
+
+/**
+ * Class for tunneling a WorkContext through the invocation of a user class.
+ *
+ * @version $Rev$ $Date$
+ */
+public final class WorkContextTunnel {
+
+    private static final ThreadLocal<WorkContext> CONTEXT = new ThreadLocal<WorkContext>(){
+        protected synchronized WorkContext initialValue() {
+            // TODO: is this the correct way to initialize a new WorkContext?
+            WorkContext workContext = new WorkContextImpl();
+            workContext.setIdentifier(Scope.COMPOSITE, ComponentNames.TUSCANY_APPLICATION_ROOT.resolve("default"));
+            return workContext;
+        }
+    };
+
+    private WorkContextTunnel() {
+    }
+
+    /**
+     * 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();
+    }
+}

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeActivatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeActivatorImpl.java?view=diff&rev=535595&r1=535594&r2=535595
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeActivatorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeActivatorImpl.java Sun May  6 03:41:31 2007
@@ -43,7 +43,6 @@
 import org.apache.tuscany.core.ExtensionPointRegistry;
 import org.apache.tuscany.core.ModuleActivator;
 import org.apache.tuscany.core.WireProcessorExtensionPoint;
-import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.core.invocation.DefaultWireProcessorExtensionPoint;
 import org.apache.tuscany.core.invocation.JDKProxyService;
 import org.apache.tuscany.core.scope.AbstractScopeContainer;
@@ -65,6 +64,7 @@
 import org.apache.tuscany.scope.ScopeRegistry;
 import org.apache.tuscany.spi.component.GroupInitializationException;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.WorkContextImpl;
 import org.apache.tuscany.spi.component.WorkContextTunnel;
 import org.apache.tuscany.spi.services.work.WorkScheduler;
 import org.osoa.sca.ComponentContext;

Modified: incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/component/scope/WorkContextTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/component/scope/WorkContextTestCase.java?view=diff&rev=535595&r1=535594&r2=535595
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/component/scope/WorkContextTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/core/component/scope/WorkContextTestCase.java Sun May  6 03:41:31 2007
@@ -22,8 +22,8 @@
 import junit.framework.TestCase;
 
 import org.apache.tuscany.core.RuntimeComponent;
-import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.WorkContextImpl;
 import org.easymock.EasyMock;
 
 /**

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=535595&r1=535594&r2=535595
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/host/embedded/impl/ReallySmallRuntimeBuilder.java Sun May  6 03:41:31 2007
@@ -57,7 +57,6 @@
 import org.apache.tuscany.contribution.service.impl.PackageTypeDescriberImpl;
 import org.apache.tuscany.core.ExtensionPointRegistry;
 import org.apache.tuscany.core.WireProcessorExtensionPoint;
-import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.core.invocation.DefaultWireProcessorExtensionPoint;
 import org.apache.tuscany.core.invocation.JDKProxyService;
 import org.apache.tuscany.core.runtime.ActivationException;
@@ -75,6 +74,7 @@
 import org.apache.tuscany.policy.PolicyFactory;
 import org.apache.tuscany.scope.ScopeRegistry;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.WorkContextImpl;
 import org.apache.tuscany.spi.component.WorkContextTunnel;
 import org.apache.tuscany.spi.services.work.WorkScheduler;
 

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/implementation/java/integration/AbstractConversationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/implementation/java/integration/AbstractConversationTestCase.java?view=diff&rev=535595&r1=535594&r2=535595
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/implementation/java/integration/AbstractConversationTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/test/java/org/apache/tuscany/implementation/java/integration/AbstractConversationTestCase.java Sun May  6 03:41:31 2007
@@ -20,10 +20,10 @@
 
 import junit.framework.TestCase;
 
-import org.apache.tuscany.core.component.WorkContextImpl;
 import org.apache.tuscany.core.scope.ConversationalScopeContainer;
 import org.apache.tuscany.scope.ScopeContainer;
 import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.WorkContextImpl;
 import org.apache.tuscany.spi.services.store.StoreMonitor;
 import org.easymock.EasyMock;
 



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