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