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/21 15:35:39 UTC

[camel] 05/08: 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 f80554b6bc361d7bc29e7827d69f9a680966ca26
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Dec 21 15:58:09 2021 +0100

    CAMEL-17194: endpointdsl - Prepare for generate only once during project build.
---
 .../camel/maven/packaging/EndpointDslMojo.java     | 40 +++++++++++-----------
 1 file changed, 20 insertions(+), 20 deletions(-)

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 e3a68cd..c092417 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
@@ -21,22 +21,18 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.LineNumberReader;
 import java.io.StringReader;
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 import javax.annotation.Generated;
 
@@ -154,24 +150,28 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
             componentsMetadata = outputResourcesDir.toPath().resolve("metadata.json").toFile();
         }
 
-        Collection<Path> allJsonFiles = new TreeSet<>();
-        Stream.of(componentsDir.toPath())
-                .filter(dir -> !"target".equals(dir.getFileName().toString()))
-                .flatMap(p -> getComponentPath(p).stream())
-                .filter(dir -> Files.isDirectory(dir.resolve("src")))
-                .map(p -> p.resolve("target/classes"))
-                .flatMap(PackageHelper::walk).forEach(p -> {
+        List<ComponentModel> models = new ArrayList<>();
+
+        for (File dir : componentsDir.listFiles()) {
+            List<Path> subs = getComponentPath(dir.toPath());
+            for (Path sub : subs) {
+                sub = sub.resolve("src/generated/resources/");
+                PackageHelper.walk(sub).forEach(p -> {
                     String f = p.getFileName().toString();
                     if (f.endsWith(PackageHelper.JSON_SUFIX)) {
-                        allJsonFiles.add(p);
+                        try {
+                            BaseModel<?> model = JsonMapper.generateModel(p);
+                            if (model instanceof ComponentModel) {
+                                models.add((ComponentModel) model);
+                            }
+                        } catch (Exception e) {
+                            // ignore as its not a camel model
+                        }
                     }
                 });
-        final Map<Path, BaseModel<?>> allModels
-                = allJsonFiles.stream().collect(Collectors.toMap(p -> p, JsonMapper::generateModel));
-        Set<ComponentModel> models = allJsonFiles.stream()
-                .filter(p -> allModels.get(p) instanceof ComponentModel)
-                .map(p -> (ComponentModel) allModels.get(p))
-                .collect(Collectors.toCollection(TreeSet::new));
+            }
+        }
+        Collections.sort(models, (o1, o2) -> o1.getScheme().compareToIgnoreCase(o2.getScheme()));
 
         // generate component endpoint DSL files and write them
         Lock lock = LOCKS.computeIfAbsent(root, d -> new ReentrantLock());
@@ -254,7 +254,7 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
         }
     }
 
-    private void executeComponent(Set<ComponentModel> allModels) throws MojoFailureException {
+    private void executeComponent(List<ComponentModel> allModels) throws MojoFailureException {
         if (!allModels.isEmpty()) {
             getLog().debug("Found " + allModels.size() + " components");
 
@@ -953,7 +953,7 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
         desc += "\n";
         desc += "\nCategory: " + model.getLabel();
         desc += "\nSince: " + model.getFirstVersionShort();
-        desc += "\nMaven coordinates: " + project.getGroupId() + ":" + project.getArtifactId();
+        desc += "\nMaven coordinates: " + model.getGroupId() + ":" + model.getArtifactId();
 
         // include javadoc for all path parameters and mark which are required
         desc += "\n";