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

Reply via email to