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

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

commit 8f321cc5d8549f34722a55015673651f8f407a57
Author: Claus Ibsen <claus.ib...@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);
         });
     }
 }

Reply via email to