Hi

You should then use the content enricher EIP if  you want to merge the
current body with the enriched body.

http://camel.apache.org/content-enricher.html

Though the content enricher does not support dynamic uri, as the
recipient list does.

On Tue, Apr 1, 2014 at 10:09 PM, a746076drdrb <a746...@drdrb.net> wrote:
> Hello,
>
> I try to use dynamic endpoint uri with recipientList and then combine old
> body with the new one, to enrich the message However in
> AggregationStrategy.aggregate method the
> oldExchange is null.
>
> I suppose recipientList clears the old body. Is there a way to combine two
> exchanges after recipientList? The test throwing
> IllegalArgumentException("oldExchange  is null"):
>
>
>
> package com.mycompany.cameltest;
>
> import org.apache.camel.Exchange;
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.processor.aggregate.AggregationStrategy;
> import org.apache.camel.test.junit4.CamelTestSupport;
> import org.junit.Test;
>
> public class MyRouteBuilderTest extends CamelTestSupport {
>
>     @Override
>     protected RouteBuilder createRouteBuilder() throws Exception {
>         return new RouteBuilder() {
>             @Override
>             public void configure() throws Exception {
>                 from("direct:start")
>                         .recipientList(simple("${body.url}"))
>                         .aggregationStrategy(new AggregationStrategy() {
>
>                             @Override
>                             public Exchange aggregate(Exchange oldExchange,
> Exchange newExchange) {
>                                 if (oldExchange == null) {
>                                     throw new
> IllegalArgumentException("oldExchange  is null");
>                                 }
>                                 String newBody =
> newExchange.getIn().getBody(String.class);
>                                 PojoObject pojo =
> oldExchange.getIn().getBody(PojoObject.class);
>                                 pojo.setResult(newBody);
>                                 newExchange.getIn().setBody(pojo);
>                                 return newExchange;
>                             }
>                         });
>
>             }
>         };
>     }
>
>     @Test
>     public void testConfigure() {
>         context.setTracing(Boolean.TRUE);
>         PojoObject pojo = new PojoObject();
>         pojo.setUrl("mock:http");
>         template.sendBody("direct:start", pojo);
>     }
>
>     public class PojoObject {
>
>         private String url = "http://foo";;
>         private Object result;
>
>         public String getUrl() {
>             return url;
>         }
>
>         public void setUrl(String url) {
>             this.url = url;
>         }
>
>         public Object getResult() {
>             return result;
>         }
>
>         public void setResult(Object result) {
>             this.result = result;
>         }
>
>
>         @Override
>         public String toString() {
>             return "PojoBody{" + "url=" + url + '}';
>         }
>
>     }
>
> }
>
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/How-to-enrich-with-recipient-list-tp5749644.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cib...@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
Make your Camel applications look hawt, try: http://hawt.io

Reply via email to