You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2022/04/25 17:07:23 UTC

[camel] branch main updated (e85ca506c17 -> c3c87febfdb)

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


    from e85ca506c17 CAMEL-17894: avoid unnecessarily creating an arraylist
     new 7d02ac670ec CAMEL-17894: the main description is several bytes large
     new 9f6417e5fb5 CAMEL-17894: move some of the JavaDoc code to their own utility class
     new c3c87febfdb CAMEL-17894: avoid a few unnecessary calls to StringBuffer append

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../camel/maven/packaging/EndpointDslMojo.java     | 100 +++---------------
 .../maven/packaging/generics/JavadocUtil.java      | 113 +++++++++++++++++++++
 2 files changed, 125 insertions(+), 88 deletions(-)
 create mode 100644 tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/JavadocUtil.java


[camel] 02/03: CAMEL-17894: move some of the JavaDoc code to their own utility class

Posted by or...@apache.org.
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.git

commit 9f6417e5fb55a690dd639c0251aa5a43011f22dc
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Apr 25 17:36:31 2022 +0200

    CAMEL-17894: move some of the JavaDoc code to their own utility class
---
 .../camel/maven/packaging/EndpointDslMojo.java     |  97 ++---------------
 .../maven/packaging/generics/JavadocUtil.java      | 116 +++++++++++++++++++++
 2 files changed, 127 insertions(+), 86 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 c4d1c6a3276..fbe6a7347ef 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
@@ -20,8 +20,6 @@ import java.io.File;
 import java.io.FileFilter;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.LineNumberReader;
-import java.io.StringReader;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -34,6 +32,7 @@ import java.util.stream.Collectors;
 import javax.annotation.Generated;
 
 import org.apache.camel.maven.packaging.dsl.DslHelper;
+import org.apache.camel.maven.packaging.generics.JavadocUtil;
 import org.apache.camel.tooling.model.BaseModel;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.ComponentModel.EndpointOptionModel;
@@ -52,13 +51,14 @@ import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ASTNode;
 import org.jboss.forge.roaster.model.Type;
 import org.jboss.forge.roaster.model.source.JavaClassSource;
 import org.jboss.forge.roaster.model.source.MethodSource;
 import org.jboss.forge.roaster.model.source.ParameterSource;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
+import static org.apache.camel.maven.packaging.generics.JavadocUtil.getMainDescription;
+import static org.apache.camel.maven.packaging.generics.JavadocUtil.pathParameterJavaDoc;
 import static org.apache.camel.maven.packaging.generics.PackagePluginUtils.joinHeaderAndSource;
 import static org.apache.camel.tooling.util.PackageHelper.findCamelDirectory;
 import static org.apache.camel.tooling.util.PackageHelper.loadText;
@@ -379,12 +379,14 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
         boolean firstAlias = true;
 
         for (ComponentModel componentModel : aliases) {
-            String desc = getMainDescription(componentModel);
-            String methodName = camelCaseLower(componentModel.getScheme());
+            final String desc = getMainDescription(componentModel);
+            final String methodName = camelCaseLower(componentModel.getScheme());
             Method method = doAddMethod(javaClass, builderClass, dslClass, componentModel, methodName);
             String javaDoc = desc;
+
             javaDoc += "\n\n@param path " + pathParameterJavaDoc(componentModel);
             javaDoc += "\n@return the dsl builder\n";
+
             method.getJavaDoc().setText(javaDoc);
             if (componentModel.isDeprecated()) {
                 method.addAnnotation(Deprecated.class);
@@ -409,6 +411,7 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
                         .setReturnType(new GenericType(loadClass(builderClass.getCanonicalName())))
                         .setDefault()
                         .setBodyF("return %s.%s(%s);", javaClass.getName(), "endpointBuilder", "componentName, path");
+
                 javaDoc = desc;
                 javaDoc += "\n\n@param componentName to use a custom component name for the endpoint instead of the default name";
                 javaDoc += "\n@param path " + pathParameterJavaDoc(componentModel);
@@ -728,15 +731,6 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
         return answer;
     }
 
-    private static String pathParameterJavaDoc(ComponentModel model) {
-        int pos = model.getSyntax().indexOf(':');
-        if (pos != -1) {
-            return model.getSyntax().substring(pos + 1);
-        } else {
-            return model.getSyntax();
-        }
-    }
-
     private boolean synchronizeEndpointBuilderFactoryInterface(List<File> factories) throws MojoFailureException {
         JavaClass javaClass = new JavaClass(getProjectClassLoader());
         javaClass.setPackage(endpointFactoriesPackageName);
@@ -828,7 +822,7 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
                                 method.addParameter(getQualifiedType(ps.getType()), ps.getName());
                             }
                         }
