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