@Override public Processor createProcessor(RouteContext routeContext) throws Exception { Processor childProcessor = createChildProcessor(routeContext, false); if (aggregationStrategy == null) { aggregationStrategy = new UseLatestAggregationStrategy(); } if (expressionBean != null) { expressionDefinition = new ExpressionDefinition(routeContext.lookup(expressionBean, Expression.class)); } Expression expression = expressionDefinition.createExpression(routeContext); Splitter splitter = createSplitterInstance(expression, childProcessor); splitter.aggregate(aggregationStrategy); return splitter; }
@Test public void testResetToDefaults() throws Exception { splitter.aggregate(null); Exchange origExchange = createTestExchange(); origExchange.getIn().setBody("bla,blu"); splitter.process(origExchange); List<Exchange> received = dest.getReceived(); assertEquals(2, received.size()); assertEquals("bla", getContent(received.get(0))); assertEquals("blu", getContent(received.get(1))); assertEquals("blu", origExchange.getOut().getBody()); }
@Test public void testSplitRuleWithArrayResult() throws Exception { Exchange origExchange = createTestExchange(); origExchange.getIn().setBody("bla,blu"); Splitter splitterWithArrayResult = new Splitter(new Expression() { @Override public <T> T evaluate(Exchange exchange, Class<T> type) { return type.cast(getContent(exchange).split(",")); }}, dest); splitterWithArrayResult.aggregate(new TestAggregationStrategy()); splitterWithArrayResult.process(origExchange); List<Exchange> received = dest.getReceived(); assertEquals(2, received.size()); assertEquals("bla", getContent(received.get(0))); assertEquals("blu", getContent(received.get(1))); assertEquals("bla:blu", origExchange.getOut().getBody()); }
@Before public void setUp() { TestSplitRule splitRule = new TestSplitRule(); TestAggregationStrategy aggregationStrat = new TestAggregationStrategy(); dest = new TestProcessor(); splitter = new Splitter(splitRule, dest); splitter.aggregate(aggregationStrat); }