-                        String doc = extractJavaDoc(sourceCode, ms);
+                        String doc = JavadocUtil.extractJavaDoc(sourceCode, ms);
                         method.getJavaDoc().setFullText(doc);
                         if (ms.getAnnotation(Deprecated.class) != null) {
                             method.addAnnotation(Deprecated.class);
@@ -871,34 +865,9 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
         return val;
     }
 
+    @Deprecated
     protected static String extractJavaDoc(String sourceCode, MethodSource ms) throws IOException {
-        // the javadoc is mangled by roaster (sadly it does not preserve newlines and original formatting)
-        // so we need to load it from the original source file
-        Object internal = ms.getJavaDoc().getInternal();
-        if (internal instanceof ASTNode) {
-            int pos = ((ASTNode) internal).getStartPosition();
-            int len = ((ASTNode) internal).getLength();
-            if (pos > 0 && len > 0) {
-                String doc = sourceCode.substring(pos, pos + len);
-                LineNumberReader ln = new LineNumberReader(new StringReader(doc));
-                String line;
-                StringBuilder sb = new StringBuilder();
-                while ((line = ln.readLine()) != null) {
-                    line = line.trim();
-                    if (line.startsWith("/**") || line.startsWith("*/")) {
-                        continue;
-                    }
-                    if (line.startsWith("*")) {
-                        line = line.substring(1).trim();
-                    }
-                    sb.append(line);
-                    sb.append("\n");
-                }
-                doc = sb.toString();
-                return doc;
-            }
-        }
-        return null;
+        return JavadocUtil.extractJavaDoc(sourceCode, ms);
     }
 
     private List<File> loadAllComponentsDslEndpointFactoriesAsFile() {
@@ -934,50 +903,6 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
         return s.substring(0, i) + s.substring(i + 1, i + 2).toUpperCase() + s.substring(i + 2);
     }
 
