This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git
commit 4585f3def81ef078bd233399ed8fc371bc050675 Author: Otavio Rodolfo Piske <[email protected]> AuthorDate: Wed May 26 10:48:03 2021 +0200 Allow excluding components from the catalog. Work-around #677 by excluding certain components from the catalog until apache/camel-quarkus#2661 is implemented --- support/camel-k-catalog/pom.xml | 4 ++++ .../src/it/generate-catalog/pom.xml | 1 + .../camel/k/tooling/maven/GenerateCatalogMojo.java | 18 +++++++++++++++++- .../k/tooling/maven/processors/CatalogProcessor3x.java | 9 ++++++--- .../k/tooling/maven/support/CatalogProcessor.java | 5 ++++- .../maven/processors/CatalogProcessor3Test.java | 5 +++-- 6 files changed, 35 insertions(+), 7 deletions(-) diff --git a/support/camel-k-catalog/pom.xml b/support/camel-k-catalog/pom.xml index 5474515..c32d915 100644 --- a/support/camel-k-catalog/pom.xml +++ b/support/camel-k-catalog/pom.xml @@ -26,6 +26,10 @@ <modelVersion>4.0.0</modelVersion> <artifactId>camel-k-catalog</artifactId> + <properties> + <exclusion.list>qute</exclusion.list> + </properties> + <build> <defaultGoal>generate-resources</defaultGoal> <plugins> diff --git a/support/camel-k-maven-plugin/src/it/generate-catalog/pom.xml b/support/camel-k-maven-plugin/src/it/generate-catalog/pom.xml index 6d804cc..55d0792 100644 --- a/support/camel-k-maven-plugin/src/it/generate-catalog/pom.xml +++ b/support/camel-k-maven-plugin/src/it/generate-catalog/pom.xml @@ -32,6 +32,7 @@ <catalog.path>${project.basedir}</catalog.path> <catalog.runtime>quarkus</catalog.runtime> <catalog.file>catalog.yaml</catalog.file> + <exclusion.list>qute</exclusion.list> </properties> <build> diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java index 286ab1f..02c562d 100644 --- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java +++ b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java @@ -22,7 +22,10 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; +import java.util.List; import java.util.Locale; import java.util.ServiceLoader; import java.util.stream.StreamSupport; @@ -69,6 +72,9 @@ public class GenerateCatalogMojo extends AbstractMojo { @Parameter(property = "catalog.file", defaultValue = "camel-catalog-${runtime.version}.yaml") private String outputFile; + @Parameter(property = "exclusion.list") + private String exclusionList; + // ******************** // // ******************** @@ -148,10 +154,12 @@ public class GenerateCatalogMojo extends AbstractMojo { CamelCatalogSpec.Builder catalogSpec = new CamelCatalogSpec.Builder() .runtime(runtimeSpec.build()); + List<String> exclusions = createExclusionList(); + StreamSupport.stream(ServiceLoader.load(CatalogProcessor.class).spliterator(), false) .sorted(Comparator.comparingInt(CatalogProcessor::getOrder)) .filter(p -> p.accepts(catalog)) - .forEach(p -> p.process(project, catalog, catalogSpec)); + .forEach(p -> p.process(project, catalog, catalogSpec, exclusions)); ObjectMeta.Builder metadata = new ObjectMeta.Builder() .name(catalogName) @@ -208,4 +216,12 @@ public class GenerateCatalogMojo extends AbstractMojo { throw new MojoExecutionException("Exception while generating catalog", e); } } + + private List<String> createExclusionList() { + if (exclusionList != null) { + return Arrays.asList(exclusionList.split(",")); + } + + return Collections.emptyList(); + } } diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3x.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3x.java index 4aae669..68d996d 100644 --- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3x.java +++ b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3x.java @@ -94,10 +94,11 @@ public class CatalogProcessor3x implements CatalogProcessor { } @Override - public void process(MavenProject project, CamelCatalog catalog, CamelCatalogSpec.Builder specBuilder) { + public void process(MavenProject project, CamelCatalog catalog, CamelCatalogSpec.Builder specBuilder, + List<String> exclusions) { Map<String, CamelArtifact> artifacts = new TreeMap<>(); - processComponents(catalog, artifacts); + processComponents(catalog, artifacts, exclusions); processLanguages(catalog, artifacts); processDataFormats(catalog, artifacts); processLoaders(specBuilder); @@ -200,9 +201,11 @@ public class CatalogProcessor3x implements CatalogProcessor { ); } - private static void processComponents(CamelCatalog catalog, Map<String, CamelArtifact> artifacts) { + private static void processComponents(CamelCatalog catalog, Map<String, CamelArtifact> artifacts, List<String> exclusions) { final Set<String> elements = new TreeSet<>(catalog.findComponentNames()); + elements.removeAll(exclusions); + for (String name : elements) { String json = catalog.componentJSonSchema(name); CatalogComponentDefinition definition = CatalogSupport.unmarshallComponent(json); diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/CatalogProcessor.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/CatalogProcessor.java index f9571df..b7d908e 100644 --- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/CatalogProcessor.java +++ b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/support/CatalogProcessor.java @@ -16,6 +16,8 @@ */ package org.apache.camel.k.tooling.maven.support; +import java.util.List; + import org.apache.camel.catalog.CamelCatalog; import org.apache.camel.k.catalog.model.k8s.crd.CamelCatalogSpec; import org.apache.maven.project.MavenProject; @@ -33,7 +35,8 @@ public interface CatalogProcessor { boolean accepts(CamelCatalog catalog); - void process(MavenProject project, CamelCatalog catalog, CamelCatalogSpec.Builder specBuilder); + void process(MavenProject project, CamelCatalog catalog, CamelCatalogSpec.Builder specBuilder, + List<String> exclusions); default int getOrder() { return LOWEST; diff --git a/support/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3Test.java b/support/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3Test.java index 608508c..96ac3bb 100644 --- a/support/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3Test.java +++ b/support/camel-k-maven-plugin/src/test/java/org/apache/camel/k/tooling/maven/processors/CatalogProcessor3Test.java @@ -16,6 +16,7 @@ */ package org.apache.camel.k.tooling.maven.processors; +import java.util.Collections; import java.util.Map; import org.apache.camel.catalog.CamelCatalog; @@ -74,7 +75,7 @@ public class CatalogProcessor3Test extends AbstractCatalogProcessorTest { CamelCatalogSpec.Builder builder = new CamelCatalogSpec.Builder().runtime(runtime); assertThat(processor.accepts(catalog)).isTrue(); - processor.process(new MavenProject(), catalog, builder); + processor.process(new MavenProject(), catalog, builder, Collections.emptyList()); CamelCatalogSpec spec = builder.build(); Map<String, CamelArtifact> artifactMap = spec.getArtifacts(); @@ -96,7 +97,7 @@ public class CatalogProcessor3Test extends AbstractCatalogProcessorTest { CamelCatalogSpec.Builder builder = new CamelCatalogSpec.Builder().runtime(runtime); assertThat(processor.accepts(catalog)).isTrue(); - processor.process(new MavenProject(), catalog, builder); + processor.process(new MavenProject(), catalog, builder, Collections.emptyList()); CamelCatalogSpec spec = builder.build(); Map<String, CamelArtifact> artifactMap = spec.getArtifacts();
