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);
+        }
+    }
 }
 

Reply via email to