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