Hey guys, Thanks a lot for this quick implmentation... I was working to make my own splitter, but I don't think that is required any more :D
Would like to know, any idea on when will 1.6.1/2.0 release??? Currently I am checking out the new splitter file, renaming it and adding it to my code base. Because since this is going to be in production, the QA won't allow nightly builds/releases that are not final/production. Later when we upgrade to the latest release I'll drop the custom splitter and replace it with the standard one. Thanks and Regards, Claus Ibsen-2 wrote: > > On Mon, May 11, 2009 at 8:58 AM, Willem Jiang <willem.ji...@gmail.com> > wrote: >> Yeah, I added a new POJO method splitMessage() to return a List of >> Message, and the original "split" method is renamed to be "splitBody" >> method. >> >> You can find the change here[1]. >> [1] >> http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterPojoTest.java?rev=773446&r1=773445&r2=773446&view=diff >> >> Willem > Ah looks fine as both methods is in the SNIPPET tag. +1 > > >> >> >> Claus Ibsen wrote: >>> On Mon, May 11, 2009 at 8:27 AM, Willem Jiang <willem.ji...@gmail.com> >>> wrote: >>>> Hi Claus >>>> >>>> I updated the unit tests of SplitterPOJOTest and added some comments >>>> for >>>> this feature, I think the wiki will be updated when the confluence >>>> exports the static page. >>> Willem we need 2 samples for POJO >>> >>> One for a regular POJO that has 100% no dependencies on Camel API at >>> all. Just like the one we had before. >>> Just returning a List of String >>> >>> And a new one for returning a List of org.apache.camel.Message objects >>> so you can provide your own headers per. message. >>> And we must remember to write that this requires Camel 1.6.1/2.0. >>> >>> >>> >>>> Willem >>>> >>>> Claus Ibsen wrote: >>>>> On Mon, May 11, 2009 at 2:34 AM, Willem Jiang <willem.ji...@gmail.com> >>>>> wrote: >>>>>> How about return a List<Message> from the POJO bean method? >>>>>> Then we can check the List Object in the Splitter's >>>>>> createProcessorExchangePairsList() and >>>>>> createProcessorExchangePairsIterable(), if the object in the list is >>>>>> Message, we can set the Exchange's InMessage >>>>>> with the Message object that we get from the list. >>>>> Willem >>>>> >>>>> A very good idea. Glad you thought of this solution. Very concise and >>>>> clean. >>>>> And leveraging the existing Camel API. >>>>> >>>>> Do you mind updating the Splitter EIP wiki page with this new feature? >>>>> >>>>> >>>>>> Willem >>>>>> >>>>>> Claus Ibsen wrote: >>>>>>> On Fri, May 8, 2009 at 3:28 PM, rohitbrai <rohitb...@gmail.com> >>>>>>> wrote: >>>>>>>> Can't I achieve something similar using bean in the splitter as >>>>>>>> explained in >>>>>>>> Using a "Pojo to do the splitting" on >>>>>>>> http://camel.apache.org/splitter.html >>>>>>> Yeah I have thought of that one too, but I cannot see how you should >>>>>>> be able to alter the message for each of the individual splitted new >>>>>>> message. >>>>>>> As we only return the body as result. >>>>>>> >>>>>>> And in java we cannot return 2 types, 1 for the body, 1 for the >>>>>>> headers >>>>>>> >>>>>>> We might be able to introduce some convention and let you return >>>>>>> some >>>>>>> object holder the body and the header. >>>>>>> List<BodyAndHeaderHolder> >>>>>>> >>>>>>> But then I might get a bit ugly? >>>>>>> >>>>>>> Any thoughts? >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>> I was trying to understand the code, but am wondering how will I >>>>>>>> get back >>>>>>>> the whole message. The example there sends a arraylist of string, >>>>>>>> but I >>>>>>>> would want messages with the existing headers intact. >>>>>>>> >>>>>>>> Another solution I am thinking of is making the message a object >>>>>>>> and not a >>>>>>>> string and passing the to address string as part of it. >>>>>>> Yeah that works perfect. Or you can temporary return the To header >>>>>>> in >>>>>>> the 1st line of the body response >>>>>>> and then fix it in a POJO afterwards >>>>>>> >>>>>>> from(x).split(MySplitterBean).bean(MyFixUpBean.class).to(z) >>>>>>> >>>>>>> And in your MyFixUpBean >>>>>>> you read the first line of the Body and set it back as To header >>>>>>> and remove it from the body. >>>>>>> >>>>>>> >>>>>>> >>>>>>>> I am making a reliable mass mailing solution with spam control >>>>>>>> based on >>>>>>>> ActiveMQ and camel, is it the right approach? >>>>>>> Yeah I see why not. However I have not personally build spam >>>>>>> protection software. >>>>>>> >>>>>>> >>>>>>>> Claus Ibsen-2 wrote: >>>>>>>>> On Fri, May 8, 2009 at 2:58 PM, rohitbrai <rohitb...@gmail.com> >>>>>>>>> wrote: >>>>>>>>>> I have a message which has - >>>>>>>>>> Header >>>>>>>>>> "To" - "a...@sdf.com,x...@dsfsdf.com,s...@serr.com" >>>>>>>>>> Body >>>>>>>>>> Hello >>>>>>>>>> >>>>>>>>>> onthis message I tried - >>>>>>>>>> >>>>>>>>>> from("jms:queue:new.test1").splitter(header("To").tokenize(",")).to("jms:queue:new.test2"); >>>>>>>>>> >>>>>>>>>> and I was expecting 3 entries on test2 queue >>>>>>>>>> Header >>>>>>>>>> "To" - "a...@sdf.com" >>>>>>>>>> Body >>>>>>>>>> Hello >>>>>>>>>> >>>>>>>>>> Header >>>>>>>>>> "To" - "x...@dsfsdf.com" >>>>>>>>>> Body >>>>>>>>>> Hello >>>>>>>>>> >>>>>>>>>> Header >>>>>>>>>> "To" - "s...@serr.com" >>>>>>>>>> Body >>>>>>>>>> Hello >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> But instead I got 3 messages on test2 queue like >>>>>>>>>> Header >>>>>>>>>> "To" - "a...@sdf.com,x...@dsfsdf.com,s...@serr.com" >>>>>>>>>> Body >>>>>>>>>> ...@sdf.com >>>>>>>>>> >>>>>>>>>> Header >>>>>>>>>> "To" - "a...@sdf.com,x...@dsfsdf.com,s...@serr.com" >>>>>>>>>> Body >>>>>>>>>> ...@dsfsdf.com >>>>>>>>>> >>>>>>>>>> Header >>>>>>>>>> "To" - "a...@sdf.com,x...@dsfsdf.com,s...@serr.com" >>>>>>>>>> Body >>>>>>>>>> s...@serr.com >>>>>>>>>> >>>>>>>>>> So I guess, I am doing it and even understanding it wrong. >>>>>>>>>> >>>>>>>>>> Can anyone here guide me how to handle this situation. >>>>>>>>> Hi >>>>>>>>> >>>>>>>>> Welcome on the Camel ride. >>>>>>>>> >>>>>>>>> The EIP patterns is about message routing where the message relies >>>>>>>>> in >>>>>>>>> the BODY payload. >>>>>>>>> The header is just meta data about the message. >>>>>>>>> >>>>>>>>> So the splitter operates on splitting the BODY and not the >>>>>>>>> headers, >>>>>>>>> hence why you get the email address in the body. >>>>>>>>> >>>>>>>>> So by default there EIP patterns dont really support your use case >>>>>>>>> out >>>>>>>>> of the box, unless you do some manual fixup in Java code. >>>>>>>>> >>>>>>>>> You could use a POJO or the like where you create new messages to >>>>>>>>> send >>>>>>>>> along. >>>>>>>>> >>>>>>>>> private ProducerTemplate producer >>>>>>>>> >>>>>>>>> public void sendSplittedMessages(String body, @Headers Map >>>>>>>>> headers) { >>>>>>>>> // loop the headers for each email adr >>>>>>>>> for (...) { >>>>>>>>> String email = ... >>>>>>>>> producer.sendBodyAndHeader("jms:queue:new:test02", body, >>>>>>>>> "To", >>>>>>>>> email); >>>>>>>>> } >>>>>>>>> >>>>>>>>> And then have a route that is like >>>>>>>>> from("jms:queue:new.test1").bean(MySplitMessageClass.class, >>>>>>>>> "sendSplittedMessages"); >>>>>>>>> >>>>>>>>> where we route to our bean that, will do the "split" manually and >>>>>>>>> send >>>>>>>>> a new message to the JMS queue. >>>>>>>>> >>>>>>>>> >>>>>>>>>> Thanks and Regards, >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> View this message in context: >>>>>>>>>> http://www.nabble.com/Split-using-tokenize-on-header-tp23445496p23445496.html >>>>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>>>>> >>>>>>>>>> >>>>>>>>> -- >>>>>>>>> Claus Ibsen >>>>>>>>> Apache Camel Committer >>>>>>>>> >>>>>>>>> Open Source Integration: http://fusesource.com >>>>>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>>>>> Twitter: http://twitter.com/davsclaus >>>>>>>>> Apache Camel Reference Card: >>>>>>>>> http://refcardz.dzone.com/refcardz/enterprise-integration >>>>>>>>> Interview with me: >>>>>>>>> http://architects.dzone.com/articles/interview-claus-ibsen-about?mz=7893-progress >>>>>>>>> >>>>>>>>> >>>>>>>> -- >>>>>>>> View this message in context: >>>>>>>> http://www.nabble.com/Split-using-tokenize-on-header-tp23445496p23445999.html >>>>>>>> Sent from the Camel - Users mailing list archive at Nabble.com. >>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>>> >>>> >>> >>> >>> >> >> > > > > -- > Claus Ibsen > Apache Camel Committer > > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus > Apache Camel Reference Card: > http://refcardz.dzone.com/refcardz/enterprise-integration > Interview with me: > http://architects.dzone.com/articles/interview-claus-ibsen-about?mz=7893-progress > > -- View this message in context: http://www.nabble.com/Split-using-tokenize-on-header-tp23445496p23481965.html Sent from the Camel - Users mailing list archive at Nabble.com.