Repository: camel
Updated Branches:
  refs/heads/master ab5529ebe -> 43b9583b8


camel-catalog should allow custom classloader when validating simple expression 
as camel-core may need to be loaded from a different classpath depending where 
the catalog are being used.


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

Branch: refs/heads/master
Commit: 43b9583b8cf0b813cacc630b4d00d229ec8fea9e
Parents: ab5529e
Author: Claus Ibsen <davscl...@apache.org>
Authored: Mon Jan 9 20:59:47 2017 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Mon Jan 9 20:59:47 2017 +0100

----------------------------------------------------------------------
 .../org/apache/camel/catalog/CamelCatalog.java  | 22 ++++++++++++++++++++
 .../camel/catalog/DefaultCamelCatalog.java      | 18 ++++++++++++----
 2 files changed, 36 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/43b9583b/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
----------------------------------------------------------------------
diff --git 
a/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java 
b/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
index a29f2a9..ff70e58 100644
--- a/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
+++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java
@@ -363,6 +363,17 @@ public interface CamelCatalog {
     SimpleValidationResult validateSimpleExpression(String simple);
 
     /**
+     * Parses and validates the simple expression.
+     * <p/>
+     * <b>Important:</b> This requires having <tt>camel-core</tt> on the 
classpath
+     *
+     * @param classLoader a custom classloader to use for loading the simple 
language from the classpath
+     * @param simple  the simple expression
+     * @return validation result
+     */
+    SimpleValidationResult validateSimpleExpression(ClassLoader classLoader, 
String simple);
+
+    /**
      * Parses and validates the simple predicate
      * <p/>
      * <b>Important:</b> This requires having <tt>camel-core</tt> on the 
classpath
@@ -373,6 +384,17 @@ public interface CamelCatalog {
     SimpleValidationResult validateSimplePredicate(String simple);
 
     /**
+     * Parses and validates the simple predicate
+     * <p/>
+     * <b>Important:</b> This requires having <tt>camel-core</tt> on the 
classpath
+     *
+     * @param classLoader a custom classloader to use for loading the simple 
language from the classpath
+     * @param simple  the simple predicate
+     * @return validation result
+     */
+    SimpleValidationResult validateSimplePredicate(ClassLoader classLoader, 
String simple);
+
+    /**
      * Returns the component name from the given endpoint uri
      *
      * @param uri  the endpoint uri

http://git-wip-us.apache.org/repos/asf/camel/blob/43b9583b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
----------------------------------------------------------------------
diff --git 
a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
 
b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
index 65953da..fcf74be 100644
--- 
a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
+++ 
b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
@@ -1796,21 +1796,31 @@ public class DefaultCamelCatalog implements 
CamelCatalog {
 
     @Override
     public SimpleValidationResult validateSimpleExpression(String simple) {
-        return doValidateSimple(simple, false);
+        return doValidateSimple(DefaultCamelCatalog.class.getClassLoader(), 
simple, false);
+    }
+
+    @Override
+    public SimpleValidationResult validateSimpleExpression(ClassLoader 
classLoader, String simple) {
+        return doValidateSimple(classLoader, simple, false);
     }
 
     @Override
     public SimpleValidationResult validateSimplePredicate(String simple) {
-        return doValidateSimple(simple, true);
+        return doValidateSimple(DefaultCamelCatalog.class.getClassLoader(), 
simple, true);
+    }
+
+    @Override
+    public SimpleValidationResult validateSimplePredicate(ClassLoader 
classLoader, String simple) {
+        return doValidateSimple(classLoader, simple, true);
     }
 
-    private SimpleValidationResult doValidateSimple(String simple, boolean 
predicate) {
+    private SimpleValidationResult doValidateSimple(ClassLoader classLoader, 
String simple, boolean predicate) {
         SimpleValidationResult answer = new SimpleValidationResult(simple);
 
         Object instance = null;
         Class clazz = null;
         try {
-            clazz = 
DefaultCamelCatalog.class.getClassLoader().loadClass("org.apache.camel.language.simple.SimpleLanguage");
+            clazz = 
classLoader.loadClass("org.apache.camel.language.simple.SimpleLanguage");
             instance = clazz.newInstance();
         } catch (Exception e) {
             // ignore

Reply via email to