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

svn commit: r493434 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/component/ core/src/main/java/org/apache/tuscany/core/implementation/composite/ core/src/main/java/org/apache/tuscany/core/implementation/processor/...

Author: jmarino
Date: Sat Jan  6 00:32:32 2007
New Revision: 493434

URL: http://svn.apache.org/viewvc?view=rev&rev=493434
Log:
CompositeContext and RequestContext work

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContext.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/CompositeContextObjectFactory.java   (contents, props changed)
      - copied, changed from r493121, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/ContextObjectFactory.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/RequestContextObjectFactory.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/WorkContextImplTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContextTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/RequestContextObjectFactoryTestCase.java   (with props)
Removed:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/ContextObjectFactory.java
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/processor/ContextProcessorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/ContextObjectFactoryTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/WorkContext.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java?view=diff&rev=493434&r1=493433&r2=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/WorkContextImpl.java Sat Jan  6 00:32:32 2007
@@ -18,8 +18,10 @@
  */
 package org.apache.tuscany.core.component;
 
+import java.util.ArrayList;
 import java.util.IdentityHashMap;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.tuscany.spi.component.AtomicComponent;
@@ -37,6 +39,7 @@
     private static final Object CORRELATION_ID = new Object();
     private static final Object CALLBACK_ROUTING_CHAIN = new Object();
     private static final Object CURRENT_ATOMIC = new Object();
+    private static final Object CURRENT_SERVICE_NAMES = new Object();
 
     // [rfeng] We cannot use InheritableThreadLocal for message ids here since it's shared by parent and children
     private ThreadLocal<Map<Object, Object>> workContext = new ThreadLocal<Map<Object, Object>>();
