You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/12/22 08:36:27 UTC

[camel] 03/04: CAMEL-17194: endpointdsl - Prepare for generate only once during project build.

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 <cl...@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) {