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