This is an automated email from the ASF dual-hosted git repository. valdar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-kafka-connector.git
The following commit(s) were added to refs/heads/master by this push: new fb49b9a Provide option to delete camel kafka submodule if they are not in camel catalog fb49b9a is described below commit fb49b9aa4dbf2ee66af9157a0899cf6e44f6dce7 Author: Claudio Miranda <clau...@claudius.com.br> AuthorDate: Thu Jan 28 23:55:37 2021 -0300 Provide option to delete camel kafka submodule if they are not in camel catalog https://github.com/apache/camel-kafka-connector/issues/149 --- .../maven/AbstractCamelKafkaConnectorMojo.java | 8 ++++ .../maven/CamelKafkaConnectorDeleteMojo.java | 11 ++--- .../maven/GenerateCamelKafkaConnectorsMojo.java | 50 ++++++++++++++++++++-- 3 files changed, 58 insertions(+), 11 deletions(-) diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/AbstractCamelKafkaConnectorMojo.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/AbstractCamelKafkaConnectorMojo.java index 54dfb6f..18e6afe 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/AbstractCamelKafkaConnectorMojo.java +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/AbstractCamelKafkaConnectorMojo.java @@ -120,6 +120,14 @@ public abstract class AbstractCamelKafkaConnectorMojo extends AbstractMojo { protected String connectorsProjectName; /** + * If "true" and if there is a <camel-component>-kafka-connector submodule in connectors directory, + * and it is missing from the camel catalog or is in the excludedComponents list, then + * remove the directory and remove the module from connectors/pom.xml. + */ + @Parameter(property = "remove-missing-components", defaultValue = "false") + protected boolean removeMissingComponents; + + /** * Execute goal. * * @throws MojoExecutionException execution of the main class or one of the diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorDeleteMojo.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorDeleteMojo.java index 96eb146..d377396 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorDeleteMojo.java +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorDeleteMojo.java @@ -39,9 +39,6 @@ public class CamelKafkaConnectorDeleteMojo extends AbstractCamelKafkaConnectorMo @Parameter(property = "name", required = true) protected String name; - @Parameter(property = "componentJson", required = true) - protected String componentJson; - @Override protected String getMainDepArtifactId() { return "camel-" + name; @@ -66,11 +63,11 @@ public class CamelKafkaConnectorDeleteMojo extends AbstractCamelKafkaConnectorMo } private void deleteConnector() throws MojoFailureException, IOException { - getLog().info("Deleting starter for " + name); + getLog().info("Deleting camel kafka connector for " + name); String sanitizedName = sanitizeMavenArtifactId(name); - File directory = new File(projectDir, "camel-" + sanitizedName + "-starter"); + File directory = new File(projectDir, "camel-" + sanitizedName + KAFKA_CONNECTORS_SUFFIX); if (!directory.exists()) { - throw new MojoFailureException("Starter does not exist: " + name); + throw new MojoFailureException("Camel kafka connector does not exist: " + name); } FileUtils.deleteDirectory(directory); Path parent = new File(projectDir, "pom.xml").toPath(); @@ -87,7 +84,7 @@ public class CamelKafkaConnectorDeleteMojo extends AbstractCamelKafkaConnectorMo } lines = concat(lines.subList(0, modulesStart).stream(), lines.subList(modulesStart, modulesEnd).stream() - .filter(s -> !s.contains("<module>camel-" + sanitizedName + "-starter</module>")), + .filter(s -> !s.contains("<module>camel-" + sanitizedName + KAFKA_CONNECTORS_SUFFIX + "</module>")), lines.subList(modulesEnd, lines.size()).stream()) .collect(Collectors.toList()); Files.write(parent, lines); diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojo.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojo.java index 2535165..f3a6551 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojo.java +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojo.java @@ -16,8 +16,7 @@ */ package org.apache.camel.kafkaconnector.maven; -import java.io.FileInputStream; -import java.io.IOException; +import java.io.*; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; @@ -25,9 +24,11 @@ import java.util.List; import java.util.Properties; import java.util.Set; import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.camel.catalog.CamelCatalog; import org.apache.camel.catalog.DefaultCamelCatalog; +import org.apache.camel.kafkaconnector.maven.utils.MavenUtils; import org.apache.camel.tooling.model.ComponentModel; import org.apache.camel.tooling.model.JsonMapper; import org.apache.maven.ProjectDependenciesResolver; @@ -43,6 +44,7 @@ import org.apache.maven.project.ProjectBuilder; import org.codehaus.plexus.resource.loader.FileResourceCreationException; import org.codehaus.plexus.resource.loader.ResourceNotFoundException; +import static org.apache.camel.kafkaconnector.maven.utils.MavenUtils.sanitizeMavenArtifactId; import static org.twdata.maven.mojoexecutor.MojoExecutor.artifactId; import static org.twdata.maven.mojoexecutor.MojoExecutor.configuration; import static org.twdata.maven.mojoexecutor.MojoExecutor.element; @@ -79,7 +81,7 @@ public class GenerateCamelKafkaConnectorsMojo extends AbstractCamelKafkaConnecto @Component private BuildPluginManager pluginManager; - + /** * The Camel Component Filter to select for which components generate the corresponding camel kafka connector. */ @@ -185,6 +187,46 @@ public class GenerateCamelKafkaConnectorsMojo extends AbstractCamelKafkaConnecto ); } - //TODO: optionally delete submodules not in catalog + if (removeMissingComponents) { + if (projectDir != null && projectDir.isDirectory()) { + // sanitize names, as there are some camel components with + signal which are sanitized when creating the kafka connector + List<String> sanitizedComponentNames = components.stream().map(MavenUtils::sanitizeMavenArtifactId).collect(Collectors.toList()); + // retrieve the list of camel kafka connectors + String[] connectorNames = projectDir.list((dir, filename) -> filename.endsWith(KAFKA_CONNECTORS_SUFFIX)); + if (connectorNames != null) { + List<String> connectorsToRemove = Stream.of(connectorNames).sorted().filter(filename -> { + String componentName = extractComponentName(filename); + // set to remove connectors that are not in camel catalog or are explicitly excluded + return !sanitizedComponentNames.contains(componentName) || excludedComponents.contains(componentName); + + }).collect(Collectors.toList()); + + for (String component: connectorsToRemove) { + + executeMojo( + plugin( + groupId(properties.getProperty("groupId")), + artifactId(properties.getProperty("artifactId")), + version(properties.getProperty("version")) + ), + goal("camel-kafka-connector-delete"), + configuration( + element(name("name"), component) + ), + executionEnvironment( + project, + session, + pluginManager + ) + ); + } + } + } + } + } + + private String extractComponentName(String connectorName) { + String name = connectorName.substring("camel-".length()); + return name.substring(0, name.length() - KAFKA_CONNECTORS_SUFFIX.length()); } }