-    private static String getMainDescription(ComponentModel model) {
-        StringBuilder descSb = new StringBuilder(512);
-
-        descSb.append(model.getTitle()).append(" (").append(model.getArtifactId()).append(")");
-        descSb.append("\n").append(model.getDescription());
-        descSb.append("\n");
-        descSb.append("\nCategory: ").append(model.getLabel());
-        descSb.append("\nSince: ").append(model.getFirstVersionShort());
-        descSb.append("\nMaven coordinates: ").append(model.getGroupId()).append(":").append(model.getArtifactId());
-
-        // include javadoc for all path parameters and mark which are required
-        descSb.append("\n");
-        descSb.append("\nSyntax: <code>").append(model.getSyntax()).append("</code>");
-        for (EndpointOptionModel option : model.getEndpointOptions()) {
-            if ("path".equals(option.getKind())) {
-                descSb.append("\n");
-                descSb.append("\nPath parameter: ").append(option.getName());
-                if (option.isRequired()) {
-                    descSb.append(" (required)");
-                }
-                if (option.isDeprecated()) {
-                    descSb.append(" <strong>deprecated</strong>");
-                }
-                descSb.append("\n").append(option.getDescription());
-                if (option.getDefaultValue() != null) {
-                    descSb.append("\nDefault value: ").append(option.getDefaultValue());
-                }
-                // TODO: default value note ?
-                if (option.getEnums() != null && !option.getEnums().isEmpty()) {
-                    descSb.append("\nThere are ").append(option.getEnums().size())
-                            .append(" enums and the value can be one of: ")
-                            .append(wrapEnumValues(option.getEnums()));
-                }
-            }
-        }
-
-        return descSb.toString();
-    }
-
-    private static String wrapEnumValues(List<String> enumValues) {
-        // comma to space so we can wrap words (which uses space)
-        return String.join(", ", enumValues);
-    }
-
     private String getComponentNameFromType(String type) {
         int pos = type.lastIndexOf('.');
         String name = type.substring(pos + 1).replace("Component", "");
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/JavadocUtil.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/JavadocUtil.java
new file mode 100644
index 00000000000..df855ceab09
--- /dev/null
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/JavadocUtil.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.maven.packaging.generics;
+
+import java.io.IOException;
+import java.io.LineNumberReader;
+import java.io.StringReader;
+import java.util.List;
+
+import org.apache.camel.tooling.model.ComponentModel;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ASTNode;
+import org.jboss.forge.roaster.model.source.MethodSource;
+
+public final class JavadocUtil {
+    private JavadocUtil() {
+
+    }
+
+    public static String getMainDescription(ComponentModel model) {
+        StringBuilder descSb = new StringBuilder(512);
+
+        descSb.append(model.getTitle()).append(" (").append(model.getArtifactId()).append(")");
+        descSb.append("\n").append(model.getDescription());
+        descSb.append("\n");
+        descSb.append("\nCategory: ").append(model.getLabel());
+        descSb.append("\nSince: ").append(model.getFirstVersionShort());
+        descSb.append("\nMaven coordinates: ").append(model.getGroupId()).append(":").append(model.getArtifactId());
+
+        // include javadoc for all path parameters and mark which are required
+        descSb.append("\n");
+        descSb.append("\nSyntax: <code>").append(model.getSyntax()).append("</code>");
+        for (ComponentModel.EndpointOptionModel option : model.getEndpointOptions()) {
+            if ("path".equals(option.getKind())) {
+                descSb.append("\n");
+                descSb.append("\nPath parameter: ").append(option.getName());
+                if (option.isRequired()) {
+                    descSb.append(" (required)");
+                }
+                if (option.isDeprecated()) {
+                    descSb.append(" <strong>deprecated</strong>");
+                }
+                descSb.append("\n").append(option.getDescription());
+                if (option.getDefaultValue() != null) {
+                    descSb.append("\nDefault value: ").append(option.getDefaultValue());
+                }
+                // TODO: default value note ?
+                if (option.getEnums() != null && !option.getEnums().isEmpty()) {
+                    descSb.append("\nThere are ").append(option.getEnums().size())
+                            .append(" enums and the value can be one of: ")
+                            .append(wrapEnumValues(option.getEnums()));
+                }
+            }
+        }
+
+        return descSb.toString();
+    }
+
+    private static String wrapEnumValues(List<String> enumValues) {
+        // comma to space so we can wrap words (which uses space)
+        return String.join(", ", enumValues);
+    }
+
+    public static String pathParameterJavaDoc(ComponentModel model) {
+        int pos = model.getSyntax().indexOf(':');
+        if (pos != -1) {
+            return model.getSyntax().substring(pos + 1);
+        } else {
+            return model.getSyntax();
+        }
+    }
+
+    public static String extractJavaDoc(String sourceCode, MethodSource ms) throws IOException {
+        // the javadoc is mangled by roaster (sadly it does not preserve newlines and original formatting)
+        // so we need to load it from the original source file
+        Object internal = ms.getJavaDoc().getInternal();
+        if (internal instanceof ASTNode) {
+            int pos = ((ASTNode) internal).getStartPosition();
+            int len = ((ASTNode) internal).getLength();
+            if (pos > 0 && len > 0) {
+                String doc = sourceCode.substring(pos, pos + len);
+                LineNumberReader ln = new LineNumberReader(new StringReader(doc));
+                String line;
+                StringBuilder sb = new StringBuilder();
+                while ((line = ln.readLine()) != null) {
+                    line = line.trim();
+                    if (line.startsWith("/**") || line.startsWith("*/")) {
+                        continue;
+                    }
+                    if (line.startsWith("*")) {
+                        line = line.substring(1).trim();
+                    }
+                    sb.append(line);
+                    sb.append("\n");
+                }
+                doc = sb.toString();
+                return doc;
+            }
+        }
+        return null;
+    }
+}


[camel] 01/03: CAMEL-17894: the main description is several bytes large

Posted by or...@apache.org.
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.git

commit 7d02ac670ec9dac64a06420ee00014ce60386f4b
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Apr 25 17:17:23 2022 +0200

    CAMEL-17894: the main description is several bytes large
    
    This adjusts the buffer so that it is less conservative with its size estimate
---
 .../main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java | 6 +++---
 1 file changed, 3 insertions(+), 3 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 fc320536204..c4d1c6a3276 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
@@ -934,8 +934,8 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
         return s.substring(0, i) + s.substring(i + 1, i + 2).toUpperCase() + s.substring(i + 2);
     }
 
