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 2006/05/23 22:08:20 UTC
svn commit: r408997 - in /incubator/tuscany/sandbox/jboynes/sca:
containers/container.java/
containers/container.java/src/main/java/org/apache/tuscany/container/java/context/
containers/container.java/src/test/java/org/apache/tuscany/container/java/con...
Author: jmarino
Date: Tue May 23 13:08:18 2006
New Revision: 408997
URL: http://svn.apache.org/viewvc?rev=408997&view=rev
Log:
add support for target-side proxying on Java components, e.g. through locateService
Added:
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/GetServiceByNameTestCase.java
Modified:
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/ReferenceInjectionTestCase.java
incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/ScopeReferenceTestCase.java
incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml?rev=408997&r1=408996&r2=408997&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/pom.xml Tue May 23 13:08:18 2006
@@ -42,5 +42,12 @@
<version>3.8.1</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>jmock</groupId>
+ <artifactId>jmock</artifactId>
+ <version>1.0.1</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
</project>
Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java?rev=408997&r1=408996&r2=408997&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/context/JavaAtomicContext.java Tue May 23 13:08:18 2006
@@ -29,7 +29,9 @@
import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.context.TargetException;
import org.apache.tuscany.spi.context.CompositeContext;
+import org.apache.tuscany.spi.context.TargetNotFoundException;
import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.TargetWire;
/**
* Provides a runtime context for Java component implementations
@@ -52,12 +54,19 @@
}
public Object getService(String name) throws TargetException {
- // FIXME implement
- return getTargetInstance();
+ TargetWire<?> wire = targetWires.get(name);
+ if (wire == null){
+ TargetNotFoundException e = new TargetNotFoundException(name);
+ e.addContextName(getName());
+ throw e;
+ }
+ return wire.getTargetService();
}
public T getService() throws TargetException {
- if (serviceInterfaces.size() == 1) {
+ if (serviceInterfaces.size() == 0) {
+ return getTargetInstance();
+ }else if (serviceInterfaces.size() == 1) {
return getTargetInstance();
} else {
throw new TargetException("Context must contain exactly one service");
Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java?rev=408997&r1=408996&r2=408997&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/DifferentInterfaceWireTestCase.java Tue May 23 13:08:18 2006
@@ -48,7 +48,7 @@
Map<String, AtomicContext> contexts = MockContextFactory.createWiredContexts("source", SourceImpl.class, Target.class, scope,
members, "target", OtherTarget.class, OtherTargetImpl.class, scope);
AtomicContext sourceContext = contexts.get("source");
- Source source = (Source) sourceContext.getService(null);
+ Source source = (Source) sourceContext.getService();
Target target = source.getTarget();
assertTrue(Proxy.isProxyClass(target.getClass()));
assertNotNull(target);
@@ -64,7 +64,7 @@
Map<String, AtomicContext> contexts = MockContextFactory.createWiredMultiplicity("source", SourceImpl.class, Target.class, scope,
"target", OtherTarget.class, OtherTargetImpl.class, members, scope);
AtomicContext sourceContext = contexts.get("source");
- Source source = (Source) sourceContext.getService(null);
+ Source source = (Source) sourceContext.getService();
List<Target> targets = source.getTargets();
assertEquals(1, targets.size());
Target target = targets.get(0);
Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/GetServiceByNameTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/GetServiceByNameTestCase.java?rev=408997&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/GetServiceByNameTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/GetServiceByNameTestCase.java Tue May 23 13:08:18 2006
@@ -0,0 +1,39 @@
+package org.apache.tuscany.container.java.context;
+
+import java.util.Collections;
+
+import org.apache.tuscany.container.java.mock.MockContextFactory;
+import org.apache.tuscany.container.java.mock.components.Target;
+import org.apache.tuscany.container.java.mock.components.TargetImpl;
+import org.apache.tuscany.core.context.scope.ModuleScopeContext;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.wire.TargetWire;
+import org.jmock.Mock;
+import org.jmock.MockObjectTestCase;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class GetServiceByNameTestCase extends MockObjectTestCase {
+
+ public void testServiceLocate() throws Exception {
+ ModuleScopeContext scope = new ModuleScopeContext(null);
+ scope.start();
+ final JavaAtomicContext<?> context = MockContextFactory.createJavaAtomicContext("target",
+ TargetImpl.class, Target.class, Scope.MODULE);
+ context.setScopeContext(scope);
+ Mock mock = mock(TargetWire.class);
+ mock.stubs().method("getServiceName").will(returnValue("Target"));
+ mock.expects(once()).method("getTargetService").will(returnValue(context.getTargetInstance()));
+ mock.stubs().method("getInvocationChains").will(returnValue(Collections.emptyMap()));
+ TargetWire<Target> wire = (TargetWire<Target>) mock.proxy();
+ context.addTargetWire(wire);
+ context.prepare();
+ Target target = (Target) context.getService("Target");
+ target.setString("foo");
+ assertEquals("foo",target.getString());
+ }
+
+
+
+}
Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/ReferenceInjectionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/ReferenceInjectionTestCase.java?rev=408997&r1=408996&r2=408997&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/ReferenceInjectionTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/context/ReferenceInjectionTestCase.java Tue May 23 13:08:18 2006
@@ -29,7 +29,7 @@
Map<String, AtomicContext> contexts = MockContextFactory.createWiredContexts("source", SourceImpl.class, scope,
members, "target", Target.class, TargetImpl.class, scope);
AtomicContext sourceContext = contexts.get("source");
- Source source = (Source) sourceContext.getService(null);
+ Source source = (Source) sourceContext.getService();
Target target = source.getTarget();
assertTrue(Proxy.isProxyClass(target.getClass()));
Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/ScopeReferenceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/ScopeReferenceTestCase.java?rev=408997&r1=408996&r2=408997&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/ScopeReferenceTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/test/java/org/apache/tuscany/container/java/integration/context/ScopeReferenceTestCase.java Tue May 23 13:08:18 2006
@@ -58,8 +58,7 @@
*/
@SuppressWarnings("unchecked")
public void testModuleToModule() throws Exception {
- WorkContext ctx = new WorkContextImpl();
- ScopeContext scope = new ModuleScopeContext(ctx);
+ ScopeContext scope = new ModuleScopeContext(null);
scope.start();
Map<String, AtomicContext> contexts = MockContextFactory.createWiredContexts("source", SourceImpl.class, scope, members, "target", Target.class, TargetImpl.class, scope);
Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java?rev=408997&r1=408996&r2=408997&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/context/PojoAtomicContext.java Tue May 23 13:08:18 2006
@@ -136,7 +136,7 @@
}
public void onSourceWires(Class<?> multiplicityClass, List<SourceWire> wires) {
- assert(wires.size() > 0): "Wire wires was empty";
+ assert(wires.size() > 0): "Wires were empty";
String referenceName = wires.get(0).getReferenceName();
Member member = members.get(referenceName);
if (member == null) {
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org