if (processor == null) {
throw new IllegalStateException("No processors could be chosen to process " + exchange);
}
if (processor instanceof AsyncProcessor) {
AsyncProcessor asyncProcessor = (AsyncProcessor) processor;
sync = asyncProcessor.process(exchange, new AsyncCallback() {
public void done(boolean doSync) {
// check the exchange and call the FailOverProcessor
if (isCheckedException(exchange) && index < getProcessors().size() - 1) {
exchange.setException(null);
processExchange(index + 1, exchange, callback);