-    private String getMainDescription(ComponentModel model) {
-        StringBuilder descSb = new StringBuilder();
+    private static String getMainDescription(ComponentModel model) {
+        StringBuilder descSb = new StringBuilder(512);
 
         descSb.append(model.getTitle()).append(" (").append(model.getArtifactId()).append(")");
         descSb.append("\n").append(model.getDescription());
@@ -973,7 +973,7 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
         return descSb.toString();
     }
 
-    private String wrapEnumValues(List<String> enumValues) {
+    private static String wrapEnumValues(List<String> enumValues) {
         // comma to space so we can wrap words (which uses space)
         return String.join(", ", enumValues);
     }


[camel] 03/03: CAMEL-17894: avoid a few unnecessary calls to StringBuffer append

Posted by or...@apache.org.
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.git

commit c3c87febfdbd172de3f72dbe4f59e1b9f34e9e64
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Mon Apr 25 17:43:26 2022 +0200

    CAMEL-17894: avoid a few unnecessary calls to StringBuffer append
---
 .../java/org/apache/camel/maven/packaging/EndpointDslMojo.java   | 3 +--
 .../org/apache/camel/maven/packaging/generics/JavadocUtil.java   | 9 +++------
 2 files changed, 4 insertions(+), 8 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 fbe6a7347ef..b857b49c94c 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
@@ -630,8 +630,7 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
         if (!baseDesc.endsWith(".")) {
             baseDescBuilder.append(".");
         }
-        baseDescBuilder.append("\n");
-        baseDescBuilder.append("@@REPLACE_ME@@");
+        baseDescBuilder.append("\n@@REPLACE_ME@@");
         if (option.isMultiValue()) {
             baseDescBuilder.append("\nThe option is multivalued, and you can use the ")
                     .append(option.getName())
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/JavadocUtil.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/JavadocUtil.java
index df855ceab09..c2942581126 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/JavadocUtil.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/generics/JavadocUtil.java
@@ -36,18 +36,15 @@ public final class JavadocUtil {
 
         descSb.append(model.getTitle()).append(" (").append(model.getArtifactId()).append(")");
         descSb.append("\n").append(model.getDescription());
-        descSb.append("\n");
-        descSb.append("\nCategory: ").append(model.getLabel());
+        descSb.append("\n\nCategory: ").append(model.getLabel());
         descSb.append("\nSince: ").append(model.getFirstVersionShort());
         descSb.append("\nMaven coordinates: ").append(model.getGroupId()).append(":").append(model.getArtifactId());
 
         // include javadoc for all path parameters and mark which are required
-        descSb.append("\n");
-        descSb.append("\nSyntax: <code>").append(model.getSyntax()).append("</code>");
+        descSb.append("\n\nSyntax: <code>").append(model.getSyntax()).append("</code>");
         for (ComponentModel.EndpointOptionModel option : model.getEndpointOptions()) {
             if ("path".equals(option.getKind())) {
-                descSb.append("\n");
-                descSb.append("\nPath parameter: ").append(option.getName());
+                descSb.append("\n\nPath parameter: ").append(option.getName());
                 if (option.isRequired()) {
                     descSb.append(" (required)");
                 }