You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/02/02 18:19:13 UTC
[camel] 05/05: CAMEL-14354: camel-core - Optimize to reduce calling
method in critical path
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 <cl...@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