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