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