You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/01/29 18:43:36 UTC
[camel-kafka-connector] branch camel-master updated: Provide option
to delete camel kafka submodule if they are not in camel catalog
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-kafka-connector.git
The following commit(s) were added to refs/heads/camel-master by this push:
new faf6e6b Provide option to delete camel kafka submodule if they are not in camel catalog
faf6e6b is described below
commit faf6e6b0bea1a3990b25e571ed96d14651f2206b
Author: Claudio Miranda <cl...@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());
}
}