diff options
4 files changed, 25 insertions, 20 deletions
diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java index c1eaf98e66..cd8115d201 100644 --- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java +++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java @@ -416,16 +416,24 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder { matchedEndpoint = endpoints.get(0); } } else { - // find the first endpoint that matches this endpoint reference + // find the endpoints that match this endpoint reference + List<Endpoint> matchedEndpoints = new ArrayList<Endpoint>(); + + for (Endpoint endpoint : endpoints){ + if (haveMatchingPolicy(endpointReference, endpoint, matchAudit, builderContext) && + haveMatchingInterfaceContracts(endpointReference, endpoint, matchAudit)){ + matchedEndpoints.add(endpoint); + } + } // TUSCANY-4005 - raise an error if a reference target that only specifies the // component name matches more than one component service if (endpointReference.getTargetEndpoint().getService() == null && endpointReference.getTargetEndpoint().getBinding() == null && - endpoints.size() > 1 ) { + matchedEndpoints.size() > 1 ) { String serviceName = null; - for (Endpoint endpoint : endpoints){ + for (Endpoint endpoint : matchedEndpoints){ // ignore service names called "default" as these indicate dynamic services // created for the likes of implementation.python if (serviceName == null && @@ -458,8 +466,6 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder { } } } - - boolean findTargetSCABinding = false; // TUSCANY-3941 check for the case where the user has provided a // binding.sca at the reference and make sure we pick @@ -467,16 +473,18 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder { // other bindings are provided if (endpointReference.getBinding() != null && endpointReference.getBinding() instanceof SCABinding ){ - findTargetSCABinding = true; - } - - for (Endpoint endpoint : endpoints){ - if (haveMatchingPolicy(endpointReference, endpoint, matchAudit, builderContext) && - haveMatchingInterfaceContracts(endpointReference, endpoint, matchAudit) && - (findTargetSCABinding == false || - (findTargetSCABinding == true && endpoint.getBinding() instanceof SCABinding))){ - matchedEndpoint = endpoint; - break; + for (Endpoint endpoint : matchedEndpoints){ + if (endpoint.getBinding() instanceof SCABinding){ + matchedEndpoint = endpoint; + break; + } + } + } + + if (matchedEndpoint == null) { + // just take the first matched endpoint from the list + if (matchedEndpoints.size() > 0){ + matchedEndpoint = matchedEndpoints.get(0); } } } diff --git a/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/HelloworldServiceAgain.java b/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/HelloworldServiceAgain.java index 614232c01e..e3205559d2 100644 --- a/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/HelloworldServiceAgain.java +++ b/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/HelloworldServiceAgain.java @@ -20,6 +20,6 @@ package itest; public interface HelloworldServiceAgain {
- String sayHelloAgain(String name);
+ String sayHello(String name);
}
diff --git a/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/MultipleServiceClientImpl.java b/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/MultipleServiceClientImpl.java index 9313500e72..f2617d8a7c 100644 --- a/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/MultipleServiceClientImpl.java +++ b/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/MultipleServiceClientImpl.java @@ -32,7 +32,7 @@ public class MultipleServiceClientImpl implements HelloworldService { public HelloworldServiceAgain helloWorld;
public String sayHello(String name) {
- return "Hello " + helloWorld.sayHelloAgain(name);
+ return "Hello " + helloWorld.sayHello(name);
}
}
diff --git a/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/MultipleServiceImpl.java b/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/MultipleServiceImpl.java index a7001c327d..6dab51f527 100644 --- a/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/MultipleServiceImpl.java +++ b/sca-java-2.x/trunk/testing/itest/scaclient-api/src/main/java/itest/MultipleServiceImpl.java @@ -31,7 +31,4 @@ public class MultipleServiceImpl implements HelloworldService, HelloworldService return "Hello " + name;
}
- public String sayHelloAgain(String name) {
- return "Hello again " + name;
- }
}
|