camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luca Burgazzoli <lburgazz...@gmail.com>
Subject Re: Java8 DSL (CAMEL-7831)
Date Wed, 07 Sep 2016 09:39:46 GMT
In line comments.

---
Luca Burgazzoli


On Wed, Sep 7, 2016 at 10:34 AM, Claus Ibsen <claus.ibsen@gmail.com> wrote:
> Hi Luca
>
> Good to see some experiments with this.
>
> The OUT functions is not needed as end users would only work with the
> IN message in the routes. We have deprecated OUT stuff in the Java DSL
> in some places.
>

Removed out and reduced to a single function method, this requires to explicit
set the type like:

   function((Message m) -> m.getBody() )
   function((Exchange e) -> e.getIn())

Is that ok ?

> Just a mind that the goal of Camel 2.18 is to be a gentle Java8
> upgrade where the APIs are backwards compatible, so end users can take
> any existing Java 7 based Camel 2.17 or older and compile as Java 8
> and run on Camel 2.18 as-is.
>
> Therefore we have so far only done Java 8 stuff internally in Camel,
> eg inside component implementations and so on.
>
> But your changes seems non invasive and can be a candidate to include.
> But we could consider marking that as "experimental" so we can do API
> changes for the next release, and when we get more hands down on Camel
> 3.0 where the APIs can be more Java 8 aggressive.
>

Is there an annotation or documentation convention for that ?

> Also mind that a goal of the DSL is also to let Java and XML be 1:1 so
> end users can use the same EIPs in either one, and usually an easy
> migration between them, as they are similar. Just be more cautious
> when working on Java DSL that you dont end up in a situation with
> something that is not possible to do in XML.

I think in xml it will be more about bean binding/method reference so it
should work out of the box but I will test it before merging.


> Also we should avoid turning the Java DSL into un-readable and
> cluttered/complex DSL as the Spring Integration Java DSL:
> https://github.com/spring-projects/spring-integration-samples/blob/master/dsl/cafe-dsl/src/main/java/org/springframework/integration/samples/dsl/cafe/lambda/Application.java
>
> But this is a great start, and like that its gentle and only about
> doing lambda style functions as Camel expressions.
>
>
>
>
>
>
>
> On Tue, Sep 6, 2016 at 5:37 PM, Luca Burgazzoli <lburgazzoli@gmail.com> wrote:
>> Hello everyone,
>> I've started working on CAMEL-7831 to create a Java8 example to use
>> Expressions and I've ended up with a simple example - see [1].
>> Of course it is only for demonstrative purpose.
>>
>> Java8 lambda support to Expressions has been added to
>> - ExpressionClause to avoid adding overload method for every method
>> accepting an Expressions definition
>> - ExpressionBuilder so you can use something like transform(function(e -> ...))
>>
>> There are some additional functional interfaces to select the argument
>> of the lambda
>> - ExchangeFunction
>> - MessageFunction
>> - BodyFunction
>>
>>
>> Any feedback would be really appreciated.
>>
>> Regards,
>> Luca
>>
>>
>> [1] https://github.com/lburgazzoli/apache-camel/blob/CAMEL-7831/examples/camel-example-dsl-java8/src/main/java/org/apache/camel/example/dsl/java8/MyRoute.java
>>
>>
>> ---
>> Luca Burgazzoli
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2

Mime
View raw message