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:02 UTC

[camel] branch master updated (26f43d8 -> eeabe64)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git.


    from 26f43d8  Proofread README file with multiple fixes
     new 9f4942a  camel-core - Some small optimizations
     new eeabe64  CAMEL-15176: Optimize component to do as much in init phase vs start phase.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../camel/component/language/LanguageEndpoint.java      | 17 ++++++++++++-----
 components/components-init-work-in-progress.md          |  2 +-
 .../camel/impl/engine/SubscribeMethodProcessor.java     |  9 ++++++++-
 .../org/apache/camel/processor/ClaimCheckProcessor.java |  8 +++++---
 .../apache/camel/processor/ThrowExceptionProcessor.java |  7 ++++++-
 .../camel/processor/interceptor/BacklogTracer.java      | 10 +++++++---
 .../language/DefaultAnnotationExpressionFactory.java    |  3 ---
 7 files changed, 39 insertions(+), 17 deletions(-)


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

Posted by da...@apache.org.
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");


[camel] 02/02: CAMEL-15176: Optimize component to do as much in init phase vs start phase.

Posted by da...@apache.org.
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 eeabe64a809a64e723685bda90712951f25a906d
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Oct 14 16:59:14 2020 +0200

    CAMEL-15176: Optimize component to do as much in init phase vs start phase.
---
 .../camel/component/language/LanguageEndpoint.java      | 17 ++++++++++++-----
 components/components-init-work-in-progress.md          |  2 +-
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java b/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
index e4f7e7d..0cab7b8 100644
--- a/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
+++ b/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
@@ -38,7 +38,6 @@ import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.EndpointHelper;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ObjectHelper;
 
 /**
  * Execute scripts in any of the languages supported by Camel.
@@ -87,14 +86,22 @@ public class LanguageEndpoint extends ResourceEndpoint {
     }
 
     @Override
-    public Producer createProducer() throws Exception {
-        ObjectHelper.notNull(getCamelContext(), "CamelContext", this);
-
+    protected void doInit() throws Exception {
         if (language == null && languageName != null) {
             language = getCamelContext().resolveLanguage(languageName);
         }
+        if (cacheScript && expression == null && script != null) {
+            boolean external = script.startsWith("file:") || script.startsWith("http:");
+            if (!external) {
+                // we can pre optimize this as the script can be loaded from classpath or registry etc
+                script = resolveScript(script);
+                expression = language.createExpression(script);
+            }
+        }
+    }
 
-        ObjectHelper.notNull(language, "language", this);
+    @Override
+    public Producer createProducer() throws Exception {
         if (cacheScript && expression == null && script != null) {
             script = resolveScript(script);
             expression = language.createExpression(script);
diff --git a/components/components-init-work-in-progress.md b/components/components-init-work-in-progress.md
index f4bbb88..40599e6 100644
--- a/components/components-init-work-in-progress.md
+++ b/components/components-init-work-in-progress.md
@@ -222,7 +222,7 @@
 |camel-kubernetes|REJECT|OKHttp client create thread pool |
 |camel-kudu|REJECT|create thread pool|
 |camel-kura| | |
-|camel-language| | |
+|camel-language|DONE | |
 |camel-ldap| | |
 |camel-ldif| | |
 |camel-leveldb| | |