Switch from List to Collection to make it easier to use Sets when preferred

git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1816235 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
index a720528..df24821 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
@@ -1977,7 +1977,7 @@
             throw new MavenReportException( "Failed to generate javadoc options file: " + e.getMessage(), e );

         }

 

-        List<String> sourcePaths = getSourcePaths();

+        Collection<String> sourcePaths = getSourcePaths();

         List<String> files = getFiles( sourcePaths );

         if ( !canGenerateReport( files ) )

         {

@@ -2180,11 +2180,11 @@
     /**

      * Method to get the files on the specified source paths

      *

-     * @param sourcePaths a List that contains the paths to the source files

+     * @param sourcePaths a Collection that contains the paths to the source files

      * @return a List that contains the specific path for every source file

      * @throws MavenReportException {@link MavenReportException}

      */

-    protected List<String> getFiles( List<String> sourcePaths )

+    protected List<String> getFiles( Collection<String> sourcePaths )

         throws MavenReportException

     {

         List<String> files = new ArrayList<>();

@@ -2207,14 +2207,14 @@
      * Method to get the source paths. If no source path is specified in the parameter, the compile source roots

      * of the project will be used.

      *

-     * @return a List of the project absolute source paths as <code>String</code>

+     * @return a Collection of the project absolute source paths as <code>String</code>

      * @throws MavenReportException {@link MavenReportException}

      * @see JavadocUtil#pruneDirs(MavenProject, List)

      */

-    protected List<String> getSourcePaths()

+    protected Collection<String> getSourcePaths()

         throws MavenReportException

     {

-        List<String> sourcePaths;

+        Collection<String> sourcePaths;

 

         if ( StringUtils.isEmpty( sourcepath ) )

         {

@@ -2235,7 +2235,7 @@
                 File javadocDir = getJavadocDirectory();

                 if ( javadocDir.exists() && javadocDir.isDirectory() )

                 {

-                    List<String> l = JavadocUtil.pruneDirs( project, Collections.singletonList(

+                    Collection<String> l = JavadocUtil.pruneDirs( project, Collections.singletonList(

                         getJavadocDirectory().getAbsolutePath() ) );

                     sourcePaths.addAll( l );

                 }

@@ -2273,7 +2273,7 @@
                             File javadocDir = new File( subProject.getBasedir(), javadocDirRelative );

                             if ( javadocDir.exists() && javadocDir.isDirectory() )

                             {

-                                List<String> l = JavadocUtil.pruneDirs( subProject, Collections.singletonList(

+                                Collection<String> l = JavadocUtil.pruneDirs( subProject, Collections.singletonList(

                                         javadocDir.getAbsolutePath() ) );

                                 sourcePaths.addAll( l );

                             }

@@ -2288,7 +2288,7 @@
             sourcePaths = JavadocUtil.pruneDirs( project, sourcePaths );

             if ( getJavadocDirectory() != null )

             {

-                List<String> l = JavadocUtil.pruneDirs( project, Collections.singletonList(

+                Collection<String> l = JavadocUtil.pruneDirs( project, Collections.singletonList(

                     getJavadocDirectory().getAbsolutePath() ) );

                 sourcePaths.addAll( l );

             }

@@ -2436,11 +2436,11 @@
      * Method to get the excluded source files from the javadoc and create the argument string

      * that will be included in the javadoc commandline execution.

      *

-     * @param sourcePaths the list of paths to the source files

+     * @param sourcePaths the collection of paths to the source files

      * @return a String that contains the exclude argument that will be used by javadoc

      * @throws MavenReportException

      */

-    private String getExcludedPackages( List<String> sourcePaths )

+    private String getExcludedPackages( Collection<String> sourcePaths )

         throws MavenReportException

     {

         List<String> excludedNames = null;

@@ -2471,7 +2471,7 @@
      *         string (colon (<code>:</code>) on Solaris or semi-colon (<code>;</code>) on Windows).

      * @see File#pathSeparator

      */

-    private String getSourcePath( List<String> sourcePaths )

+    private String getSourcePath( Collection<String> sourcePaths )

     {

         String sourcePath = null;

 

@@ -3049,7 +3049,7 @@
         throws MavenReportException

     {

         Set<TagletArtifact> tArtifacts = collectTagletArtifacts();

-        List<String> pathParts = new ArrayList<>();

+        Collection<String> pathParts = new ArrayList<>();

 

         for ( TagletArtifact tagletArtifact : tArtifacts )

         {

@@ -4284,7 +4284,7 @@
      * @param files       not null

      * @return the list of package names for files in the sourcePaths

      */

-    private List<String> getPackageNames( List<String> sourcePaths, List<String> files )

+    private List<String> getPackageNames( Collection<String> sourcePaths, List<String> files )

     {

         return getPackageNamesOrFilesWithUnnamedPackages( sourcePaths, files, true );

     }

@@ -4294,7 +4294,7 @@
      * @param files       not null

      * @return a list files with unnamed package names for files in the sourecPaths

      */

-    private List<String> getFilesWithUnnamedPackages( List<String> sourcePaths, List<String> files )

+    private List<String> getFilesWithUnnamedPackages( Collection<String> sourcePaths, List<String> files )

     {

         return getPackageNamesOrFilesWithUnnamedPackages( sourcePaths, files, false );

     }

@@ -4307,7 +4307,7 @@
      * @see #getFiles(List)

      * @see #getSourcePaths()

      */

-    private List<String> getPackageNamesOrFilesWithUnnamedPackages( List<String> sourcePaths, List<String> files,

+    private List<String> getPackageNamesOrFilesWithUnnamedPackages( Collection<String> sourcePaths, List<String> files,

                                                                     boolean onlyPackageName )

     {

         List<String> returnList = new ArrayList<>();

@@ -4624,7 +4624,7 @@
      * @throws MavenReportException if any

      * @see <a href="http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#javadocoptions">http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#javadocoptions</a>

      */

-    private void addJavadocOptions( List<String> arguments, List<String> sourcePaths )

+    private void addJavadocOptions( List<String> arguments, Collection<String> sourcePaths )

         throws MavenReportException

     {

         validateJavadocOptions();

diff --git a/src/main/java/org/apache/maven/plugins/javadoc/JavadocReport.java b/src/main/java/org/apache/maven/plugins/javadoc/JavadocReport.java
index 0274c89..3e8d01a 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/JavadocReport.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/JavadocReport.java
@@ -20,6 +20,7 @@
  */

 

 import java.io.File;

+import java.util.Collection;

 import java.util.List;

 import java.util.Locale;

 import java.util.ResourceBundle;

@@ -235,7 +236,7 @@
 

         if ( !this.isAggregator() || ( this.isAggregator() && this.project.isExecutionRoot() ) )

         {

-            List<String> sourcePaths;

+            Collection<String> sourcePaths;

             List<String> files;

             try

             {

diff --git a/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java b/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
index 5844d66..90c5e84 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
@@ -78,10 +78,12 @@
 import java.util.Arrays;

 import java.util.Collection;

 import java.util.Collections;

+import java.util.LinkedHashSet;

 import java.util.List;

 import java.util.Locale;

 import java.util.NoSuchElementException;

 import java.util.Properties;

+import java.util.Set;

 import java.util.StringTokenizer;

 import java.util.jar.JarEntry;

 import java.util.jar.JarInputStream;

@@ -112,12 +114,12 @@
      * directory <code>String</code> path.

      *

      * @param project the current Maven project not null

-     * @param dirs the list of <code>String</code> directories path that will be validated.

+     * @param dirs the collection of <code>String</code> directories path that will be validated.

      * @return a List of valid <code>String</code> directories absolute paths.

      */

-    public static List<String> pruneDirs( MavenProject project, List<String> dirs )

+    public static Collection<String> pruneDirs( MavenProject project, Collection<String> dirs )

     {

-        List<String> pruned = new ArrayList<>( dirs.size() );

+        Set<String> pruned = new LinkedHashSet<>( dirs.size() );

         for ( String dir : dirs )

         {

             if ( dir == null )

@@ -131,7 +133,7 @@
                 directory = new File( project.getBasedir(), directory.getPath() );

             }

 

-            if ( directory.isDirectory() && !pruned.contains( directory.getAbsolutePath() ) )

+            if ( directory.isDirectory() )

             {

                 pruned.add( directory.getAbsolutePath() );

             }

@@ -147,7 +149,7 @@
      * @param files the list of <code>String</code> files paths that will be validated.

      * @return a List of valid <code>File</code> objects.

      */

-    protected static List<String> pruneFiles( List<String> files )

+    protected static List<String> pruneFiles( Collection<String> files )

     {

         List<String> pruned = new ArrayList<>( files.size() );

         for ( String f : files )

@@ -191,7 +193,7 @@
      * @param excludedPackages the package names to be excluded in the javadoc

      * @return a List of the source files to be excluded in the generated javadoc

      */

-    protected static List<String> getExcludedNames( List<String> sourcePaths, String[] subpackagesList,

+    protected static List<String> getExcludedNames( Collection<String> sourcePaths, String[] subpackagesList,

                                                     String[] excludedPackages )

     {

         List<String> excludedNames = new ArrayList<>();

diff --git a/src/main/java/org/apache/maven/plugins/javadoc/resolver/ResourceResolver.java b/src/main/java/org/apache/maven/plugins/javadoc/resolver/ResourceResolver.java
index c24c62b..e47aa99 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/resolver/ResourceResolver.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/resolver/ResourceResolver.java
@@ -26,6 +26,7 @@
 import java.io.IOException;

 import java.util.ArrayList;

 import java.util.Arrays;

+import java.util.Collection;

 import java.util.HashMap;

 import java.util.LinkedHashSet;

 import java.util.List;

@@ -39,11 +40,11 @@
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;

 import org.apache.maven.artifact.resolver.ArtifactResolutionException;

 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;

-import org.apache.maven.plugins.javadoc.options.JavadocOptions;

-import org.apache.maven.plugins.javadoc.options.io.xpp3.JavadocOptionsXpp3Reader;

 import org.apache.maven.plugins.javadoc.AbstractJavadocMojo;

 import org.apache.maven.plugins.javadoc.JavadocUtil;

 import org.apache.maven.plugins.javadoc.ResourcesBundleMojo;

+import org.apache.maven.plugins.javadoc.options.JavadocOptions;

+import org.apache.maven.plugins.javadoc.options.io.xpp3.JavadocOptionsXpp3Reader;

 import org.apache.maven.project.MavenProject;

 import org.apache.maven.shared.artifact.filter.resolve.transform.ArtifactIncludeFilterTransformer;

 import org.apache.maven.shared.artifact.resolve.ArtifactResolver;

@@ -439,7 +440,7 @@
         return result;

     }

 

-    private static List<String> resolveFromProject( final SourceResolverConfig config,

+    private static Collection<String> resolveFromProject( final SourceResolverConfig config,

                                                     final MavenProject reactorProject, final Artifact artifact )

     {

         final List<String> dirs = new ArrayList<>();

diff --git a/src/test/java/org/apache/maven/plugins/javadoc/JavadocJarTest.java b/src/test/java/org/apache/maven/plugins/javadoc/JavadocJarTest.java
index ecff198..2ecd5d5 100644
--- a/src/test/java/org/apache/maven/plugins/javadoc/JavadocJarTest.java
+++ b/src/test/java/org/apache/maven/plugins/javadoc/JavadocJarTest.java
@@ -75,13 +75,16 @@
             new File( getBasedir(), "target/test/unit/javadocjar-default/target/javadocjar-default-javadoc.jar" );

         assertTrue( FileUtils.fileExists( generatedFile.getAbsolutePath() ) );

 

-        //validate contents of jar file

-        ZipFile jar = new ZipFile( generatedFile );

         Set<String> set = new HashSet<>();

-        for( Enumeration<? extends ZipEntry> entries = jar.entries(); entries.hasMoreElements(); )

+

+        //validate contents of jar file

+        try ( ZipFile jar = new ZipFile( generatedFile ) )

         {

-            ZipEntry entry = entries.nextElement();

-            set.add( entry.getName() );

+            for( Enumeration<? extends ZipEntry> entries = jar.entries(); entries.hasMoreElements(); )

+            {

+                ZipEntry entry = entries.nextElement();

+                set.add( entry.getName() );

+            }

         }

 

         assertTrue( set.contains( "stylesheet.css" ) );

diff --git a/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java b/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java
index 8f8eb50..e13f176 100644
--- a/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java
+++ b/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java
@@ -25,9 +25,11 @@
 import java.net.SocketTimeoutException;

 import java.net.URL;

 import java.util.ArrayList;

+import java.util.Collections;

 import java.util.HashMap;

 import java.util.List;

 import java.util.Map;

+import java.util.Set;

 import java.util.regex.PatternSyntaxException;

 

 import org.apache.commons.lang3.builder.EqualsBuilder;

@@ -585,10 +587,10 @@
         list.add( getBasedir() + "/target/classes" );

         list.add( getBasedir() + "/target/classes" );

 

-        List<String> expected = new ArrayList<>();

-        expected.add( getBasedir() + "/target/classes" );

+        String FS = System.getProperty( "file.separator" );

+        Set<String> expected = Collections.singleton( getBasedir() + FS +"target" + FS + "classes" );

 

-        assertTrue( EqualsBuilder.reflectionEquals( expected, JavadocUtil.pruneDirs( null, list ) ) );

+        assertEquals( expected, JavadocUtil.pruneDirs( null, list ) );

     }

 

     /**