This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit d7241e1bb045d333dd265d06ba2458994a77adad Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sun Feb 2 19:18:21 2020 +0100 CAMEL-14354: camel-core - Optimize to reduce calling method in critical path --- .../apache/camel/processor/CamelInternalProcessor.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java index d447036..84c4ac0 100644 --- a/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java +++ b/core/camel-base/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java @@ -149,21 +149,30 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor { /** * Callback task to process the advices after processing. */ - private class AsyncAfterTask implements AsyncCallback { + private static final class AsyncAfterTask implements AsyncCallback { + private final List<CamelInternalProcessorAdvice<?>> advices; private final Object[] states; private final Exchange exchange; private final AsyncCallback originalCallback; + private final ReactiveExecutor reactiveExecutor; - private AsyncAfterTask(Object[] states, Exchange exchange, AsyncCallback originalCallback) { + private AsyncAfterTask(List<CamelInternalProcessorAdvice<?>> advices, Object[] states, + Exchange exchange, AsyncCallback originalCallback, ReactiveExecutor reactiveExecutor) { + this.advices = advices; this.states = states; this.exchange = exchange; this.originalCallback = originalCallback; + this.reactiveExecutor = reactiveExecutor; } @Override - @SuppressWarnings("unchecked") public void done(boolean doneSync) { + // noop as we override run method + } + + @Override + public void run() { try { for (int i = advices.size() - 1, j = states.length - 1; i >= 0; i--) { CamelInternalProcessorAdvice task = advices.get(i); @@ -247,7 +256,7 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor { } // create internal callback which will execute the advices in reverse order when done - AsyncCallback callback = new AsyncAfterTask(states, exchange, originalCallback); + AsyncCallback callback = new AsyncAfterTask(advices, states, exchange, originalCallback, reactiveExecutor); if (exchange.isTransacted()) { // must be synchronized for transacted exchanges