yaml-loader: allow to blacklist definitions
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml b/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
index 1f8d67f..199a2d7 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
@@ -145,6 +145,20 @@
<goals>
<goal>generate-yaml-loader-support-classes</goal>
</goals>
+ <configuration>
+ <blacklistedDefinitions>
+ <blacklistedDefinition>org.apache.camel.model.Resilience4jConfigurationDefinition</blacklistedDefinition>
+ <blacklistedDefinition>org.apache.camel.model.HystrixConfigurationDefinition</blacklistedDefinition>
+ <blacklistedDefinition>org.apache.camel.model.OnFallbackDefinition</blacklistedDefinition>
+ <blacklistedDefinition>org.apache.camel.model.InOnlyDefinition</blacklistedDefinition>
+ <blacklistedDefinition>org.apache.camel.model.InOutDefinition</blacklistedDefinition>
+ <blacklistedDefinition>org.apache.camel.model.OtherwiseDefinition</blacklistedDefinition>
+ <blacklistedDefinition>org.apache.camel.model.WhenDefinition</blacklistedDefinition>
+ <blacklistedDefinition>org.apache.camel.model.config.StreamResequencerConfig</blacklistedDefinition>
+ <blacklistedDefinition>org.apache.camel.model.config.BatchResequencerConfig</blacklistedDefinition>
+ <blacklistedDefinition>org.apache.camel.model.loadbalancer/**</blacklistedDefinition>
+ </blacklistedDefinitions>
+ </configuration>
</execution>
</executions>
</plugin>
diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java
index 3982257..91d7cc5 100644
--- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java
+++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateYamlLoaderSupportClasses.java
@@ -21,6 +21,7 @@
import java.nio.file.Paths;
import java.util.Comparator;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import javax.lang.model.element.Modifier;
@@ -33,9 +34,11 @@
import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.TypeSpec;
+import org.apache.camel.util.AntPathMatcher;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.jboss.jandex.AnnotationInstance;
import org.jboss.jandex.AnnotationValue;
@@ -49,6 +52,9 @@
threadSafe = true,
requiresProject = false)
public class GenerateYamlLoaderSupportClasses extends GenerateYamlSupport {
+ @Parameter
+ protected List<String> blacklistedDefinitions;
+
@Override
public void execute() throws MojoFailureException {
try {
@@ -195,27 +201,14 @@
AnnotationValue label = meta.value("label");
if (name != null && label != null) {
- // skip known definitions for which there is a custom
- // implementation
- switch (i.name().toString()) {
- case "org.apache.camel.model.Resilience4jConfigurationDefinition":
- case "org.apache.camel.model.HystrixConfigurationDefinition":
- case "org.apache.camel.model.config.StreamResequencerConfig":
- case "org.apache.camel.model.config.BatchResequencerConfig":
- case "org.apache.camel.model.OnFallbackDefinition":
- case "org.apache.camel.model.InOnlyDefinition":
- case "org.apache.camel.model.InOutDefinition":
- case "org.apache.camel.model.OtherwiseDefinition":
- case "org.apache.camel.model.WhenDefinition":
- return;
- default:
- break;
- }
- switch (i.name().prefix().toString()) {
- case "org.apache.camel.model.loadbalancer":
- return;
- default:
- break;
+
+ if (blacklistedDefinitions != null) {
+ for (String blacklistedDefinition: blacklistedDefinitions) {
+ if (AntPathMatcher.INSTANCE.match(blacklistedDefinition.replace('.', '/'), i.name().toString('/'))) {
+ getLog().debug("Skipping definition: " + i.name().toString());
+ return;
+ }
+ }
}
Set<String> labels = Set.of(label.asString().split(",", -1));