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/03/20 08:02:33 UTC
[1/2] camel git commit: CAMEL-8521: camel-script - Should try all
classloaders before throwing IAE
Repository: camel
Updated Branches:
refs/heads/camel-2.15.x b83bda1c0 -> 071be584d
refs/heads/master 35b83b1d3 -> 74dc1c2c8
CAMEL-8521: camel-script - Should try all classloaders before throwing IAE
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/74dc1c2c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/74dc1c2c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/74dc1c2c
Branch: refs/heads/master
Commit: 74dc1c2c80f06f45c0810c7d4f43d6c459afac7f
Parents: 35b83b1
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Mar 20 08:03:59 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Mar 20 08:03:59 2015 +0100
----------------------------------------------------------------------
.../camel/builder/script/ScriptBuilder.java | 27 +++++++++++---------
1 file changed, 15 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/74dc1c2c/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 deb5fb4..36f459c 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
@@ -326,9 +326,9 @@ public class ScriptBuilder implements Expression, Predicate, Processor {
}
protected static ScriptEngine createScriptEngine(String language) {
- ScriptEngine engine = createScriptEngine(language, ScriptBuilder.class.getClassLoader());
+ ScriptEngine engine = tryCreateScriptEngine(language, ScriptBuilder.class.getClassLoader());
if (engine == null) {
- engine = createScriptEngine(language, Thread.currentThread().getContextClassLoader());
+ engine = tryCreateScriptEngine(language, Thread.currentThread().getContextClassLoader());
}
if (engine == null) {
throw new IllegalArgumentException("No script engine could be created for: " + language);
@@ -336,7 +336,12 @@ public class ScriptBuilder implements Expression, Predicate, Processor {
return engine;
}
- private static ScriptEngine createScriptEngine(String language, ClassLoader classLoader) {
+ /**
+ * Attemps to create the script engine for the given langauge using the classloader
+ *
+ * @return the engine, or <tt>null</tt> if not able to create
+ */
+ private static ScriptEngine tryCreateScriptEngine(String language, ClassLoader classLoader) {
ScriptEngineManager manager = new ScriptEngineManager(classLoader);
ScriptEngine engine = null;
@@ -349,17 +354,15 @@ public class ScriptBuilder implements Expression, Predicate, Processor {
break;
}
} catch (NoClassDefFoundError ex) {
- LOG.error("Cannot load the scriptEngine for " + name + ", the exception is " + ex
- + ", please ensure correct JARs is provided on classpath.");
+ LOG.warn("Cannot load ScriptEngine for " + name + ". Please ensure correct JARs is provided on classpath (stacktrace in DEBUG logging).");
+ // include stacktrace in debug logging
+ LOG.debug("Cannot load ScriptEngine for " + name + ". Please ensure correct JARs is provided on classpath.", ex);
}
}
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);
}
@@ -367,19 +370,19 @@ public class ScriptBuilder implements Expression, Predicate, Processor {
}
private static ScriptEngine checkForOSGiEngine(String language) {
- LOG.debug("No script engine found for " + language + " using standard javax.script auto-registration. Checking OSGi registry...");
+ LOG.debug("No script engine found for {} using standard javax.script auto-registration. Checking OSGi registry.", language);
try {
// Test the OSGi environment with the Activator
Class<?> c = Class.forName("org.apache.camel.script.osgi.Activator");
Method mth = c.getDeclaredMethod("getBundleContext");
Object ctx = mth.invoke(null);
- LOG.debug("Found OSGi BundleContext " + ctx);
+ LOG.debug("Found OSGi BundleContext: {}", ctx);
if (ctx != null) {
Method resolveScriptEngine = c.getDeclaredMethod("resolveScriptEngine", String.class);
return (ScriptEngine)resolveScriptEngine.invoke(null, language);
}
} catch (Throwable t) {
- LOG.debug("Unable to load OSGi, script engine cannot be found", t);
+ LOG.debug("Unable to detect OSGi. ScriptEngine for " + language + " cannot be resolved.", t);
}
return null;
}
[2/2] camel git commit: CAMEL-8521: camel-script - Should try all
classloaders before throwing IAE
Posted by da...@apache.org.
CAMEL-8521: camel-script - Should try all classloaders before throwing IAE
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/071be584
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/071be584
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/071be584
Branch: refs/heads/camel-2.15.x
Commit: 071be584d7be8568ac62cf5562fb62fd86715a1b
Parents: b83bda1
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Mar 20 08:03:59 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Mar 20 08:04:18 2015 +0100
----------------------------------------------------------------------
.../camel/builder/script/ScriptBuilder.java | 27 +++++++++++---------
1 file changed, 15 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/071be584/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 deb5fb4..36f459c 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
@@ -326,9 +326,9 @@ public class ScriptBuilder implements Expression, Predicate, Processor {
}
protected static ScriptEngine createScriptEngine(String language) {
- ScriptEngine engine = createScriptEngine(language, ScriptBuilder.class.getClassLoader());
+ ScriptEngine engine = tryCreateScriptEngine(language, ScriptBuilder.class.getClassLoader());
if (engine == null) {
- engine = createScriptEngine(language, Thread.currentThread().getContextClassLoader());
+ engine = tryCreateScriptEngine(language, Thread.currentThread().getContextClassLoader());
}
if (engine == null) {
throw new IllegalArgumentException("No script engine could be created for: " + language);
@@ -336,7 +336,12 @@ public class ScriptBuilder implements Expression, Predicate, Processor {
return engine;
}
- private static ScriptEngine createScriptEngine(String language, ClassLoader classLoader) {
+ /**
+ * Attemps to create the script engine for the given langauge using the classloader
+ *
+ * @return the engine, or <tt>null</tt> if not able to create
+ */
+ private static ScriptEngine tryCreateScriptEngine(String language, ClassLoader classLoader) {
ScriptEngineManager manager = new ScriptEngineManager(classLoader);
ScriptEngine engine = null;
@@ -349,17 +354,15 @@ public class ScriptBuilder implements Expression, Predicate, Processor {
break;
}
} catch (NoClassDefFoundError ex) {
- LOG.error("Cannot load the scriptEngine for " + name + ", the exception is " + ex
- + ", please ensure correct JARs is provided on classpath.");
+ LOG.warn("Cannot load ScriptEngine for " + name + ". Please ensure correct JARs is provided on classpath (stacktrace in DEBUG logging).");
+ // include stacktrace in debug logging
+ LOG.debug("Cannot load ScriptEngine for " + name + ". Please ensure correct JARs is provided on classpath.", ex);
}
}
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);
}
@@ -367,19 +370,19 @@ public class ScriptBuilder implements Expression, Predicate, Processor {
}
private static ScriptEngine checkForOSGiEngine(String language) {
- LOG.debug("No script engine found for " + language + " using standard javax.script auto-registration. Checking OSGi registry...");
+ LOG.debug("No script engine found for {} using standard javax.script auto-registration. Checking OSGi registry.", language);
try {
// Test the OSGi environment with the Activator
Class<?> c = Class.forName("org.apache.camel.script.osgi.Activator");
Method mth = c.getDeclaredMethod("getBundleContext");
Object ctx = mth.invoke(null);
- LOG.debug("Found OSGi BundleContext " + ctx);
+ LOG.debug("Found OSGi BundleContext: {}", ctx);
if (ctx != null) {
Method resolveScriptEngine = c.getDeclaredMethod("resolveScriptEngine", String.class);
return (ScriptEngine)resolveScriptEngine.invoke(null, language);
}
} catch (Throwable t) {
- LOG.debug("Unable to load OSGi, script engine cannot be found", t);
+ LOG.debug("Unable to detect OSGi. ScriptEngine for " + language + " cannot be resolved.", t);
}
return null;
}