/** * Processes the given exchange * This method is the entry point for splitting the given exchange into * its parts via the split rule. Subclasses can change the created sub * exchanges by overriding {@link #finalizeSubExchange(Exchange, Exchange, SplitIndex)} * and the aggregate result by overriding {@link #finalizeAggregate(Exchange, Exchange)}. * * @param origExchange exchange that should be split by this processor */ @Override protected void processNext(Exchange origExchange) throws Exception { notNull(origExchange, "origExchange"); Iterable splitResult = evaluateSplitRule(origExchange); Exchange aggregate = processAllResults(origExchange, splitResult); finalizeAggregate(origExchange, aggregate); }