CAMEL-6680: mvel compiles expression setting TCCL to classloader from mvel to improve OSGi compatability.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4869bd6f Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4869bd6f Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4869bd6f Branch: refs/heads/camel-2.12.x Commit: 4869bd6fcfdf77e0fa785b13687493edfa13be4b Parents: 56de4af Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Aug 29 11:48:50 2013 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Aug 30 10:09:51 2013 +0200 ---------------------------------------------------------------------- .../java/org/apache/camel/language/mvel/MvelExpression.java | 8 ++++++++ 1 file changed, 8 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/4869bd6f/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelExpression.java ---------------------------------------------------------------------- diff --git a/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelExpression.java b/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelExpression.java index 802559e..d842493 100644 --- a/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelExpression.java +++ b/components/camel-mvel/src/main/java/org/apache/camel/language/mvel/MvelExpression.java @@ -32,10 +32,18 @@ public class MvelExpression extends ExpressionSupport { public MvelExpression(MvelLanguage language, String expressionString, Class<?> type) { this.expressionString = expressionString; this.type = type; + + // see http://jira.codehaus.org/browse/MVEL-250 + final ClassLoader tccl = Thread.currentThread().getContextClassLoader(); try { + // set the TCCL to the MVEL + Thread.currentThread().setContextClassLoader(org.mvel2.MVEL.class.getClassLoader()); this.compiled = org.mvel2.MVEL.compileExpression(expressionString); } catch (Exception e) { throw new ExpressionIllegalSyntaxException(expressionString, e); + } finally { + // restore + Thread.currentThread().setContextClassLoader(tccl); } }