Repository: camel
Updated Branches:
  refs/heads/camel-2.14.x e5487e36e -> 28acb5684


[CAMEL-8338] ScriptBuilder relies on TCCL to discover engines


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/28acb568
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/28acb568
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/28acb568

Branch: refs/heads/camel-2.14.x
Commit: 28acb568489f78cee4278059d7f9ab8f1cca1d21
Parents: e5487e3
Author: Thomas Diesler <thomas.dies...@jboss.com>
Authored: Thu Feb 12 10:20:16 2015 +0100
Committer: Thomas Diesler <thomas.dies...@jboss.com>
Committed: Thu Feb 12 10:20:16 2015 +0100

----------------------------------------------------------------------
 .../camel/builder/script/ScriptBuilder.java     | 23 ++++++++++++++------
 1 file changed, 16 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/28acb568/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java
----------------------------------------------------------------------
diff --git 
a/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java
 
b/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java
index eda38b0..a4abde9 100644
--- 
a/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java
+++ 
b/components/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java
@@ -24,6 +24,7 @@ import java.io.StringReader;
 import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Map;
+
 import javax.script.Compilable;
 import javax.script.CompiledScript;
 import javax.script.ScriptContext;
@@ -49,7 +50,7 @@ import org.slf4j.LoggerFactory;
  * A builder class for creating {@link Processor}, {@link Expression} and
  * {@link Predicate} objects using the JSR 223 scripting engine.
  *
- * @version 
+ * @version
  */
 public class ScriptBuilder implements Expression, Predicate, Processor {
 
@@ -324,7 +325,18 @@ public class ScriptBuilder implements Expression, 
Predicate, Processor {
     }
 
     protected static ScriptEngine createScriptEngine(String language) {
-        ScriptEngineManager manager = new ScriptEngineManager();
+        ScriptEngine engine = createScriptEngine(language, 
ScriptBuilder.class.getClassLoader());
+        if (engine == null) {
+            engine = createScriptEngine(language, 
Thread.currentThread().getContextClassLoader());
+        }
+        if (engine == null) {
+            throw new IllegalArgumentException("No script engine could be 
created for: " + language);
+        }
+        return engine;
+    }
+
+    private static ScriptEngine createScriptEngine(String language, 
ClassLoader classLoader) {
+        ScriptEngineManager manager = new ScriptEngineManager(classLoader);
         ScriptEngine engine = null;
 
         // some script names has alias
@@ -343,10 +355,7 @@ public class ScriptBuilder implements Expression, 
Predicate, Processor {
         if (engine == null) {
             engine = checkForOSGiEngine(language);
         }
-        if (engine == null) {
-            throw new IllegalArgumentException("No script engine could be 
created for: " + language);
-        }
-        if (isPython(language)) {
+        if (engine != null && isPython(language)) {
             ScriptContext context = engine.getContext();
             context.setAttribute("com.sun.script.jython.comp.mode", "eval", 
ScriptContext.ENGINE_SCOPE);
         }
@@ -383,7 +392,7 @@ public class ScriptBuilder implements Expression, 
Predicate, Processor {
         } catch (ScriptException e) {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Script evaluation failed: " + e.getMessage(), e);
-            } 
+            }
             if (e.getCause() != null) {
                 throw createScriptEvaluationException(e.getCause());
             } else {

Reply via email to