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/10/15 04:52:03 UTC

[camel] 01/02: camel-core - Some small optimizations

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 9f4942a6b291099a7cb28e8a98d002e63b934590
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 14 15:27:59 2020 +0200

    camel-core - Some small optimizations
---
 .../org/apache/camel/impl/engine/SubscribeMethodProcessor.java |  9 ++++++++-
 .../java/org/apache/camel/processor/ClaimCheckProcessor.java   |  8 +++++---
 .../org/apache/camel/processor/ThrowExceptionProcessor.java    |  7 ++++++-
 .../org/apache/camel/processor/interceptor/BacklogTracer.java  | 10 +++++++---
 .../support/language/DefaultAnnotationExpressionFactory.java   |  3 ---
 5 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/core/camel-base/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java b/core/camel-base/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java
index a76d3fe..c8d8492 100644
--- a/core/camel-base/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/impl/engine/SubscribeMethodProcessor.java
@@ -31,6 +31,7 @@ import org.apache.camel.Navigate;
 import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.CamelInternalProcessor;
+import org.apache.camel.spi.Language;
 import org.apache.camel.support.AsyncProcessorSupport;
 import org.apache.camel.support.builder.PredicateBuilder;
 import org.apache.camel.support.service.ServiceHelper;
@@ -44,6 +45,7 @@ public final class SubscribeMethodProcessor extends AsyncProcessorSupport implem
 
     private final Endpoint endpoint;
     private final Map<AsyncProcessor, Predicate> methods = new LinkedHashMap<>();
+    private Language simple;
 
     public SubscribeMethodProcessor(Endpoint endpoint) {
         this.endpoint = endpoint;
@@ -64,7 +66,7 @@ public final class SubscribeMethodProcessor extends AsyncProcessorSupport implem
         if (ObjectHelper.isEmpty(predicate)) {
             p = PredicateBuilder.constant(true);
         } else {
-            p = endpoint.getCamelContext().resolveLanguage("simple").createPredicate(predicate);
+            p = simple.createPredicate(predicate);
         }
         methods.put(internal, p);
     }
@@ -87,6 +89,11 @@ public final class SubscribeMethodProcessor extends AsyncProcessorSupport implem
     }
 
     @Override
+    protected void doInit() throws Exception {
+        simple = getEndpoint().getCamelContext().resolveLanguage("simple");
+    }
+
+    @Override
     protected void doStart() throws Exception {
         ServiceHelper.startService(methods.keySet());
     }
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java
index 1e3879c..494d6a9 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/ClaimCheckProcessor.java
@@ -184,9 +184,7 @@ public class ClaimCheckProcessor extends AsyncProcessorSupport implements IdAwar
     }
 
     @Override
-    protected void doStart() throws Exception {
-        ObjectHelper.notNull(operation, "operation", this);
-
+    protected void doInit() throws Exception {
         if (aggregationStrategy == null) {
             aggregationStrategy = createAggregationStrategy();
         }
@@ -199,7 +197,11 @@ public class ClaimCheckProcessor extends AsyncProcessorSupport implements IdAwar
         } else {
             keyExpression = camelContext.resolveLanguage("constant").createExpression(key);
         }
+    }
 
+    @Override
+    protected void doStart() throws Exception {
+        ObjectHelper.notNull(operation, "operation", this);
         ServiceHelper.startService(aggregationStrategy);
     }
 
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/ThrowExceptionProcessor.java b/core/camel-base/src/main/java/org/apache/camel/processor/ThrowExceptionProcessor.java
index d8fa6a9..2a0bbe8 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/ThrowExceptionProcessor.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/ThrowExceptionProcessor.java
@@ -136,7 +136,7 @@ public class ThrowExceptionProcessor extends AsyncProcessorSupport
     }
 
     @Override
-    protected void doStart() throws Exception {
+    protected void doInit() throws Exception {
         ObjectHelper.notNull(camelContext, "camelContext", this);
 
         if (message != null) {
@@ -145,6 +145,11 @@ public class ThrowExceptionProcessor extends AsyncProcessorSupport
     }
 
     @Override
+    protected void doStart() throws Exception {
+        // noop
+    }
+
+    @Override
     protected void doStop() throws Exception {
         // noop
     }
diff --git a/core/camel-base/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java b/core/camel-base/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
index 7059b1e..6c1c6f5 100644
--- a/core/camel-base/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
+++ b/core/camel-base/src/main/java/org/apache/camel/processor/interceptor/BacklogTracer.java
@@ -28,6 +28,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.NamedNode;
 import org.apache.camel.Predicate;
 import org.apache.camel.api.management.mbean.BacklogTracerEventMessage;
+import org.apache.camel.spi.Language;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.support.service.ServiceSupport;
@@ -44,6 +45,7 @@ public final class BacklogTracer extends ServiceSupport {
     // lets limit the tracer to 10 thousand messages in total
     public static final int MAX_BACKLOG_SIZE = 10 * 1000;
     private final CamelContext camelContext;
+    private final Language simple;
     private boolean enabled;
     private final AtomicLong traceCounter = new AtomicLong();
     // use a queue with a upper limit to avoid storing too many messages
@@ -62,6 +64,7 @@ public final class BacklogTracer extends ServiceSupport {
 
     private BacklogTracer(CamelContext camelContext) {
         this.camelContext = camelContext;
+        this.simple = camelContext.resolveLanguage("simple");
     }
 
     /**
@@ -216,11 +219,12 @@ public final class BacklogTracer extends ServiceSupport {
         if (filter != null) {
             // assume simple language
             String name = StringHelper.before(filter, ":");
-            if (name == null) {
+            if (name != null) {
+                predicate = camelContext.resolveLanguage(name).createPredicate(filter);
+            } else {
                 // use simple language by default
-                name = "simple";
+                predicate = simple.createPredicate(filter);
             }
-            predicate = camelContext.resolveLanguage(name).createPredicate(filter);
         }
     }
 
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/language/DefaultAnnotationExpressionFactory.java b/core/camel-support/src/main/java/org/apache/camel/support/language/DefaultAnnotationExpressionFactory.java
index 4aec640..e0e9a1a 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/language/DefaultAnnotationExpressionFactory.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/language/DefaultAnnotationExpressionFactory.java
@@ -36,9 +36,6 @@ public class DefaultAnnotationExpressionFactory implements AnnotationExpressionF
             CamelContext camelContext, Annotation annotation, LanguageAnnotation languageAnnotation,
             Class<?> expressionReturnType) {
         String languageName = languageAnnotation.language();
-        if (languageName == null) {
-            throw new IllegalArgumentException("Cannot determine the language from the annotation: " + annotation);
-        }
         Language language = camelContext.resolveLanguage(languageName);
         if (language == null) {
             throw new IllegalArgumentException("Cannot find the language: " + languageName + " on the classpath");