[ https://issues.apache.org/jira/browse/TUSCANY-4027?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Greg Dritschler updated TUSCANY-4027: ------------------------------------- Attachment: TUSCANY-4027.patch > EndpointFinder is ineffective > ----------------------------- > > Key: TUSCANY-4027 > URL: https://issues.apache.org/jira/browse/TUSCANY-4027 > Project: Tuscany > Issue Type: Bug > Affects Versions: Java-SCA-2.0 > Reporter: Greg Dritschler > Priority: Minor > Attachments: TUSCANY-4027.patch > > > SCAClientFactoryImpl calls the EndpointFinder to find a matching endpoint. > If the endpoint returned by EndpointFinder is local to the same JVM, > SCAClientFactoryImpl then calls RuntimeComponentImpl.getServiceReference() > which calls ComponentContextImpl.createSelfReference(). If the client's URI > does not include a binding name, ComponentContextImpl picks the first > binding. This supercedes whatever selection was made by the EndpointFinder. > I am attaching a patch that fixes the issue. It constructs a full URI based > on the selection made by the EndpointFinder and passes that to > RuntimeComponentImpl.getServiceReference(). > This exposed another issue. The scaclient-api itest tests that a > getService() using component name only is rejected with a > ServiceRuntimeException if the target component implements multiple services. > This is because it is ambiguous which service is desired > (SCAClientFactoryImpl does not do interface matching). This was being > enforced in ComponentContextImpl, but with the above fix that isn't possible > since it now gets a fully-specified URI. In order to fix this, I added a > check into DefaultEndpointFinder. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira