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