Great, I shall give that a try.

   ...ant

On Thu, Mar 11, 2010 at 5:38 PM, Raymond Feng <[email protected]> wrote:
> It's already possible to configure it through the NodeFactory either through
> the newInstance() or configure(). We can pass in a Map<String, Map<String,
> String>>, the first level key is
> "org.apache.tuscany.sca.binding.sca.provider.SCABindingMapper" and the
> second level key is "mappedBinding".
>
> Thanks,
> Raymond
> --------------------------------------------------
> From: "ant elder" <[email protected]>
> Sent: Wednesday, March 10, 2010 7:05 PM
> To: <[email protected]>
> Subject: Re: Mapping binding.sca to any bindings by configuration
>
>> On Wed, Mar 3, 2010 at 4:18 PM, ant elder <[email protected]> wrote:
>>>
>>> On Wed, Mar 3, 2010 at 12:35 PM, Raymond Feng <[email protected]>
>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I have checked in the changes to allow us to map binding.sca to any of
>>>> the
>>>> bindings by configuration.
>>>>
>>>> It turned out that the trick is as simple as follows:
>>>>
>>>> * Add a new utility SPI
>>>> org.apache.tuscany.sca.binding.sca.provider.SCABindingMapper which
>>>> contains
>>>> the following methods to map Endpoint or EndpointReference with
>>>> binding.sca
>>>> to other bindings:
>>>>
>>>>  public RuntimeEndpoint map(RuntimeEndpoint endpoint);
>>>>  public RuntimeEndpointReference map(RuntimeEndpointReference
>>>> endpointReference);
>>>>  boolean isRemotable(); // Control if an binding.sca endpoint with
>>>> remotable interface should be published to the remote protocol
>>>>
>>>> * Provide a default implementation
>>>> org.apache.tuscany.sca.binding.sca.provider.DefaultSCABindingMapper
>>>>  * Receive the mapped binding QName via the
>>>>
>>>> org.apache.tuscany.sca.binding.sca.provider.SCABindingMapper.mappedBinding
>>>> attribute or system property. By default, it's mapped to sca:binding.ws.
>>>>  * Create an instance of binding and copy all attributes from
>>>> binding.sca
>>>> into the mapped binding (Simply speaking, <binding.sca/> is pretty much
>>>> like
>>>> <binding.xyz/>)
>>>>  * Map endpoint and endpoint reference by replacing the SCABinding with
>>>> the
>>>> mapped binding instance
>>>>  * Invoke the binding builder to build the mapped binding
>>>>  * Create delegating SCA reference/service provider that delegates the
>>>> calls
>>>> to the mapped binding provider
>>>>
>>>> Now you can plug in binding.sca using one of the following ways:
>>>> * Set the binding type via
>>>>
>>>> org.apache.tuscany.sca.binding.sca.provider.SCABindingMapper.mappedBinding
>>>> system property
>>>> * Set the binding type via
>>>>
>>>> org.apache.tuscany.sca.binding.sca.provider.SCABindingMapper.mappedBinding
>>>> attribute from the NodeFactory
>>>> * Add a new
>>>> META-INF/org.apache.tuscany.sca.binding.sca.provider.SCABindingMapper
>>>> with
>>>> the mappedBinding attribute and higher ranking (this also allows a
>>>> customized SCABindingMapper to replace the default one from Tuscany).
>>>>
>>>> With this improvement, we can now remove the following modules (merging
>>>> the
>>>> tests into itest) as well as DistributedSCABinding model.
>>>>
>>>> tuscany-binding-sca-axis2-runtime
>>>> tuscany-binding-sca-runtime-rmi
>>>> tuscany-sca-client-rmi
>>>>
>>>> If there is no objection, I'll clean them up as the next step.
>>>>
>>>> [1] http://svn.apache.org/viewvc?rev=918261&view=rev
>>>>
>>>
>>> Without having looked in detail that all sounds good to me. One thing
>>> that would be nice would be instead of having only the WS binding be
>>> the default would be to check that is available first and if not try
>>> something else like the RMI binding, so then it would still work
>>> automatically with no extra config needed even if the WS binding isn't
>>> available on the classpath but the RMI binding is (which makes simple
>>> demos easier as RMI has far fewer dependencies).
>>>
>>>  ...ant
>>>
>>
>> I've updated this to automatically try using binding.rmi if binding.ws
>> isn't available.
>>
>> It would also be nice to be able to set the default binding from a
>> NodeFactory config property instead of a System property so I'll look
>> at doing that too.
>>
>>  ...ant
>
>

Reply via email to