Nice. We've just moved to 2.16 earlier this year!

Ср, 7 вер. 2016 15:05 користувач Claus Ibsen <claus.ib...@gmail.com> пише:

> Use the script EIP for that
> http://camel.apache.org/script
>
> On Wed, Sep 7, 2016 at 8:06 PM, Vitalii Tymchyshyn <v...@tym.im> wrote:
> > Btw process with an expression would be a great feature even in xml.
> > Now we have to use the next
> > <transform><groovy>doSomething();request.body</groovy></transform>
> > to ensure body left intact.
> >
> > Best regards, Vitalii Tymchyshyn
> >
> > Ср, 7 вер. 2016 14:01 користувач Claus Ibsen <claus.ib...@gmail.com>
> пише:
> >
> >> On Wed, Sep 7, 2016 at 4:44 PM, Luca Burgazzoli <lburgazz...@gmail.com>
> >> wrote:
> >> > Would it make sense to add also a ProcessClause (later on) to have
> >> > something similar for process ?
> >> >
> >> >   process()
> >> >       .exchange(e -> ...) // not needed but for consistency
> >> >   process()
> >> >       .message(m -> ...)
> >> >   process()
> >> >       .body(b -> ... ) // should return the body
> >> >
> >>
> >> Yeah this allows to do inlined processors quickly. And sometimes you
> >> just want to do a bit of code at that spot in the route.
> >>
> >> And even to do a system out println, and can't you do something like
> this
> >> now?
> >>
> >> .body(System.out::println)
> >>
> >>
> >>
> >>
> >> >
> >> > ---
> >> > Luca Burgazzoli
> >> >
> >> >
> >> > On Wed, Sep 7, 2016 at 4:02 PM, Claus Ibsen <claus.ib...@gmail.com>
> >> wrote:
> >> >> On Wed, Sep 7, 2016 at 3:47 PM, Luca Burgazzoli <
> lburgazz...@gmail.com>
> >> wrote:
> >> >>> @Clauss
> >> >>>
> >> >>> - I've removed intermediate funtional interfaces like
> ExchangeFunction
> >> >>> - added simple message(...)
> >> >>>
> >> >>> Result here:
> >> >>>
> >>
> 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
> >> >>>
> >> >>
> >> >> Yay looks much nicer and simpler.
> >> >>
> >> >>> @Vitalii
> >> >>> It may be nice to support existing expressions, like:
> >> >>>
> >> >>>   transform().body(
> >> >>>       String.class,
> >> >>>       String::indexOf,
> >> >>>       header("toFindHeader", String.class)
> >> >>>   )
> >> >>>
> >> >>> Maybe this deserve an additional JIRA
> >> >>>
> >> >>
> >> >> Yeah lets avoid making the first version too complex and to many
> bells
> >> >> and whistles.
> >> >> It just becomes too confusing with functional lambdas extreme here,
> >> >> and then regular DSL with EIPs not as functional.
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>>
> >> >>> ---
> >> >>> Luca Burgazzoli
> >> >>>
> >> >>>
> >> >>> On Wed, Sep 7, 2016 at 2:45 PM, Vitalii Tymchyshyn <v...@tym.im>
> wrote:
> >> >>>> Sure, I really appreciate the effort, especially since I am now
> also
> >> >>>> working on making Camel more J8-friendly (in the reactive
> programming
> >> part).
> >> >>>> Please don't forget ".mandatoryBody", it's extremely useful. It
> >> produces
> >> >>>> much nicer exception instead of just NPE if your body is of wrong
> >> type or
> >> >>>> null. I'd even vote for making .body(Class, Function) calling
> >> mandatoryBody
> >> >>>> on exchange, since .getBody(class) gives much confusion in error
> >> cases when
> >> >>>> body of a wrong  type, but I am not  sure if it would be consistent
> >> with
> >> >>>> existing code.
> >> >>>> Also talking about BiFunctions, consider passing not only map, but
> >> also
> >> >>>> exact header or property as again it makes it very easy to use
> tons of
> >> >>>> 2-parameter preexisting methods, may be even something like this
> can
> >> be
> >> >>>> done:
> >> >>>> transform().body(BiFunction).withHeader("headerName")
> >> >>>> transform().body(BiFunction).withProperty("propertyName")
> >> >>>>
> >> >>>> that would make something like the next possible:
> >> >>>> transform().body(String::indexOf).withHeader("toFindHeader")
> >> >>>>
> >> >>>> BTW: It would be great to have async versions, like
> .asyncBody(Class,
> >> >>>> Function<Object, CompletableStage>)
> >> >>>>
> >> >>>> Best regards, Vitalii Tymchyshyn
> >> >>>>
> >> >>>> Ср, 7 вер. 2016 о 08:22 Luca Burgazzoli <lburgazz...@gmail.com>
> пише:
> >> >>>>
> >> >>>>> Vitalii, it was the first iteration just to have some feedbacks ;)
> >> >>>>>
> >> >>>>> I've added something more now as experiment so your suggestions
> >> should
> >> >>>>> have been covered now.
> >> >>>>> By extending ExpressionClause built-in body/inMessage/etc, we
> could
> >> >>>>> have something like:
> >> >>>>>
> >> >>>>> from("timer:simple?period=503")
> >> >>>>>     .id("simple-route")
> >> >>>>>     .transform()
> >> >>>>>         .exchange(this::dateToTime)
> >> >>>>>     .choice()
> >> >>>>>         .when()
> >> >>>>>             .body(Integer.class, b ->  (b & 1) == 0)
> >> >>>>>             .log("Received even number")
> >> >>>>>         .when()
> >> >>>>>             .body(Integer.class, (b, h) -> h.containsKey("skip") ?
> >> >>>>> false : (b & 1) == 0)
> >> >>>>>             .log("Received odd number")
> >> >>>>>         .when()
> >> >>>>>             .body(b -> b instanceof Number)
> >> >>>>>             .log("Received a number number")
> >> >>>>>         .when()
> >> >>>>>             .inMessage(m -> m.getBody() == null)
> >> >>>>>             .log("Received null body")
> >> >>>>>         .when()
> >> >>>>>             .body(Integer.class, b ->  (b & 1) == 0)
> >> >>>>>             .log("Received odd number")
> >> >>>>>         .endChoice();
> >> >>>>>
> >> >>>>>
> >> >>>>>
> >> >>>>> ---
> >> >>>>> Luca Burgazzoli
> >> >>>>>
> >> >>>>>
> >> >>>>> On Wed, Sep 7, 2016 at 2:16 PM, Vitalii Tymchyshyn <v...@tym.im>
> >> wrote:
> >> >>>>> > Hi.
> >> >>>>> >
> >> >>>>> > Why BodyFunction is a BiFunction? It would be great to have some
> >> method
> >> >>>>> to
> >> >>>>> > pass any Functional interface (any function) that would receive
> >> body as
> >> >>>>> > parameter and result would be stored as an answer. This would
> >> allow to
> >> >>>>> use
> >> >>>>> > tons of existing functional method.
> >> >>>>> > E.g. something like this would be possible:
> >> >>>>> > .transform(function(String.class, String::toUpperCase))
> >> >>>>> > Another thing is that often body type is not needed, e.g.
> >> >>>>> > .transform(onBody(String::toUpperCase)) looks more readable.
> >> >>>>> > i'd also rename other "function" calls with something that gives
> >> more
> >> >>>>> > information like "onExchange", "onMessage" (or even simply
> body(),
> >> >>>>> > exchange(), message()). This would also make casting
> unnesessary.
> >> >>>>> >
> >> >>>>> > Best regards, Vitalii Tymchyshyn
> >> >>>>> >
> >> >>>>> > Вт, 6 вер. 2016 о 11:38 Luca Burgazzoli <lburgazz...@gmail.com>
> >> пише:
> >> >>>>> >
> >> >>>>> >> 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
> >>
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>

Reply via email to