Quantcast
Channel: Apache Timeline
Viewing all articles
Browse latest Browse all 5648

How to enrich with recipient list?

$
0
0
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 + '}';

Viewing all articles
Browse latest Browse all 5648

Trending Articles