CAMEL-11764: Verified that connector scheme don't clash with components scheme 
from the catalog


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/626e12e9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/626e12e9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/626e12e9

Branch: refs/heads/master
Commit: 626e12e97a65f3269de0407639d5f20c53f14d5d
Parents: baf685c
Author: aldettinger <[email protected]>
Authored: Tue Sep 12 19:16:33 2017 +0200
Committer: Andrea Cosentino <[email protected]>
Committed: Wed Sep 13 11:08:14 2017 +0200

----------------------------------------------------------------------
 connectors/camel-connector-maven-plugin/pom.xml    |  5 +++++
 .../camel/maven/connector/ConnectorMojo.java       | 17 +++++++++++++++++
 2 files changed, 22 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/626e12e9/connectors/camel-connector-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/connectors/camel-connector-maven-plugin/pom.xml 
b/connectors/camel-connector-maven-plugin/pom.xml
index cbb2c84..3526c4c 100644
--- a/connectors/camel-connector-maven-plugin/pom.xml
+++ b/connectors/camel-connector-maven-plugin/pom.xml
@@ -33,6 +33,11 @@
 
   <dependencies>
 
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-catalog</artifactId>
+    </dependency>
+
     <!-- we extend this existing maven plugin -->
     <dependency>
       <groupId>org.apache.maven.plugins</groupId>

http://git-wip-us.apache.org/repos/asf/camel/blob/626e12e9/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java
----------------------------------------------------------------------
diff --git 
a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java
 
b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java
index b0471c0..2d0fcc4 100644
--- 
a/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java
+++ 
b/connectors/camel-connector-maven-plugin/src/main/java/org/apache/camel/maven/connector/ConnectorMojo.java
@@ -34,6 +34,9 @@ import java.util.stream.Collectors;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.apache.camel.catalog.CamelCatalog;
+import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.maven.connector.util.FileHelper;
 import org.apache.camel.maven.connector.util.GitHelper;
 import org.apache.camel.maven.connector.util.JSonSchemaHelper;
@@ -69,6 +72,8 @@ public class ConnectorMojo extends AbstractJarMojo {
     @Parameter(defaultValue = "false")
     private boolean includeGitUrl;
 
+    private CamelCatalog catalog = new DefaultCamelCatalog();
+
     @Override
     protected File getClassesDirectory() {
         return classesDirectory;
@@ -143,6 +148,8 @@ public class ConnectorMojo extends AbstractJarMojo {
                     rows = JSonSchemaHelper.parseJsonSchema("component", 
newJson, false);
                     String newScheme = getOption(rows, "scheme");
 
+                    checkConnectorScheme(newScheme);
+
                     // write the json file to the target directory as if camel 
apt would do it
                     String javaType = (String) dto.get("javaType");
                     String dir = javaType.substring(0, 
javaType.lastIndexOf("."));
@@ -178,6 +185,16 @@ public class ConnectorMojo extends AbstractJarMojo {
         return super.createArchive();
     }
 
+    private void checkConnectorScheme(String connectorScheme) {
+        List<String> componentNames = catalog.findComponentNames();
+        if (componentNames != null && 
componentNames.contains(connectorScheme)) {
+            String format = "Can't package a connector with scheme '%s' as a 
component with the same scheme is already registered in the catalog";
+            String message = String.format(format, connectorScheme);
+            getLog().error(message);
+            throw new IllegalArgumentException(message);
+        }
+    }
+
     private String embedGitUrlInCamelConnectorJSon(ObjectMapper mapper, Map 
dto) throws MojoExecutionException {
         // we want to include the git url of the project
         File gitFolder = GitHelper.findGitFolder();

Reply via email to