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/09/21 07:24:13 UTC

[2/2] camel git commit: [CAMEL-11798] Connector API assumes flat classpath

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

Branch: refs/heads/master
Commit: b4c933b7f958bb8378990292d14441a2bd1deea5
Parents: af68897
Author: Thomas Diesler <td...@redhat.com>
Authored: Thu Sep 21 08:22:36 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Sep 21 09:22:45 2017 +0200

----------------------------------------------------------------------
 .../camel/component/connector/ConnectorModel.java    | 10 +++++-----
 .../connector/DefaultConnectorComponent.java         | 15 ++++++++++++++-
 2 files changed, 19 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b4c933b7/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 112d4985..da7a928 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
@@ -65,10 +65,10 @@ final class ConnectorModel {
     private List<String> componentOptions;
     private List<String> connectorOptions;
 
-    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() {
@@ -183,12 +183,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/b4c933b7/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 81e22ba..57afa69 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
@@ -66,6 +66,10 @@ public abstract class DefaultConnectorComponent extends DefaultComponent impleme
     private Processor afterConsumer;
 
     protected DefaultConnectorComponent(String componentName, String className) {
+        this(componentName, loadConnectorClass(className));
+    }
+
+    protected DefaultConnectorComponent(String componentName, Class<?> className) {
         this.model = new ConnectorModel(componentName, className);
         this.baseScheme = this.model.getBaseScheme();
         this.componentName = componentName;
@@ -73,7 +77,7 @@ public abstract class DefaultConnectorComponent extends DefaultComponent impleme
         this.options = new HashMap<>();
 
         // add to catalog
-        this.catalog.addComponent(componentName, className);
+        this.catalog.addComponent(componentName, className.getName());
 
         // It may be a custom component so we need to register this in the camel catalog also
         if (!catalog.findComponentNames().contains(baseScheme)) {
@@ -89,6 +93,15 @@ public abstract class DefaultConnectorComponent extends DefaultComponent impleme
         registerExtension(this::getComponentVerifierExtension);
     }
 
+    private static Class<?> loadConnectorClass(String className) {
+        try {
+            ClassLoader classLoader = DefaultConnectorComponent.class.getClassLoader();
+            return classLoader.loadClass(className);
+        } catch (ClassNotFoundException ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+
     protected <T> void doAddOption(Map<String, T> options, String name, T value) {
         log.trace("Adding option: {}={}", name, value);
         T val = options.put(name, value);