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 2017/01/09 20:00:22 UTC

camel git commit: 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.

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 <da...@apache.org>
Authored: Mon Jan 9 20:59:47 2017 +0100
Committer: Claus Ibsen <da...@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