You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2021/04/24 11:20:52 UTC

[maven-javadoc-plugin] 01/03: The fix operation wrongly generate illegal javadoc for static final fields.

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

rfscholte pushed a commit to branch MJAVADOC-662
in repository https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git

commit 189fc54cdf173d0bdd36cc1cbde63b83280211da
Author: XenoAmess <xe...@gmail.com>
AuthorDate: Fri Aug 28 12:01:18 2020 +0800

    The fix operation wrongly generate illegal javadoc for static final fields.
---
 .../maven/plugins/javadoc/AbstractFixJavadocMojo.java     |  7 ++++---
 .../expected/src/main/java/fix/test/ClassWithJavadoc.java | 15 +++++++++++++++
 .../src/main/java/fix/test/ClassWithNoJavadoc.java        |  9 +++++++++
 .../fix-test/src/main/java/fix/test/ClassWithJavadoc.java | 15 +++++++++++++++
 .../src/main/java/fix/test/ClassWithNoJavadoc.java        |  6 ++++++
 5 files changed, 49 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java b/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java
index 1d98ada..c6e31e0 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java
@@ -39,6 +39,7 @@ import com.thoughtworks.qdox.parser.ParseException;
 import com.thoughtworks.qdox.type.TypeResolver;
 
 import org.apache.commons.lang3.ClassUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -1381,7 +1382,7 @@ public abstract class AbstractFixJavadocMojo
                 Character.TYPE.toString() ) )
             {
                 sb.append( "=" );
-                sb.append( field.getInitializationExpression().trim() );
+                sb.append( StringEscapeUtils.escapeHtml4( field.getInitializationExpression().trim() ) );
             }
 
             if ( qualifiedName.equals( String.class.getName() ) )
@@ -1412,11 +1413,11 @@ public abstract class AbstractFixJavadocMojo
                 // CHECKSTYLE_OFF: MagicNumber
                 if ( value.length() < 40 )
                 {
-                    sb.append( value.toString() ).append( "\"" );
+                    sb.append( StringEscapeUtils.escapeHtml4( value.toString() ) ).append( "\"" );
                 }
                 else
                 {
-                    sb.append( value.toString(), 0, 39 ).append( "\"{trunked}" );
+                    sb.append( StringEscapeUtils.escapeHtml4( value.toString() ), 0, 39 ).append( "\"{trunked}" );
                 }
                 // CHECKSTYLE_ON: MagicNumber
             }
diff --git a/src/test/resources/unit/fix-test/expected/src/main/java/fix/test/ClassWithJavadoc.java b/src/test/resources/unit/fix-test/expected/src/main/java/fix/test/ClassWithJavadoc.java
index 174992f..0b5a374 100644
--- a/src/test/resources/unit/fix-test/expected/src/main/java/fix/test/ClassWithJavadoc.java
+++ b/src/test/resources/unit/fix-test/expected/src/main/java/fix/test/ClassWithJavadoc.java
@@ -451,6 +451,21 @@ public class ClassWithJavadoc
     {
         throw new Exception();
     }
+
+    /**
+     * to test if it will handle static final field correctly.
+     */
+    public static final int TEST_STATIC_FINAL_FIELD_0 = 1 << 2;
+
+    /**
+     * to test if it will handle static final field correctly.
+     */
+    public static final int TEST_STATIC_FINAL_FIELD_1 = 2 >> 1;
+
+    /**
+     * to test if it will handle static final field correctly.
+     */
+    public static final String TEST_STATIC_FINAL_FIELD_2 = "<>?";
 }
 
 /**
diff --git a/src/test/resources/unit/fix-test/expected/src/main/java/fix/test/ClassWithNoJavadoc.java b/src/test/resources/unit/fix-test/expected/src/main/java/fix/test/ClassWithNoJavadoc.java
index e2ff6a9..44d869e 100644
--- a/src/test/resources/unit/fix-test/expected/src/main/java/fix/test/ClassWithNoJavadoc.java
+++ b/src/test/resources/unit/fix-test/expected/src/main/java/fix/test/ClassWithNoJavadoc.java
@@ -267,6 +267,15 @@ public class ClassWithNoJavadoc
     {
         throw new Exception();
     }
+
+    /** Constant <code>TEST_STATIC_FINAL_FIELD_0=1 &lt;&lt; 2</code> */
+    public static final int TEST_STATIC_FINAL_FIELD_0 = 1 << 2;
+
+    /** Constant <code>TEST_STATIC_FINAL_FIELD_1=2 &gt;&gt; 1</code> */
+    public static final int TEST_STATIC_FINAL_FIELD_1 = 2 >> 1;
+
+    /** Constant <code>TEST_STATIC_FINAL_FIELD_2="&lt;&gt;?"</code> */
+    public static final String TEST_STATIC_FINAL_FIELD_2 = "<>?";
 }
 
 @SuppressWarnings("SameReturnValue")
diff --git a/src/test/resources/unit/fix-test/src/main/java/fix/test/ClassWithJavadoc.java b/src/test/resources/unit/fix-test/src/main/java/fix/test/ClassWithJavadoc.java
index f5c2f96..ab0d445 100644
--- a/src/test/resources/unit/fix-test/src/main/java/fix/test/ClassWithJavadoc.java
+++ b/src/test/resources/unit/fix-test/src/main/java/fix/test/ClassWithJavadoc.java
@@ -414,6 +414,21 @@ public class ClassWithJavadoc
     {
         throw new Exception();
     }
+
+    /**
+     * to test if it will handle static final field correctly.
+     */
+    public static final int TEST_STATIC_FINAL_FIELD_0 = 1 << 2;
+
+    /**
+     * to test if it will handle static final field correctly.
+     */
+    public static final int TEST_STATIC_FINAL_FIELD_1 = 2 >> 1;
+
+    /**
+     * to test if it will handle static final field correctly.
+     */
+    public static final String TEST_STATIC_FINAL_FIELD_2 = "<>?";
 }
 
 /**
diff --git a/src/test/resources/unit/fix-test/src/main/java/fix/test/ClassWithNoJavadoc.java b/src/test/resources/unit/fix-test/src/main/java/fix/test/ClassWithNoJavadoc.java
index fa4421c..5fddac7 100644
--- a/src/test/resources/unit/fix-test/src/main/java/fix/test/ClassWithNoJavadoc.java
+++ b/src/test/resources/unit/fix-test/src/main/java/fix/test/ClassWithNoJavadoc.java
@@ -170,6 +170,12 @@ public class ClassWithNoJavadoc
     {
         throw new Exception();
     }
+
+    public static final int TEST_STATIC_FINAL_FIELD_0 = 1 << 2;
+
+    public static final int TEST_STATIC_FINAL_FIELD_1 = 2 >> 1;
+
+    public static final String TEST_STATIC_FINAL_FIELD_2 = "<>?";
 }
 
 @SuppressWarnings("SameReturnValue")