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

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

commit caf8b59f6daef7fba4579a30a88c2c0736eb48b6
Author: rfscholte <rfscho...@apache.org>
AuthorDate: Fri Dec 28 17:15:38 2018 +0100

    [MJAVADOC-452] Support duplicate @param entries
---
 .../plugins/javadoc/AbstractFixJavadocMojo.java    | 44 +++++++++++-----------
 1 file changed, 23 insertions(+), 21 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 f8fac33..5b11cb9 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractFixJavadocMojo.java
@@ -74,6 +74,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
@@ -81,6 +82,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -1958,7 +1960,7 @@ public abstract class AbstractFixJavadocMojo
                 switch ( docletTag.getName() ) 
                 {
                     case PARAM_TAG:
-                        javaEntityTags.putJavadocParamTag( paramName, 
originalJavadocTag );
+                        javaEntityTags.putJavadocParamTag( paramName, 
docletTag.getValue(), originalJavadocTag );
                         break;
                     case RETURN_TAG:
                         javaEntityTags.setJavadocReturnTag( originalJavadocTag 
);
@@ -2005,7 +2007,7 @@ public abstract class AbstractFixJavadocMojo
 
                 if ( docletTag.getName().equals( PARAM_TAG ) )
                 {
-                    writeParamTag( sb, javaExecutable, javaEntityTags, params 
);
+                    writeParamTag( sb, javaExecutable, javaEntityTags, 
params.get( 0 ), docletTag.getValue() );
                 }
                 else if ( docletTag.getName().equals( RETURN_TAG ) && 
javaExecutable instanceof JavaMethod )
                 {
@@ -2058,14 +2060,12 @@ public abstract class AbstractFixJavadocMojo
     }
 
     private void writeParamTag( final StringBuilder sb, final JavaExecutable 
javaExecutable,
-                                final JavaEntityTags javaEntityTags, 
List<String> params )
+                                final JavaEntityTags javaEntityTags, String 
paramName, String paramValue )
     {
-        String paramName = params.get( 0 );
-
         if ( !fixTag( PARAM_TAG ) )
         {
             // write original param tag if found
-            String originalJavadocTag = javaEntityTags.getJavadocParamTag( 
paramName );
+            String originalJavadocTag = javaEntityTags.getJavadocParamTag( 
paramValue );
             if ( originalJavadocTag != null )
             {
                 sb.append( originalJavadocTag );
@@ -2107,7 +2107,7 @@ public abstract class AbstractFixJavadocMojo
         }
         else
         {
-            String originalJavadocTag = javaEntityTags.getJavadocParamTag( 
paramName );
+            String originalJavadocTag = javaEntityTags.getJavadocParamTag( 
paramValue );
             if ( originalJavadocTag != null )
             {
                 sb.append( originalJavadocTag );
@@ -2258,7 +2258,7 @@ public abstract class AbstractFixJavadocMojo
                 {
                     for ( JavaParameter javaParameter : 
javaExecutable.getParameters() )
                     {
-                        if ( javaEntityTags.getJavadocParamTag( 
javaParameter.getName(), true ) == null )
+                        if ( !javaEntityTags.hasJavadocParamTag( 
javaParameter.getName() ) )
                         {
                             appendDefaultParamTag( sb, indent, javaParameter );
                         }
@@ -2269,7 +2269,7 @@ public abstract class AbstractFixJavadocMojo
                 {
                     for ( JavaTypeVariable<JavaGenericDeclaration> typeParam : 
javaExecutable.getTypeParameters() )
                     {
-                        if ( javaEntityTags.getJavadocParamTag( "<" + 
typeParam.getName() + ">", true ) == null )
+                        if ( !javaEntityTags.hasJavadocParamTag( "<" + 
typeParam.getName() + ">" ) )
                         {
                             appendDefaultParamTag( sb, indent, typeParam );
                         }
@@ -3668,6 +3668,8 @@ public abstract class AbstractFixJavadocMojo
          * Map with java parameter as key and original Javadoc lines as values.
          */
         private Map<String, String> tagParams;
+        
+        private Set<String> documentedParams = new HashSet<>();
 
         /**
          * Original javadoc lines.
@@ -3714,27 +3716,27 @@ public abstract class AbstractFixJavadocMojo
             return unknownsTags;
         }
 
-        public void putJavadocParamTag( String paramName, String 
originalJavadocTag )
-        {
-            tagParams.put( paramName, originalJavadocTag );
-        }
-
-        public String getJavadocParamTag( String paramName )
+        public void putJavadocParamTag( String paramName, String paramValue, 
String originalJavadocTag )
         {
-            return getJavadocParamTag( paramName, false );
+            documentedParams.add( paramName );
+            tagParams.put( paramValue, originalJavadocTag );
         }
 
-        public String getJavadocParamTag( String paramName, boolean nullable )
+        public String getJavadocParamTag( String paramValue )
         {
-            String originalJavadocTag = tagParams.get( paramName );
-            if ( !nullable && originalJavadocTag == null && 
getLog().isWarnEnabled() )
+            String originalJavadocTag = tagParams.get( paramValue );
+            if ( originalJavadocTag == null && getLog().isWarnEnabled() )
             {
-                getLog().warn( getMessage( paramName, 
"javaEntityTags.tagParams" ) );
+                getLog().warn( getMessage( paramValue, 
"javaEntityTags.tagParams" ) );
             }
-
             return originalJavadocTag;
         }
 
+        public boolean hasJavadocParamTag( String paramName )
+        {
+            return documentedParams.contains( paramName );
+        }
+
         public void putJavadocThrowsTag( String paramName, String 
originalJavadocTag )
         {
             tagThrows.put( paramName, originalJavadocTag );

Reply via email to