Repository: camel Updated Branches: refs/heads/camel-2.19.x 2a7cba96b -> 414eb298f refs/heads/master af6889705 -> b4c933b7f
[CAMEL-11798] Connector API assumes flat classpath Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/414eb298 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/414eb298 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/414eb298 Branch: refs/heads/camel-2.19.x Commit: 414eb298f21ce3cf5e643a57854e7c8735b4b240 Parents: 2a7cba9 Author: Thomas Diesler <tdies...@redhat.com> Authored: Thu Sep 21 08:22:36 2017 +0200 Committer: Thomas Diesler <tdies...@redhat.com> Committed: Thu Sep 21 08:22:36 2017 +0200 ---------------------------------------------------------------------- .../camel/component/connector/ConnectorModel.java | 10 +++++----- .../connector/DefaultConnectorComponent.java | 17 +++++++++++++++-- 2 files changed, 20 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/414eb298/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorModel.java ---------------------------------------------------------------------- diff --git a/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorModel.java b/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorModel.java index 2165d41..d5ff687 100644 --- a/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorModel.java +++ b/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/ConnectorModel.java @@ -62,10 +62,10 @@ final class ConnectorModel { private Map<String, String> defaultComponentOptions; private Map<String, String> defaultEndpointOptions; - ConnectorModel(String componentName, String className) { + ConnectorModel(String componentName, Class<?> componentClass) { this.componentName = componentName; - this.className = className; - this.lines = Suppliers.memorize(() -> findCamelConnectorJSonSchema()); + this.className = componentClass.getName(); + this.lines = Suppliers.memorize(() -> findCamelConnectorJSonSchema(componentClass)); } public String getComponentName() { @@ -156,12 +156,12 @@ final class ConnectorModel { // Helpers // *************************************** - private List<String> findCamelConnectorJSonSchema() { + private List<String> findCamelConnectorJSonSchema(Class<?> componentClass) { LOGGER.debug("Finding camel-connector.json in classpath for connector: {}", componentName); Enumeration<URL> urls; try { - urls = ConnectorModel.class.getClassLoader().getResources("camel-connector.json"); + urls = componentClass.getClassLoader().getResources("camel-connector.json"); } catch (IOException e) { throw new IllegalArgumentException("Cannot open camel-connector.json in classpath for connector " + componentName); } http://git-wip-us.apache.org/repos/asf/camel/blob/414eb298/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/DefaultConnectorComponent.java ---------------------------------------------------------------------- diff --git a/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/DefaultConnectorComponent.java b/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/DefaultConnectorComponent.java index 192ebf1..30074f1 100644 --- a/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/DefaultConnectorComponent.java +++ b/connectors/camel-connector/src/main/java/org/apache/camel/component/connector/DefaultConnectorComponent.java @@ -57,11 +57,15 @@ public abstract class DefaultConnectorComponent extends DefaultComponent impleme private Processor afterConsumer; protected DefaultConnectorComponent(String componentName, String className) { + this(componentName, loadConnectorComponent(className)); + } + + protected DefaultConnectorComponent(String componentName, Class<?> componentClass) { this.componentName = componentName; - this.model = new ConnectorModel(componentName, className); + this.model = new ConnectorModel(componentName, componentClass); // add to catalog - this.catalog.addComponent(componentName, className); + this.catalog.addComponent(componentName, componentClass.getName()); } @Override @@ -426,5 +430,14 @@ public abstract class DefaultConnectorComponent extends DefaultComponent impleme } return null; } + + private static Class<?> loadConnectorComponent(String className) { + try { + ClassLoader classLoader = DefaultConnectorComponent.class.getClassLoader(); + return classLoader.loadClass(className); + } catch (ClassNotFoundException ex) { + throw new RuntimeException(ex); + } + } }