package org.talend.example;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.processor.aggregate.AggregationStrategy;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;
public class CamelEipEnricherTest extends CamelTestSupport {
@Test
public void testEnrich() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(1);
template.sendBody("direct:start", "Hello world");
assertMockEndpointsSatisfied();
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
getContext().setTracing(true);
from("direct:start")
.enrich("direct:enrich", new AggregationStrategy() {
@Override
public Exchange aggregate(Exchange first, Exchange second) {
if (second != null) {
Object firstBody = first.getIn().getBody();
Object secondBody = second.getIn().getBody();
second.getOut().setBody(firstBody + "\n---\n" + secondBody);
}
return second;
}
}).to("log:enricheded").to("mock:result");
from("direct:enrich")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
String s = exchange.getIn().getBody(String.class);
exchange.getOut().setBody(s + " again...");
}
}).to("log:processed");
}
};
}
}