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 <[email protected]>
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| | |

Reply via email to