SCAClientFactory.getService() may use wrong binding when referencing a promoted 
service
---------------------------------------------------------------------------------------

                 Key: TUSCANY-3904
                 URL: https://issues.apache.org/jira/browse/TUSCANY-3904
             Project: Tuscany
          Issue Type: Bug
    Affects Versions: Java-SCA-2.0
            Reporter: Greg Dritschler
            Priority: Minor


SCAClientFactory.getService() doesn't work correctly when referencing a 
promoted service.

Let's say I have composite A with component C1

    <component name="C1">
        <implementation.composite name="B"/>
        <service name="S1Promoted">
            <binding.sca name="myscabinding"/>
        </service>
    </component>

and composite B with component C2

    <service name="S1Promoted" promote="C2"/>
    <component name="C2">
        <implementation.java class="..."/>
        <service name="S1">
            <binding.ws/>
        </service>
    </component>

When I use SCAClientFactory.getService("C1/S1Promoted/myscabinding") to obtain 
the service, the invocation uses binding.ws, not binding.sca.  This doesn't 
sound correct to me.  It certainly seems wrong to ignore the explicit binding 
name and pick something else.  But even I left out the binding name and just 
asked for "C1/S1Promoted", I would expect binding.sca to be used since that's 
the binding that's defined for that component service.

RuntimeComponentImpl.getServiceReference(Class<B> businessInterface, String 
serviceName) checks for
implementation.composite and then uses the component context of the promoted 
component to create a self-reference.
ComponentContextImpl.getEndpoint(ComponentService service, String bindingName) 
searches for the endpoint in the promoted component's context.  It has a check 
for binding name, but if it can't find a match, logic added by TUSCANY-3543 
just picks the first endpoint.

The logic in getServiceReference() to use the promoted component's context 
doesn't seem to be necessary.  I deleted it and re-tested and got the desired 
results (binding.sca was used).  I am attaching a patch.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to