Re: wiring to components implemented by a composite

2008-06-02 Thread Simon Laws
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


Re: wiring to components implemented by a composite

2008-05-29 Thread Simon Laws
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