Repository: camel
Updated Branches:
  refs/heads/camel-2.18.x 67467b5ba -> 28c066c23


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/28c066c2
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/28c066c2
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/28c066c2

Branch: refs/heads/camel-2.18.x
Commit: 28c066c233ee2cf7fb0ae6c5fecb4f9870ad56ef
Parents: 67467b5
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 21:09:42 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/28c066c2/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 1e5474a..4c2b9b9 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
@@ -339,6 +339,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
@@ -349,6 +360,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/28c066c2/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 14457e7..74b4b41 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
@@ -1652,21 +1652,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