--- Luca Burgazzoli
On Wed, Sep 7, 2016 at 12:00 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: > On Wed, Sep 7, 2016 at 11:39 AM, Luca Burgazzoli <lburgazz...@gmail.com> > wrote: >> In line comments. >> >> --- >> Luca Burgazzoli >> >> >> On Wed, Sep 7, 2016 at 10:34 AM, Claus Ibsen <claus.ib...@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 ? >> > > I think we need to tweak this a bit to find the right balance. Would > like if we could omit the type for normal use-cases. Working on > Message is a bit shorter than Exchange as you can call getBody / > getHeader asap. And if you need Exchange there is a getExchange > method. > Agree, so we could complete remove the Exchange variant, an additional option would be - but I'm thinking aloud here - to override calls such - body() - exchange() - inMessage() So we then may have something like: transform() .inMessage(m -> ...) transform() .body(b -> ...) transform() .body(Bean.class, b -> ...) transform() .body(Bean.class, (b, h) -> ...) > > > >>> 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 ? >> > > No we dont have that, but we can add to javadoc that its "work in > progress" or "subject for change" or something. Just so we have > freedom to change it in the following release(s). > > > >>> 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 <lburgazz...@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 > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2