This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2f6bdfd24f496afa8ae9f2877533c64c84bfd28e Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Dec 22 09:28:51 2021 +0100 CAMEL-17194: endpointdsl - Prepare for generate only once during project build. --- .../apache/camel/maven/packaging/ComponentDslMojo.java | 15 +++------------ .../apache/camel/maven/packaging/EndpointDslMojo.java | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ComponentDslMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ComponentDslMojo.java index 33e9ce8..761c415a 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ComponentDslMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ComponentDslMojo.java @@ -22,10 +22,8 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Comparator; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.TreeSet; -import java.util.stream.Collectors; import org.apache.camel.maven.packaging.dsl.component.ComponentDslBuilderFactoryGenerator; import org.apache.camel.maven.packaging.dsl.component.ComponentsBuilderFactoryGenerator; @@ -142,14 +140,10 @@ public class ComponentDslMojo extends AbstractGeneratorMojo { executeComponent(models); } - private void executeComponent(List<ComponentModel> allModels) throws MojoExecutionException, MojoFailureException { + private void executeComponent(List<ComponentModel> allModels) throws MojoFailureException { if (!allModels.isEmpty()) { getLog().debug("Found " + allModels.size() + " components"); - // Group the models by implementing classes - Map<String, List<ComponentModel>> grModels - = allModels.stream().collect(Collectors.groupingBy(ComponentModel::getJavaType)); - // load license header try (InputStream is = getClass().getClassLoader().getResourceAsStream("license-header-java.txt")) { this.licenseHeader = loadText(is); @@ -157,11 +151,8 @@ public class ComponentDslMojo extends AbstractGeneratorMojo { throw new MojoFailureException("Error loading license-header-java.txt file", e); } - for (List<ComponentModel> compModels : grModels.values()) { - for (ComponentModel model : compModels) { - // if more than one, we have a component class with multiple components aliases - createComponentDsl(model); - } + for (ComponentModel model : allModels) { + createComponentDsl(model); } } } diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java index 4f6da63..1fb1a0e 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java @@ -150,7 +150,6 @@ public class EndpointDslMojo extends AbstractGeneratorMojo { BaseModel<?> model = JsonMapper.generateModel(file.toPath()); models.add((ComponentModel) model); } - models.sort((o1, o2) -> o1.getScheme().compareToIgnoreCase(o2.getScheme())); // generate component endpoint DSL files and write them executeComponent(models); @@ -172,8 +171,20 @@ public class EndpointDslMojo extends AbstractGeneratorMojo { } for (List<ComponentModel> compModels : grModels.values()) { - ComponentModel model = compModels.get(0); // They should be equivalent - List<String> aliases = compModels.stream().map(ComponentModel::getScheme).sorted().collect(Collectors.toList()); + // if there are alias then we need to sort scheme according to the alternative schemes position + if (compModels.size() > 1) { + compModels.sort((o1, o2) -> { + String s1 = o1.getScheme(); + String s2 = o2.getScheme(); + String as = o1.getAlternativeSchemes(); + int i1 = as.indexOf(s1); + int i2 = as.indexOf(s2); + return Integer.compare(i1, i2); + }); + } + + ComponentModel model = compModels.get(0); // master component + List<String> aliases = compModels.stream().map(ComponentModel::getScheme).collect(Collectors.toList()); String overrideComponentName = null; if (aliases.size() > 1) {