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 2018/12/09 14:45:44 UTC
[maven-javadoc-plugin] 03/05: Refactoring
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MJAVADOC-548
in repository https://gitbox.apache.org/repos/asf/maven-javadoc-plugin.git
commit 138a9c53336bf74508acafddc402535b243333a9
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Dec 9 11:24:39 2018 +0100
Refactoring
---
.../maven/plugins/javadoc/AbstractJavadocMojo.java | 24 ++-----
.../apache/maven/plugins/javadoc/JavadocUtil.java | 79 +++++++++++++++-------
.../maven/plugins/javadoc/JavadocUtilTest.java | 3 +-
3 files changed, 62 insertions(+), 44 deletions(-)
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 2b65b2e..efc45bc 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/AbstractJavadocMojo.java
@@ -2209,8 +2209,8 @@ public abstract class AbstractJavadocMojo
List<String> files = new ArrayList<>();
if ( StringUtils.isEmpty( subpackages ) )
{
- String[] excludedPackages = getExcludedPackages();
-
+ Collection<String> excludedPackages = getExcludedPackages();
+
for ( String sourcePath : sourcePaths )
{
File sourceDirectory = new File( sourcePath );
@@ -2470,9 +2470,8 @@ public abstract class AbstractJavadocMojo
if ( StringUtils.isNotEmpty( sourcepath ) && StringUtils.isNotEmpty( subpackages ) )
{
- String[] excludedPackages = getExcludedPackages();
- String[] subpackagesList = subpackages.split( "[:]" );
-
+ Collection<String> excludedPackages = getExcludedPackages();
+
excludedNames = JavadocUtil.getExcludedNames( sourcePaths, excludedPackages );
}
@@ -2513,7 +2512,7 @@ public abstract class AbstractJavadocMojo
* @return an array of String objects that contain the package names
* @throws MavenReportException
*/
- private String[] getExcludedPackages()
+ private Collection<String> getExcludedPackages()
throws MavenReportException
{
Set<String> excluded = new LinkedHashSet<>();
@@ -2550,18 +2549,7 @@ public abstract class AbstractJavadocMojo
excluded.addAll( trimValues( packageNames ) );
}
- String[] result = new String[excluded.size()];
- if ( isNotEmpty( excluded ) )
- {
- int idx = 0;
- for ( String exclude : excluded )
- {
- result[idx] = exclude.replace( '.', File.separatorChar );
- idx++;
- }
- }
-
- return result;
+ return excluded;
}
private static List<String> trimValues( List<String> items )
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 d6a8ae6..a9a547c 100644
--- a/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
+++ b/src/main/java/org/apache/maven/plugins/javadoc/JavadocUtil.java
@@ -78,6 +78,12 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -195,12 +201,20 @@ public class JavadocUtil
* @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( Collection<String> sourcePaths, String[] excludedPackages )
+ protected static List<String> getExcludedNames( Collection<String> sourcePaths,
+ Collection<String> excludedPackages )
{
List<String> excludedNames = new ArrayList<>();
for ( String path : sourcePaths )
{
- excludedNames.addAll( getExcludedPackages( path, excludedPackages ) );
+ for ( String file : getExcludedPackages( Paths.get( path ), excludedPackages ) )
+ {
+ String tmpStr = file.replace( '\\', '/' );
+
+ String[] srcSplit = tmpStr.split( Pattern.quote( path.replace( '\\', '/' ) + '/' ) );
+
+ excludedNames.add( srcSplit[1].replace( '/', '.' ) );
+ }
}
return excludedNames;
@@ -336,15 +350,16 @@ public class JavadocUtil
* @param excludePackages package names to be excluded in the javadoc
* @return a StringBuilder that contains the appended file names of the files to be included in the javadoc
*/
- protected static List<String> getIncludedFiles( File sourceDirectory, String[] fileList, String[] excludePackages )
+ protected static List<String> getIncludedFiles( File sourceDirectory, String[] fileList,
+ Collection<String> excludePackages )
{
List<String> files = new ArrayList<>();
- List<Pattern> excludePackagePatterns = new ArrayList<>( excludePackages.length );
+ List<Pattern> excludePackagePatterns = new ArrayList<>( excludePackages.size() );
for ( String excludePackage : excludePackages )
{
- excludePackagePatterns.add( Pattern.compile( excludePackage.replace( "\\", "\\\\" )
- .replace( ".", "\\." )
+ excludePackagePatterns.add( Pattern.compile( excludePackage.replace( '.', File.separatorChar )
+ .replace( "\\", "\\\\" )
.replace( "*", ".+" )
.concat( "[\\\\/][^\\\\/]+\\.java" )
) );
@@ -379,40 +394,53 @@ public class JavadocUtil
* @param excludePackagenames package names to be excluded in the javadoc
* @return a List of the packagenames to be excluded
*/
- protected static Collection<String> getExcludedPackages( String sourceDirectory, String[] excludePackagenames )
+ protected static Collection<String> getExcludedPackages( Path sourceDirectory,
+ Collection<String> excludePackagenames )
{
+ final Collection<String> fileList = new ArrayList<>();
+
+ try
+ {
+ Files.walkFileTree( sourceDirectory, new SimpleFileVisitor<Path>()
+ {
+ @Override
+ public FileVisitResult visitFile( Path file, BasicFileAttributes attrs )
+ throws IOException
+ {
+ if ( file.getFileName().toString().endsWith( ".java" ) )
+ {
+ fileList.add( file.toAbsolutePath().toString() );
+ }
+ return FileVisitResult.CONTINUE;
+ }
+ } );
+ }
+ catch ( IOException e )
+ {
+ // noop
+ }
+
List<String> files = new ArrayList<>();
for ( String excludePackagename : excludePackagenames )
{
- String[] excludeName = excludePackagename.split( "[*]" );
+ String[] excludeName = excludePackagename.replace( '.', File.separatorChar ).split( "[*]" );
- String[] fileList = FileUtils.getFilesFromExtension( sourceDirectory, new String[] { "java" } );
for ( String aFileList : fileList )
{
for ( String excludePart : excludeName )
{
if ( !"".equals( excludePart.trim() ) && aFileList.contains( excludePart )
- && !sourceDirectory.contains( excludePart ) )
+ && !sourceDirectory.toString().contains( excludePart ) )
{
- files.add( aFileList );
+ int idx = aFileList.lastIndexOf( File.separatorChar );
+
+ files.add( aFileList.substring( 0, idx ) );
}
}
}
}
- Set<String> excluded = new LinkedHashSet<>();
- for ( String file : files )
- {
- int idx = file.lastIndexOf( File.separatorChar );
- String tmpStr = file.substring( 0, idx );
- tmpStr = tmpStr.replace( '\\', '/' );
- String[] srcSplit = tmpStr.split( Pattern.quote( sourceDirectory.replace( '\\', '/' ) + '/' ) );
- String excludedPackage = srcSplit[1].replace( '/', '.' );
-
- excluded.add( excludedPackage );
- }
-
- return excluded;
+ return files;
}
/**
@@ -424,7 +452,8 @@ public class JavadocUtil
* @param sourceFileExcludes files to exclude.
*/
protected static List<String> getFilesFromSource( File sourceDirectory, List<String> sourceFileIncludes,
- List<String> sourceFileExcludes, String[] excludePackages )
+ List<String> sourceFileExcludes,
+ Collection<String> excludePackages )
{
DirectoryScanner ds = new DirectoryScanner();
if ( sourceFileIncludes == null )
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 b4db5c5..139a09f 100644
--- a/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java
+++ b/src/test/java/org/apache/maven/plugins/javadoc/JavadocUtilTest.java
@@ -29,6 +29,7 @@ import java.net.SocketTimeoutException;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -783,7 +784,7 @@ public class JavadocUtilTest
{
File sourceDirectory = new File("target/it").getAbsoluteFile();
String[] fileList = new String[] { "Main.java" };
- String[] excludePackages = new String[] { "*.it" };
+ Collection<String> excludePackages = Collections.singleton( "*.it" );
List<String> includedFiles = JavadocUtil.getIncludedFiles( sourceDirectory, fileList, excludePackages );