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);
         }
     }
 

Reply via email to