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 <[email protected]> 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 << 2</code> */ + public static final int TEST_STATIC_FINAL_FIELD_0 = 1 << 2; + + /** Constant <code>TEST_STATIC_FINAL_FIELD_1=2 >> 1</code> */ + public static final int TEST_STATIC_FINAL_FIELD_1 = 2 >> 1; + + /** Constant <code>TEST_STATIC_FINAL_FIELD_2="<>?"</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")
