+1 I like it!

On 06/12/2008, Claus Ibsen <[EMAIL PROTECTED]> 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/

Reply via email to