Thanks Claus ! Tricky but it works :)
2013/3/6 Claus Ibsen <claus.ib...@gmail.com> > On Wed, Mar 6, 2013 at 1:05 PM, Jean Francois LE BESCONT > <jflebesc...@gmail.com> wrote: > > When we do an enrich, the *resourceUri ( in my example > *.enrich("direct:ds", > > new AggregationStrategyRessource())) is called every time. > > > > When I parse a file, big query with all the datasource while be called > > every, is there a trick to tell the route to execute only one ? I have > > watch camel cache but I have understand that it is used for something > else. > > > > Thanks ! > > > > You can use a filter / content based route and only use the enrich the 1st > time. > When you use the splitter the exchange has a property with the split > index, so the 1st time the index is zero. > > The key for that property is Exchange.SPLIT_INDEX > > > > > > > > > 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> > > > >> Thanks Claus for the link ( have you an HashMap off the FAQ in the head > ? > >> :) > >> > >> Don't forget to add : > >> > >> > >> original.getOut().setHeaders(original.getIn().getHeaders()); > >> > >> > >> When enrich with strategy ! > >> > >> > >> 2013/3/6 Claus Ibsen <claus.ib...@gmail.com> > >> > >>> On Wed, Mar 6, 2013 at 10:26 AM, Jean Francois LE BESCONT > >>> <jflebesc...@gmail.com> wrote: > >>> > My mistake ...I used resource.getOut().getBody(); instead > >>> > od resource.getIn().getBody(); > >>> > > >>> > >>> Yeah see this FAQ > >>> http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html > >>> > >>> > > >>> > public Exchange aggregate(Exchange original, Exchange resource) { > >>> > > >>> > AED originalBody = (AED)original.getIn().getBody(); > >>> > Object resourceResponse = (Object) resource.getIn().getBody(); > >>> > > >>> > LOG.info("originalBody " + originalBody ) ; > >>> > LOG.info("resourceResponse " + resourceResponse ) ; > >>> > // do stuff with > >>> > > >>> > return resource; > >>> > } > >>> > > >>> > Thanks raul for the help ! :) > >>> > > >>> > > >>> > 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> > >>> > > >>> >> Thanks Raul ! > >>> >> > >>> >> I haven't found simple example enrich here ( > >>> >> http://camel.apache.org/content-enricher.html, direct:resource in > >>> never > >>> >> explains ). Perharps that I haven't understand fondamental but it's > a > >>> >> huge framework and learning needs time :) > >>> >> > >>> >> So I have a querie : > >>> >> > >>> >> from("direct:refreshReferentielDynamic") > >>> >> .setBody(constant("SELECT * FROM TEST")) > >>> >> .to("jdbc:dataSource") > >>> >> .to("direct:ds") > >>> >> .end(); > >>> >> > >>> >> Plus : > >>> >> > >>> >> from("direct:ds").to("log:dans.directds").end(); > >>> >> > >>> >> Otherwise it doesn't works. > >>> >> > >>> >> > >>> >> And an " main route " : > >>> >> > >>> >> from("file://....") > >>> >> .split() > >>> >> .tokenize("\n") > >>> >> .enrich("direct:ds", new AggregationStrategyRessource()) > >>> >> > >>> >> With : > >>> >> > >>> >> > >>> >> public class AggregationStrategyRessource implements > >>> AggregationStrategy { > >>> >> > >>> >> > >>> >> public Exchange aggregate(Exchange original, Exchange resource) > { > >>> >> > >>> >> return resource; // for the moment > >>> >> } > >>> >> > >>> >> } > >>> >> > >>> >> But original is always null ... > >>> >> > >>> >> Do you see with ? > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> > >>> >> 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> > >>> >> > >>> >>> Hey ! > >>> >>> > >>> >>> A picture is sometime better than explication :) I try to make a > >>> really > >>> >>> simple test ( equivalent of MAP with lookup in ETL) : > >>> >>> > >>> >>> > >>> >>> ------------------------- > >>> >>> | TABLE TEST | > >>> >>> ------------------------- > >>> >>> | COL1 | COL2 | > >>> >>> | jack | 2 | > >>> >>> | bob | 3 | > >>> >>> ------------------------ > >>> >>> | > >>> >>> | > >>> >>> | > >>> >>> | > >>> >>> | > >>> >>> ---------------- ---------------------- > >>> >>> ------------------------ > >>> >>> | FILE INPUT | | ENRICH ? | > >>> >>> | FILE OUTPUT | > >>> >>> ---------------- ---------------------- > >>> >>> ----------------------- > >>> >>> | jack | cool | >>>>>>>>> | | >>>>>>>>> | > >>> jack > >>> >>> | cool | 2 | > >>> >>> | bob | foo | | | > >>> >>> | bob | foo | 3 | > >>> >>> ---------------- ----------------------- > >>> >>> ------------------------ > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> > >>> >>> 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> > >>> >>> > >>> >>>> If i do: > >>> >>>> public class AggregationStrategyRessource implements > >>> AggregationStrategy > >>> >>>> { > >>> >>>> > >>> >>>> @Override > >>> >>>> public Exchange aggregate(Exchange original, Exchange > resource) { > >>> >>>> int i = 1 / 0; > >>> >>>> return original; > >>> >>>> } > >>> >>>> } > >>> >>>> > >>> >>>> no exception are thows. > >>> >>>> > >>> >>>> > >>> >>>> > >>> >>>> 2013/3/6 Jean Francois LE BESCONT <jflebesc...@gmail.com> > >>> >>>> > >>> >>>>> thks Raul > >>> >>>>> > >>> >>>>> For the moment it's a simple : > >>> >>>>> > >>> >>>>> public class AggregationStrategyRessource implements > >>> >>>>> AggregationStrategy { > >>> >>>>> > >>> >>>>> @Override > >>> >>>>> public Exchange aggregate(Exchange original, Exchange > resource) > >>> { > >>> >>>>> return original; > >>> >>>>> } > >>> >>>>> > >>> >>>>> } > >>> >>>>> > >>> >>>>> If I put a debug point on it, it is never fired .... > >>> >>>>> > >>> >>>>> > >>> >>>>> > >>> >>>>> > >>> >>>>> > >>> >>>>> 2013/3/6 Raúl Kripalani <r...@evosent.com> > >>> >>>>> > >>> >>>>>> Can we see the code of AggregationStrategyRessource? > >>> >>>>>> > >>> >>>>>> Regards, > >>> >>>>>> Raúl. > >>> >>>>>> > >>> >>>>>> On Mar 5, 2013, at 23:30, Jean Francois LE BESCONT wrote: > >>> >>>>>> > >>> >>>>>> > Hey, > >>> >>>>>> > > >>> >>>>>> > I have this > > >>> >>>>>> > > >>> >>>>>> > >>> > http://camel.465427.n5.nabble.com/Enrich-message-with-data-from-dynamic-sql-query-td5329427.html > >>> >>>>>> > > >>> >>>>>> > But I haven't found a solution to my question. > >>> >>>>>> > > >>> >>>>>> > How can enrich my stream with data from a queries ? > >>> >>>>>> > > >>> >>>>>> > I have a a route called from the start : > >>> >>>>>> > > >>> >>>>>> > from("direct:refreshReferentielDynamic") > >>> >>>>>> > // > >>> >>>>>> > .setBody(constant("SELECT * FROM TEST")) > >>> >>>>>> > // > >>> >>>>>> > .to("jdbc:dataSource") > >>> >>>>>> > // > >>> >>>>>> > .to("direct:ds") > >>> >>>>>> > // > >>> >>>>>> > .end(); > >>> >>>>>> > > >>> >>>>>> > > >>> >>>>>> > End I would like to acces data in memory in direct:ds from an > >>> other > >>> >>>>>> route. > >>> >>>>>> > I have try this : > >>> >>>>>> > > >>> >>>>>> > from("foo"). > >>> >>>>>> > [...] > >>> >>>>>> > .enrich("direct:ds", new AggregationStrategyRessource()) > >>> >>>>>> > > >>> >>>>>> > But code in AggregationStrategyRessource is not called ... and > >>> body > >>> >>>>>> is > >>> >>>>>> > replace by the content of the query. > >>> >>>>>> > > >>> >>>>>> > Thks ! > >>> >>>>>> > > >>> >>>>>> > Thks ! > >>> >>>>>> > >>> >>>>>> > >>> >>>>> > >>> >>>> > >>> >>> > >>> >> > >>> > >>> > >>> > >>> -- > >>> Claus Ibsen > >>> ----------------- > >>> Red Hat, Inc. > >>> FuseSource is now part of Red Hat > >>> Email: cib...@redhat.com > >>> Web: http://fusesource.com > >>> Twitter: davsclaus > >>> Blog: http://davsclaus.com > >>> Author of Camel in Action: http://www.manning.com/ibsen > >>> > >> > >> > > > > -- > Claus Ibsen > ----------------- > Red Hat, Inc. > FuseSource is now part of Red Hat > Email: cib...@redhat.com > Web: http://fusesource.com > Twitter: davsclaus > Blog: http://davsclaus.com > Author of Camel in Action: http://www.manning.com/ibsen >