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 2015/02/12 10:35:58 UTC
camel git commit: [CAMEL-8338] ScriptBuilder relies on TCCL to
discover engines
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 <th...@jboss.com>
Authored: Thu Feb 12 10:20:16 2015 +0100
Committer: Thomas Diesler <th...@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 {