On Thu, May 29, 2008 at 2:59 PM, Simon Laws <[EMAIL PROTECTED]>
wrote:
>
>
> On Tue, May 27, 2008 at 4:45 PM, Simon Laws <[EMAIL PROTECTED]>
> wrote:
>
>>
>>
>> On Tue, May 27, 2008 at 2:53 PM, Simon Laws <[EMAIL PROTECTED]>
>> wrote:
>>
>>> Imagine PolicyOuterComposite
>>>
>>>
>>>
>>> >> target="OuterTargetServiceComponent">
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> http://localhost:8085/OuterTargetServiceComponent"/>
>>>
>>>
>>>
>>> And PolicyInnerComposite
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> With our current code this doesn't work. The runtime complains that it
>>> can't match the reference targetService with OuterTargetServiceComponent. I
>>> guess my first question is should this work?
>>>
>>> This happens as there is a specific bit code code in the EndpointBuilder
>>> that does the following.
>>>
>>> // if the target service is a promoted service then find the
>>> // service it promotes
>>> if (endpoint.getTargetComponentService().getService() instanceof
>>> CompositeService) {
>>> CompositeService compositeService = (CompositeService)
>>> endpoint.getTargetComponentService().getService();
>>> // Find the promoted component service
>>> ComponentService promotedComponentService =
>>> ServiceConfigurationUtil.getPromotedComponentService(compositeService);
>>> if (promotedComponentService != null &&
>>> !promotedComponentService.isUnresolved()) {
>>>
>>> endpoint.setTargetComponentService(promotedComponentService);
>>> }
>>> }
>>>
>>> Hence the outer service is replaced with the promoted component service
>>> and the outer service configuration isn't used. In this case the service on
>>> the inner component doesn't have the right bindings on it. Looking at the
>>> logs this code has been there for a long time. Anyone know what the
>>> intention is?
>>>
>>> Simon
>>>
>>
>> I'm making a little bit more progress on this. It seems that, in the case
>> of an automatically generated binding.sca at least, the wires are stored on
>> the target component service. I don't understand why I'm seeing a difference
>> in behaviour with different binding types.
>>
>> Simon
>>
>
> Ok, I looked at this in some detail now and I think we do have a problem
> here.
>
>
>
>
>
> http://localhost:8085/OuterTargetServiceComponent"/>
>
>
>
> And PolicyInnerComposite
>
>
>
>
>
>
>
>
> Doesn't work. Moving the binding down into the inner composite service
> doesn't work but moving the binding down to the inner component service does
> work.
>
> I believe the model is just about correct but this code in the builder that
> is converting the target service into the inner target component service is
> incorrect. Indeed the failing combinations are successful if I comment out
> this code. However without this code tests which use binding.sca in this
> situation fail because binding.sca has an "optimization" where it uses the
> component service to create a target invoker for the outbound wire. There
> doesn't seem to be a wire created for the promoted target service. Needs
> further investigation so I'll raise a JIRA to track it.
>
> Simon
>
Raised as https://issues.apache.org/jira/browse/TUSCANY-2352
Simon