@@ -137,6 +140,64 @@
 
     public void clearIdentifiers() {
         inheritableContext.remove();
+    }
+
+    @SuppressWarnings({"unchecked"})
+    public String popServiceName() {
+        Map<Object, Object> map = inheritableContext.get();
+        if (map == null) {
+            return null;
+        }
+        List<String> stack = (List) map.get(CURRENT_SERVICE_NAMES);
+        if (stack == null || stack.size() < 1) {
+            return null;
+        }
+        String name = stack.remove(stack.size() - 1);
+        if (stack.size() == 0) {
+            // cleanup to avoid leaks
+            map.remove(CURRENT_SERVICE_NAMES);
+        }
+        return name;
+    }
+
+    @SuppressWarnings({"unchecked"})
+    public String getCurrentServiceName() {
+        Map<Object, Object> map = inheritableContext.get();
+        if (map == null) {
+            return null;
+        }
+        List<String> stack = (List) map.get(CURRENT_SERVICE_NAMES);
+        if (stack == null || stack.size() < 1) {
+            return null;
+        }
+        return stack.get(stack.size() - 1);
+    }
+
+    @SuppressWarnings({"unchecked"})
+    public void pushServiceName(String name) {
+        Map<Object, Object> map = inheritableContext.get();
+        List<String> names;
+        if (map == null) {
+            map = new IdentityHashMap<Object, Object>();
+            inheritableContext.set(map);
+            names = new ArrayList<String>();
+            map.put(CURRENT_SERVICE_NAMES, names);
+        } else {
+            names = (List<String>) map.get(CURRENT_SERVICE_NAMES);
+            if (names == null) {
+                names = new ArrayList<String>();
+                map.put(CURRENT_SERVICE_NAMES, names);
+            }
+        }
+        names.add(name);
+    }
+
+    public void clearServiceNames() {
+        Map<Object, Object> map = inheritableContext.get();
+        if (map == null) {
+            return;
+        }
+        map.remove(CURRENT_SERVICE_NAMES);
     }
 
     private Map<Object, Object> getWorkContextMap() {

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContext.java?view=auto&rev=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContext.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContext.java Sat Jan  6 00:32:32 2007
@@ -0,0 +1,49 @@
+/*
+ * 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.composite;
+
+import javax.security.auth.Subject;
+
+import org.osoa.sca.RequestContext;
+import org.osoa.sca.ServiceReference;
+
+import org.apache.tuscany.spi.component.WorkContext;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ManagedRequestContext implements RequestContext {
+    private WorkContext workContext;
+
+    public ManagedRequestContext(WorkContext workContext) {
+        this.workContext = workContext;
+    }
+
+    public Subject getSecuritySubject() {
+        throw new UnsupportedOperationException();
+    }
+
+    public String getServiceName() {
+        return workContext.getCurrentServiceName();
+    }
+
+    public ServiceReference getServiceReference() {
+        throw new UnsupportedOperationException();
+    }
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java?view=diff&rev=493434&r1=493433&r2=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/processor/ContextProcessor.java Sat Jan  6 00:32:32 2007
@@ -27,6 +27,7 @@
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.implementation.java.ImplementationProcessorExtension;
 import org.apache.tuscany.spi.implementation.java.JavaMappedProperty;
@@ -37,7 +38,8 @@
 import org.apache.tuscany.spi.implementation.java.Resource;
 import org.apache.tuscany.spi.wire.WireService;
 
-import org.apache.tuscany.core.injection.ContextObjectFactory;
+import org.apache.tuscany.core.injection.CompositeContextObjectFactory;
+import org.apache.tuscany.core.injection.RequestContextObjectFactory;
 import org.apache.tuscany.core.util.JavaIntrospectionHelper;
 
 /**
@@ -48,12 +50,18 @@
  */
 public class ContextProcessor extends ImplementationProcessorExtension {
     private WireService wireService;
+    private WorkContext workContext;
 
     @Autowire
     public void setWireService(WireService wireService) {
         this.wireService = wireService;
     }
 
+    @Autowire
+    public void setWorkContext(WorkContext workContext) {
+        this.workContext = workContext;
+    }
+
     public void visitMethod(CompositeComponent parent,
                             Method method,
                             PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> type,
@@ -74,7 +82,7 @@
             Resource resource = new Resource();
             resource.setName(name);
             resource.setMember(method);
-            resource.setObjectFactory(new ContextObjectFactory(parent, wireService));
+            resource.setObjectFactory(new CompositeContextObjectFactory(parent, wireService));
             type.getResources().put(name, resource);
         } else if (RequestContext.class.equals(paramType)) {
             String name = method.getName();
@@ -84,7 +92,8 @@
             Resource resource = new Resource();
             resource.setName(name);
             resource.setMember(method);
-            throw new UnsupportedOperationException();
+            resource.setObjectFactory(new RequestContextObjectFactory(workContext));
+            type.getResources().put(name, resource);
         } else {
             throw new UnknownContextTypeException(paramType.getName());
         }
@@ -102,7 +111,17 @@
             Resource resource = new Resource();
             resource.setName(name);
             resource.setMember(field);
-            resource.setObjectFactory(new ContextObjectFactory(parent, wireService));
+            resource.setObjectFactory(new CompositeContextObjectFactory(parent, wireService));
+            type.getResources().put(name, resource);
+        } else if (RequestContext.class.equals(paramType)) {
+            String name = field.getName();
+            if (name.startsWith("set")) {
+                name = JavaIntrospectionHelper.toPropertyName(name);
+            }
+            Resource resource = new Resource();
+            resource.setName(name);
+            resource.setMember(field);
+            resource.setObjectFactory(new RequestContextObjectFactory(workContext));
             type.getResources().put(name, resource);
         } else {
             throw new UnknownContextTypeException(paramType.getName());

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/CompositeContextObjectFactory.java (from r493121, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/ContextObjectFactory.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/CompositeContextObjectFactory.java?view=diff&rev=493434&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/ContextObjectFactory.java&r1=493121&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/CompositeContextObjectFactory.java&r2=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/ContextObjectFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/CompositeContextObjectFactory.java Sat Jan  6 00:32:32 2007
@@ -33,11 +33,11 @@
  *
  * @version $Rev$ $Date$
  */
-public class ContextObjectFactory implements ObjectFactory<CompositeContext> {
+public class CompositeContextObjectFactory implements ObjectFactory<CompositeContext> {
     private CompositeComponent composite;
     private WireService wireService;
 
-    public ContextObjectFactory(CompositeComponent composite, WireService wireService) {
+    public CompositeContextObjectFactory(CompositeComponent composite, WireService wireService) {
         assert composite != null;
         assert wireService != null;
         this.composite = composite;

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/RequestContextObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/RequestContextObjectFactory.java?view=auto&rev=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/RequestContextObjectFactory.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/injection/RequestContextObjectFactory.java Sat Jan  6 00:32:32 2007
@@ -0,0 +1,26 @@
+package org.apache.tuscany.core.injection;
+
+import org.apache.tuscany.spi.ObjectCreationException;
+import org.apache.tuscany.spi.ObjectFactory;
+import org.apache.tuscany.spi.component.WorkContext;
+
+import org.apache.tuscany.core.implementation.composite.ManagedRequestContext;
+
+/**
+ * Creates instances of {@link org.apache.tuscany.core.implementation.composite.ManagedRequestContext} for injection on
+ * component implementation instances
+ *
+ * @version $Rev$ $Date$
+ */
+public class RequestContextObjectFactory implements ObjectFactory<ManagedRequestContext> {
+    private WorkContext workContext;
+
+    public RequestContextObjectFactory(WorkContext workContext) {
+        assert workContext != null;
+        this.workContext = workContext;
+    }
+
+    public ManagedRequestContext getInstance() throws ObjectCreationException {
+        return new ManagedRequestContext(workContext);
+    }
+}

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/WorkContextImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/WorkContextImplTestCase.java?view=auto&rev=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/WorkContextImplTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/WorkContextImplTestCase.java Sat Jan  6 00:32:32 2007
@@ -0,0 +1,65 @@
+/*
+ * 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.component;
+
+import org.apache.tuscany.spi.component.WorkContext;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class WorkContextImplTestCase extends TestCase {
+
+    public void testPushPopServiceNames() throws Exception {
+        WorkContext context = new WorkContextImpl();
+        context.pushServiceName("foo");
+        context.pushServiceName("bar");
+        assertEquals("bar", context.getCurrentServiceName());
+        assertEquals("bar", context.popServiceName());
+        assertEquals("foo", context.getCurrentServiceName());
+        assertEquals("foo", context.popServiceName());
+        assertNull(context.getCurrentServiceName());
+    }
+
+    public void testGetCurrentServiceNamesNull() throws Exception {
+        WorkContext context = new WorkContextImpl();
+        assertNull(context.getCurrentServiceName());
+    }
+
+    public void testPopCurrentServiceNamesNull() throws Exception {
+        WorkContext context = new WorkContextImpl();
+        assertNull(context.popServiceName());
+    }
+
+    public void testClearServiceNames() throws Exception {
+        WorkContext context = new WorkContextImpl();
+        context.pushServiceName("foo");
+        context.pushServiceName("bar");
+        context.clearServiceNames();
+        assertNull(context.getCurrentServiceName());
+    }
+
+    public void testClearServiceNamesNull() throws Exception {
+        WorkContext context = new WorkContextImpl();
+        context.clearServiceNames();
+        assertNull(context.getCurrentServiceName());
+    }
+
+}

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContextTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContextTestCase.java?view=auto&rev=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContextTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/ManagedRequestContextTestCase.java Sat Jan  6 00:32:32 2007
@@ -0,0 +1,42 @@
+/*
+ * 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.composite;
+
+import org.osoa.sca.RequestContext;
+
+import org.apache.tuscany.spi.component.WorkContext;
+
+import junit.framework.TestCase;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ManagedRequestContextTestCase extends TestCase {
+
+    public void testGetServiceName() {
+        WorkContext workContext = EasyMock.createMock(WorkContext.class);
+        EasyMock.expect(workContext.getCurrentServiceName()).andReturn("foo");
+        EasyMock.replay(workContext);
+        RequestContext context = new ManagedRequestContext(workContext);
+        assertEquals("foo", context.getServiceName());
+        EasyMock.verify(workContext);
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/processor/ContextProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/processor/ContextProcessorTestCase.java?view=diff&rev=493434&r1=493433&r2=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/processor/ContextProcessorTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/processor/ContextProcessorTestCase.java Sat Jan  6 00:32:32 2007
@@ -22,9 +22,11 @@
 import java.lang.reflect.Method;
 
 import org.osoa.sca.CompositeContext;
+import org.osoa.sca.RequestContext;
 import org.osoa.sca.annotations.Context;
 
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.WorkContext;
 import org.apache.tuscany.spi.implementation.java.JavaMappedProperty;
 import org.apache.tuscany.spi.implementation.java.JavaMappedReference;
 import org.apache.tuscany.spi.implementation.java.JavaMappedService;
@@ -41,7 +43,7 @@
     private ContextProcessor processor;
     private CompositeComponent composite;
 
-    public void testMethod() throws Exception {
+    public void testCompositeContextMethod() throws Exception {
         Method method = Foo.class.getMethod("setContext", CompositeContext.class);
         PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> type =
             new PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>>();
@@ -49,7 +51,7 @@
         assertNotNull(type.getResources().get("context"));
     }
 
-    public void testField() throws Exception {
+    public void testCompositeContextField() throws Exception {
         Field field = Foo.class.getDeclaredField("context");
         PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> type =
             new PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>>();
@@ -57,6 +59,22 @@
         assertNotNull(type.getResources().get("context"));
     }
 
+    public void testRequestContextMethod() throws Exception {
+        Method method = Foo.class.getMethod("setRequestContext", RequestContext.class);
+        PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> type =
+            new PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>>();
+        processor.visitMethod(composite, method, type, null);
+        assertNotNull(type.getResources().get("requestContext"));
+    }
+
+    public void testRequestContextField() throws Exception {
+        Field field = Foo.class.getDeclaredField("requestContext");
+        PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> type =
+            new PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>>();
+        processor.visitField(composite, field, type, null);
+        assertNotNull(type.getResources().get("requestContext"));
+    }
+
     public void testInvalidParamType() throws Exception {
         Method method = Foo.class.getMethod("setContext", String.class);
         PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> type =
@@ -126,6 +144,7 @@
         super.setUp();
         processor = new ContextProcessor();
         processor.setWireService(EasyMock.createNiceMock(WireService.class));
+        processor.setWorkContext(EasyMock.createNiceMock(WorkContext.class));
         composite = EasyMock.createNiceMock(CompositeComponent.class);
     }
 
@@ -139,6 +158,9 @@
         protected CompositeContext noContext;
 
         @Context
+        protected RequestContext requestContext;
+
+        @Context
         public void setContext(CompositeContext context) {
 
         }
@@ -162,5 +184,9 @@
 
         }
 
+        @Context
+        public void setRequestContext(RequestContext requestContext) {
+            this.requestContext = requestContext;
+        }
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/ContextObjectFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/ContextObjectFactoryTestCase.java?view=diff&rev=493434&r1=493433&r2=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/ContextObjectFactoryTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/ContextObjectFactoryTestCase.java Sat Jan  6 00:32:32 2007
@@ -32,7 +32,7 @@
     public void testCreation() throws Exception {
         CompositeComponent composite = EasyMock.createNiceMock(CompositeComponent.class);
         WireService wireService = EasyMock.createNiceMock(WireService.class);
-        ContextObjectFactory factory = new ContextObjectFactory(composite, wireService);
+        CompositeContextObjectFactory factory = new CompositeContextObjectFactory(composite, wireService);
         assertNotNull(factory.getInstance());
     }
 }

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/RequestContextObjectFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/RequestContextObjectFactoryTestCase.java?view=auto&rev=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/RequestContextObjectFactoryTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/injection/RequestContextObjectFactoryTestCase.java Sat Jan  6 00:32:32 2007
@@ -0,0 +1,37 @@
+/*
+ * 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.injection;
+
+import org.apache.tuscany.spi.component.WorkContext;
+
+import junit.framework.TestCase;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class RequestContextObjectFactoryTestCase extends TestCase {
+
+    public void testInstanceCreate() {
+        WorkContext workContext = EasyMock.createNiceMock(WorkContext.class);
+        RequestContextObjectFactory factory = new RequestContextObjectFactory(workContext);
+        assertNotNull(factory.getInstance());
+    }
+
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/WorkContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/WorkContext.java?view=diff&rev=493434&r1=493433&r2=493434
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/WorkContext.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/WorkContext.java Sat Jan  6 00:32:32 2007
@@ -88,4 +88,29 @@
      */
     void clearIdentifiers();
 
+    /**
+     * Removes and returns the name of the last remotable service to handle the current request
+     *
+     * @return the name of the last remotable service to handle the current request or null
+     */
+    String popServiceName();
+
+    /**
+     * Returns the name of the last remotable service to handle the current request
+     *
+     * @return the name of the last remotable service to handle the current request or null
+     */
+    String getCurrentServiceName();
+
+    /**
+     * Adds the name of the last remotable service to handle the current request
+     *
+     * @param name the name of the last remotable service to handle the current request or null
+     */
+    void pushServiceName(String name);
+
+    /**
+     * Clears the stack of current service names
+     */
+    void clearServiceNames();
 }



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