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 2020/12/14 19:06:49 UTC

[camel] 01/02: CAMEL-15946: Fix endpoint and component dsl to output source with valid javadoc that needs to be XML escaped.

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

davsclaus pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 3633ff1bb8390622dc582fdfa475a7aa334a8270
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Dec 14 19:04:13 2020 +0100

    CAMEL-15946: Fix endpoint and component dsl to output source with valid javadoc that needs to be XML escaped.
---
 .../dsl/component/ComponentDslBuilderFactoryGenerator.java    |  5 ++++-
 .../dsl/component/ComponentDslInnerBuilderGenerator.java      | 11 +++++++----
 .../dsl/component/ComponentsBuilderFactoryGenerator.java      |  6 +++++-
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentDslBuilderFactoryGenerator.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentDslBuilderFactoryGenerator.java
index 6640ba1..05d22d3 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentDslBuilderFactoryGenerator.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentDslBuilderFactoryGenerator.java
@@ -138,6 +138,9 @@ public final class ComponentDslBuilderFactoryGenerator {
             method.addAnnotation(Deprecated.class);
         }
 
-        method.getJavaDoc().setFullText(DslHelper.getMainDescriptionWithoutPathOptions(componentModel));
+        String doc = DslHelper.getMainDescriptionWithoutPathOptions(componentModel);
+        // must xml encode description as in some rare cases it contains & chars which is invalid javadoc
+        doc = JavadocHelper.xmlEncode(doc);
+        method.getJavaDoc().setText(doc);
     }
 }
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentDslInnerBuilderGenerator.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentDslInnerBuilderGenerator.java
index 5271019..dbb3db1 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentDslInnerBuilderGenerator.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentDslInnerBuilderGenerator.java
@@ -18,6 +18,7 @@ package org.apache.camel.maven.packaging.dsl.component;
 
 import org.apache.camel.maven.packaging.dsl.DslHelper;
 import org.apache.camel.tooling.model.ComponentModel;
+import org.apache.camel.tooling.util.JavadocHelper;
 import org.apache.camel.tooling.util.srcgen.JavaClass;
 import org.apache.camel.tooling.util.srcgen.Method;
 import org.apache.commons.lang3.StringUtils;
@@ -81,24 +82,26 @@ public final class ComponentDslInnerBuilderGenerator {
             if (componentOptionModel.isDeprecated()) {
                 method.addAnnotation(Deprecated.class);
             }
-            method.getJavaDoc().setFullText(generateOptionDescription(componentOptionModel));
+            method.getJavaDoc().setText(generateOptionDescription(componentOptionModel));
         });
     }
 
     private String generateOptionDescription(final ComponentModel.ComponentOptionModel componentOptionModel) {
-        String desc = componentOptionModel.getDescription();
+        String desc = JavadocHelper.xmlEncode(componentOptionModel.getDescription());
         if (!desc.endsWith(".")) {
             desc += ".";
         }
         desc += "\n";
-        desc += "\nThe option is a: <code>" + componentOptionModel.getJavaType() + "</code> type.";
+        desc += "\nThe option is a: <code>" + JavadocHelper.xmlEncode(componentOptionModel.getJavaType()) + "</code> type.";
         desc += "\n";
         if ("parameter".equals(componentOptionModel.getKind()) && componentOptionModel.isRequired()) {
             desc += "\nRequired: true";
         }
         // include default value (if any)
         if (componentOptionModel.getDefaultValue() != null) {
-            desc += "\nDefault: " + componentOptionModel.getDefaultValue();
+            // must xml encode description as in some rare cases it contains & chars which is invalid javadoc
+            String text = JavadocHelper.xmlEncode(componentOptionModel.getDefaultValue().toString());
+            desc += "\nDefault: " + text;
         }
         desc += "\nGroup: " + componentOptionModel.getGroup();
 
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentsBuilderFactoryGenerator.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentsBuilderFactoryGenerator.java
index 64ef599..f420e3d 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentsBuilderFactoryGenerator.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/dsl/component/ComponentsBuilderFactoryGenerator.java
@@ -25,6 +25,7 @@ import org.apache.camel.maven.packaging.AbstractGeneratorMojo;
 import org.apache.camel.maven.packaging.ComponentDslMojo;
 import org.apache.camel.maven.packaging.dsl.DslHelper;
 import org.apache.camel.tooling.model.ComponentModel;
+import org.apache.camel.tooling.util.JavadocHelper;
 import org.apache.camel.tooling.util.srcgen.JavaClass;
 import org.apache.camel.tooling.util.srcgen.Method;
 
@@ -121,7 +122,10 @@ public final class ComponentsBuilderFactoryGenerator {
                 componentEntryMethod.addAnnotation(Deprecated.class);
             }
 
-            componentEntryMethod.getJavaDoc().setFullText(DslHelper.getMainDescriptionWithoutPathOptions(componentModel));
+            String doc = DslHelper.getMainDescriptionWithoutPathOptions(componentModel);
+            // must xml encode description as in some rare cases it contains & chars which is invalid javadoc
+            doc = JavadocHelper.xmlEncode(doc);
+            componentEntryMethod.getJavaDoc().setText(doc);
         });
     }
 }