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 <[email protected]>
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());
}
}