camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen" <claus.ib...@gmail.com>
Subject Re: [PROPOSAL] - Camel 2.0 - support # syntax in URI options
Date Mon, 08 Dec 2008 12:07:26 GMT
I have committed it now.
It's the # notation that we can do in Camel 2.0. There might be a few
components that have special options to Ref a bean we can remove and
use the # syntax instead.

Updated wiki at: how do I configure endpoints. Are the other relevant
pages at wiki to add this?


/Claus Ibsen
Apache Camel Committer
Blog: http://davsclaus.blogspot.com/



On Mon, Dec 8, 2008 at 11:56 AM,  <james.strachan@gmail.com> wrote:
> +1 I like it!
>
>
> On 06/12/2008, Claus Ibsen <claus.ibsen@gmail.com> wrote:
>> Hi
>>
>> For background see CAMEL-895 and this thread by James
>> http://www.nabble.com/-2.0--simplifying-annotations%2C-DSL-and-XML-to-remove-uri-%2B-ref--tp20775864s22882p20775864.html
>>
>> Motivation
>> =======
>> Currently the URI configuration of camel endpoints is used a lot. It's
>> fast, precise and intuitive for end-users. And it supports most of
>> their use-cases.
>> The URI options is given as string parameters just like http. Camel
>> will then parse this and type convert and call the correct setter on
>> the concrete xxxEndpoint object.
>> Camel can do the traditional type converts for numeric, boolean,
>> string, enum and what not. However the problem is...
>>
>> The problem
>> =========
>> That we can not set complex objects on endpoint using URI options.
>> Each individual component need to add special code to support this and
>> it's irritating me. Why can't we do it smarter.
>> And if we do it smarter then we get this out-of-the-box so suddenly
>> *all* components support this.
>>
>> The idea
>> ======
>> The idea is to support the # syntax for URI options (I think Apache
>> CXF has this as well).
>>
>> So if you want to set a complex object type on a given endpoint you
>> can refer to a bean in the registry using the # notation. An example:
>>      file://inbox/?idempotent=true&idempotentRepository=#myJpaRepo
>>
>> Then end users can configure the myJapRepo in the Spring XML using
>> standard spring bean ids.
>>
>> Benefits
>> ======
>> - It's easy for end users as they can look at the xxEndpoint and see
>> which properties it has (setters). And they can use the # notation to
>> set it for complex objects as well.
>> - When you add options to an endpoint you get this notation for free,
>> no need to add special code to the xxxComponent to do the lookup
>> yourself
>> - Even some options on default endpoints is now exposed and
>> configurable, such as the executorService
>> - We can reduce existing code
>> - Easier for end users to understand that # is for regestry lookup
>> instead of inventing our own custom names such as:
>> idempotentRepositoryRef
>> - And as a real bonus we don't have to wiki document the special
>> options idempotentRepositoryRef. We get all this for free with # so we
>> can just document the idempotentRepository option
>>
>> Any thoughts?
>>
>>
>> /Claus Ibsen
>> Apache Camel Committer
>> Blog: http://davsclaus.blogspot.com/
>>
>
>
> --
> James
> -------
> http://macstrac.blogspot.com/
>
> Open Source Integration
> http://fusesource.com/
>

Mime
View raw message