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/19 18:20:26 UTC

svn commit: r497880 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java

Author: jmarino
Date: Fri Jan 19 09:20:18 2007
New Revision: 497880

URL: http://svn.apache.org/viewvc?view=rev&rev=497880
Log:
allow return of non-local binding for references using locateService

Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java?view=diff&rev=497880&r1=497879&r2=497880
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContext.java Fri Jan 19 09:20:18 2007
@@ -96,6 +96,9 @@
             }
         } else if (child instanceof Reference) {
             Reference service = (Reference) child;
+            if (service.getReferenceBindings().isEmpty()) {
+                throw new ServiceRuntimeException("No binding for reference [" + qName + "]");
+            }
             for (ReferenceBinding binding : service.getReferenceBindings()) {
                 if (Wire.LOCAL_BINDING.equals(binding.getInboundWire().getBindingType())) {
                     wire = binding.getInboundWire();
@@ -103,7 +106,8 @@
                 }
             }
             if (wire == null) {
-                throw new ServiceRuntimeException("Local binding for reference not found [" + qName + "]");
+                // pick the first one
+                wire = service.getReferenceBindings().get(0).getInboundWire();
             }
         } else if (child == null) {
             throw new ServiceRuntimeException("Service not found [" + qName + "]");

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java?view=diff&rev=497880&r1=497879&r2=497880
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeContextTestCase.java Fri Jan 19 09:20:18 2007
@@ -1,5 +1,7 @@
 package org.apache.tuscany.core.implementation.composite;
 
+import javax.xml.namespace.QName;
+
 import org.osoa.sca.CompositeContext;
 import org.osoa.sca.RequestContext;
 import org.osoa.sca.ServiceReference;
@@ -40,7 +42,7 @@
         EasyMock.expect(wire.isOptimizable()).andReturn(false);
         EasyMock.replay(wire);
         AtomicComponent child = EasyMock.createMock(AtomicComponent.class);
-        EasyMock.expect(child.getInboundWire(AbstractCompositeContextTestCase.FooService.class.getName()))
+        EasyMock.expect(child.getInboundWire(FooService.class.getName()))
             .andReturn(wire);
         EasyMock.replay(child);
         CompositeComponent composite = EasyMock.createMock(CompositeComponent.class);
@@ -49,8 +51,8 @@
 
         WireService wireService = EasyMock.createMock(WireService.class);
         EasyMock.expect(
-            wireService.createProxy(EasyMock.eq(AbstractCompositeContextTestCase.FooService.class), EasyMock.eq(wire)))
-            .andReturn(new AbstractCompositeContextTestCase.FooService() {
+            wireService.createProxy(EasyMock.eq(FooService.class), EasyMock.eq(wire)))
+            .andReturn(new FooService() {
             });
         EasyMock.replay(wireService);
         CompositeContext context = new TestCompositeContext(composite, wireService);
@@ -65,10 +67,10 @@
      * Verifies the locateService checks for wire optimizations and if possible, avoids proxying the target instance
      */
     public void testOptimizedAtomicLocate() throws Exception {
-        ServiceContract<?> contract = new JavaServiceContract(AbstractCompositeContextTestCase.FooService.class);
+        ServiceContract<?> contract = new JavaServiceContract(FooService.class);
         InboundWire wire = EasyMock.createMock(InboundWire.class);
         EasyMock.expect(wire.isOptimizable()).andReturn(true);
-        EasyMock.expect(wire.getTargetService()).andReturn(new AbstractCompositeContextTestCase.FooService());
+        EasyMock.expect(wire.getTargetService()).andReturn(new FooService());
         EasyMock.expect(wire.getServiceContract()).andReturn(contract).atLeastOnce();
         EasyMock.replay(wire);
         AtomicComponent child = EasyMock.createMock(AtomicComponent.class);
@@ -106,12 +108,12 @@
         WireService service = EasyMock.createMock(WireService.class);
         EasyMock.expect(
             service.createProxy(EasyMock.eq(FooService.class), EasyMock.eq(wire)))
-            .andReturn(new AbstractCompositeContextTestCase.FooService() {
+            .andReturn(new FooService() {
             });
         EasyMock.replay(service);
 
         CompositeContextImpl context = new CompositeContextImpl(composite, service);
-        context.locateService(AbstractCompositeContextTestCase.FooService.class, "Foo");
+        context.locateService(FooService.class, "Foo");
         EasyMock.verify(service);
         EasyMock.verify(composite);
         EasyMock.verify(wire);
@@ -135,7 +137,7 @@
         WireService service = EasyMock.createMock(WireService.class);
         EasyMock.expect(
             service.createProxy(EasyMock.eq(FooService.class), EasyMock.eq(wire)))
-            .andReturn(new AbstractCompositeContextTestCase.FooService() {
+            .andReturn(new FooService() {
             });
         EasyMock.replay(service);
 
@@ -164,19 +166,19 @@
 
         WireService service = EasyMock.createMock(WireService.class);
         EasyMock.expect(
-            service.createProxy(EasyMock.eq(AbstractCompositeContextTestCase.FooService.class), EasyMock.eq(wire)))
-            .andReturn(new AbstractCompositeContextTestCase.FooService() {
+            service.createProxy(EasyMock.eq(FooService.class), EasyMock.eq(wire)))
+            .andReturn(new FooService() {
             });
         EasyMock.replay(service);
         CompositeContextImpl context = new CompositeContextImpl(composite, service);
-        context.locateService(AbstractCompositeContextTestCase.FooService.class, "Foo");
+        context.locateService(FooService.class, "Foo");
         EasyMock.verify(service);
         EasyMock.verify(composite);
         EasyMock.verify(wire);
         EasyMock.verify(binding);
     }
 
-    public void testReferenceLocate() throws Exception {
+    public void testReferenceLocateLocalBinding() throws Exception {
         InboundWire wire = EasyMock.createMock(InboundWire.class);
         EasyMock.expect(wire.isOptimizable()).andReturn(false);
         EasyMock.expect(wire.getBindingType()).andReturn(Wire.LOCAL_BINDING);
@@ -194,11 +196,40 @@
         WireService service = EasyMock.createMock(WireService.class);
         EasyMock.expect(
             service.createProxy(EasyMock.eq(FooService.class), EasyMock.eq(wire)))
-            .andReturn(new AbstractCompositeContextTestCase.FooService() {
+            .andReturn(new FooService() {
+            });
+        EasyMock.replay(service);
+        CompositeContextImpl context = new CompositeContextImpl(composite, service);
+        context.locateService(FooService.class, "Foo");
+        EasyMock.verify(service);
+        EasyMock.verify(composite);
+        EasyMock.verify(wire);
+        EasyMock.verify(binding);
+    }
+
+    public void testReferenceLocateNoLocalBinding() throws Exception {
+        InboundWire wire = EasyMock.createMock(InboundWire.class);
+        EasyMock.expect(wire.isOptimizable()).andReturn(false);
+        EasyMock.expect(wire.getBindingType()).andReturn(new QName("foo/foo"));
+        EasyMock.replay(wire);
+
+        ReferenceBinding binding = EasyMock.createMock(ReferenceBinding.class);
+        EasyMock.expect(binding.getInboundWire()).andReturn(wire).atLeastOnce();
+        binding.setReference(EasyMock.isA(Reference.class));
+        EasyMock.replay(binding);
+        Reference reference = new ReferenceImpl("Foo", null, null);
+        reference.addReferenceBinding(binding);
+        CompositeComponent composite = EasyMock.createMock(CompositeComponent.class);
+        EasyMock.expect(composite.getChild("Foo")).andReturn(reference);
+        EasyMock.replay(composite);
+        WireService service = EasyMock.createMock(WireService.class);
+        EasyMock.expect(
+            service.createProxy(EasyMock.eq(FooService.class), EasyMock.eq(wire)))
+            .andReturn(new FooService() {
             });
         EasyMock.replay(service);
         CompositeContextImpl context = new CompositeContextImpl(composite, service);
-        context.locateService(AbstractCompositeContextTestCase.FooService.class, "Foo");
+        context.locateService(FooService.class, "Foo");
         EasyMock.verify(service);
         EasyMock.verify(composite);
         EasyMock.verify(wire);
@@ -218,12 +249,12 @@
 
         WireService wireService = EasyMock.createMock(WireService.class);
         EasyMock.expect(
-            wireService.createProxy(EasyMock.eq(AbstractCompositeContextTestCase.FooService.class), EasyMock.eq(wire)))
-            .andReturn(new AbstractCompositeContextTestCase.FooService() {
+            wireService.createProxy(EasyMock.eq(FooService.class), EasyMock.eq(wire)))
+            .andReturn(new FooService() {
             });
         EasyMock.replay(wireService);
         CompositeContextImpl context = new CompositeContextImpl(composite, wireService);
-        context.locateService(AbstractCompositeContextTestCase.FooService.class, "Foo/Bar");
+        context.locateService(FooService.class, "Foo/Bar");
         EasyMock.verify(wireService);
         EasyMock.verify(composite);
         EasyMock.verify(wire);
@@ -243,8 +274,8 @@
 
         WireService wireService = EasyMock.createMock(WireService.class);
         EasyMock.expect(
-            wireService.createProxy(EasyMock.eq(AbstractCompositeContextTestCase.FooService.class), EasyMock.eq(wire)))
-            .andReturn(new AbstractCompositeContextTestCase.FooService() {
+            wireService.createProxy(EasyMock.eq(FooService.class), EasyMock.eq(wire)))
+            .andReturn(new FooService() {
             });
         EasyMock.replay(wireService);
         CompositeContextImpl context = new CompositeContextImpl(composite, wireService);



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