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 2016/07/09 21:49:08 UTC

svn commit: r1752049 - in /maven/plugins/trunk/maven-javadoc-plugin/src: main/java/org/apache/maven/plugin/javadoc/ main/java/org/apache/maven/plugin/javadoc/resolver/ test/java/org/apache/maven/plugin/javadoc/

Author: rfscholte
Date: Sat Jul  9 21:49:07 2016
New Revision: 1752049

URL: http://svn.apache.org/viewvc?rev=1752049&view=rev
Log:
[MJAVADOC-456] Upgrade to Maven3 plugin
Switch to TransformableFilters 

Added:
    maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java
Modified:
    maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
    maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java
    maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java

Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java?rev=1752049&r1=1752048&r2=1752049&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java Sat Jul  9 21:49:07 2016
@@ -65,9 +65,6 @@ import org.apache.maven.artifact.resolve
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.IncludesArtifactFilter;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import org.apache.maven.execution.MavenSession;
@@ -102,9 +99,11 @@ import org.apache.maven.reporting.MavenR
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.shared.artifact.DefaultArtifactCoordinate;
-import org.apache.maven.shared.artifact.filter.PatternExcludesArtifactFilter;
-import org.apache.maven.shared.artifact.filter.PatternIncludesArtifactFilter;
+import org.apache.maven.shared.artifact.filter.resolve.AndFilter;
+import org.apache.maven.shared.artifact.filter.resolve.PatternExclusionsFilter;
+import org.apache.maven.shared.artifact.filter.resolve.PatternInclusionsFilter;
 import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter;
+import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter;
 import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
 import org.apache.maven.shared.artifact.resolve.ArtifactResult;
 import org.apache.maven.shared.dependencies.DefaultDependableCoordinate;
@@ -2298,7 +2297,7 @@ public abstract class AbstractJavadocMoj
 
         final SourceResolverConfig config = getDependencySourceResolverConfig();
 
-        final AndArtifactFilter andFilter = new AndArtifactFilter();
+        final List<TransformableFilter> andFilters = new ArrayList<TransformableFilter>();
 
         final List<String> dependencyIncludes = dependencySourceIncludes;
         final List<String> dependencyExcludes = dependencySourceExcludes;
@@ -2308,20 +2307,20 @@ public abstract class AbstractJavadocMoj
         {
             if ( !includeTransitiveDependencySources )
             {
-                andFilter.add( createDependencyArtifactFilter() );
+                andFilters.add( createDependencyArtifactFilter() );
             }
 
             if ( isNotEmpty( dependencyIncludes ) )
             {
-                andFilter.add( new PatternIncludesArtifactFilter( dependencyIncludes, false ) );
+                andFilters.add( new PatternInclusionsFilter( dependencyIncludes ) );
             }
 
             if ( isNotEmpty( dependencyExcludes ) )
             {
-                andFilter.add( new PatternExcludesArtifactFilter( dependencyExcludes, false ) );
+                andFilters.add( new PatternExclusionsFilter( dependencyExcludes ) );
             }
 
-            config.withFilter( andFilter );
+            config.withFilter( new AndFilter( andFilters ) );
         }
 
         try
@@ -2346,7 +2345,7 @@ public abstract class AbstractJavadocMoj
      *
      * @return
      */
-    private ArtifactFilter createDependencyArtifactFilter()
+    private TransformableFilter createDependencyArtifactFilter()
     {
         Set<Artifact> dependencyArtifacts = project.getDependencyArtifacts();
 
@@ -2356,7 +2355,7 @@ public abstract class AbstractJavadocMoj
             artifactPatterns.add( artifact.getGroupId() + ":" + artifact.getArtifactId() );
         }
 
-        return new IncludesArtifactFilter( artifactPatterns );
+        return new PatternInclusionsFilter( artifactPatterns );
     }
 
     /**

Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java?rev=1752049&r1=1752048&r2=1752049&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/ResourceResolver.java Sat Jul  9 21:49:07 2016
@@ -21,6 +21,18 @@ package org.apache.maven.plugin.javadoc.
 
 import static org.codehaus.plexus.util.IOUtil.close;
 
+import java.io.File;
+import java.io.FileInputStream;
+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;
+import java.util.Map;
+import java.util.Set;
+
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -37,6 +49,8 @@ import org.apache.maven.plugin.javadoc.R
 import org.apache.maven.plugin.javadoc.options.JavadocOptions;
 import org.apache.maven.plugin.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.dependencies.resolve.DependencyResolver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.UnArchiver;
 import org.codehaus.plexus.archiver.manager.ArchiverManager;
@@ -46,18 +60,6 @@ import org.codehaus.plexus.component.ann
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
-import java.io.File;
-import java.io.FileInputStream;
-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;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * 
  */
@@ -69,6 +71,9 @@ public final class ResourceResolver exte
     
     @Requirement
     private ArtifactResolver resolver;
+    
+    @Requirement
+    private DependencyResolver dependencyResolver;
 
     @Requirement
     private ArtifactMetadataSource artifactMetadataSource;
@@ -238,7 +243,8 @@ public final class ResourceResolver exte
 
         for ( final Artifact artifact : artifacts )
         {
-            if ( config.filter() != null && !config.filter().include( artifact ) )
+            if ( config.filter() != null
+                && !new ArtifactIncludeFilterTransformer().transform( config.filter() ).include( artifact ) )
             {
                 continue;
             }
@@ -325,7 +331,8 @@ public final class ResourceResolver exte
 
         for ( final Artifact artifact : artifacts )
         {
-            if ( config.filter() != null && !config.filter().include( artifact ) )
+            if ( config.filter() != null
+                && !new ArtifactIncludeFilterTransformer().transform( config.filter() ).include( artifact ) )
             {
                 continue;
             }
@@ -370,7 +377,16 @@ public final class ResourceResolver exte
         final ArtifactRepository localRepo = config.localRepository();
         final List<ArtifactRepository> remoteRepos = config.project().getRemoteArtifactRepositories();
 
-        final ArtifactFilter filter = config.filter();
+        final ArtifactFilter filter;
+        if ( config.filter() != null )
+        {
+            filter = new ArtifactIncludeFilterTransformer().transform( config.filter() );
+        }
+        else
+        {
+            filter = null;
+        }
+        
         ArtifactFilter resolutionFilter = null;
         if ( filter != null )
         {
@@ -438,7 +454,8 @@ public final class ResourceResolver exte
     {
         final List<String> dirs = new ArrayList<String>();
 
-        if ( config.filter() == null || config.filter().include( artifact ) )
+        if ( config.filter() == null
+            || new ArtifactIncludeFilterTransformer().transform( config.filter() ).include( artifact ) )
         {
             if ( config.includeCompileSources() )
             {

Modified: maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java?rev=1752049&r1=1752048&r2=1752049&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/resolver/SourceResolverConfig.java Sat Jul  9 21:49:07 2016
@@ -19,13 +19,13 @@ package org.apache.maven.plugin.javadoc.
  * under the License.
  */
 
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.project.MavenProject;
-
 import java.io.File;
 import java.util.List;
 
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.artifact.filter.resolve.AndFilter;
+
 /**
  * 
  */
@@ -34,7 +34,7 @@ public class SourceResolverConfig
 
     private final MavenProject project;
 
-    private ArtifactFilter filter;
+    private AndFilter filter;
 
     private List<MavenProject> reactorProjects;
 
@@ -63,7 +63,7 @@ public class SourceResolverConfig
      * @param filter {@link ArtifactFilter}
      * @return {@link SourceResolverConfig}
      */
-    public SourceResolverConfig withFilter( final ArtifactFilter filter )
+    public SourceResolverConfig withFilter( final AndFilter filter )
     {
         this.filter = filter;
         return this;
@@ -132,9 +132,9 @@ public class SourceResolverConfig
     }
 
     /**
-     * @return {@link ArtifactFilter}
+     * @return {@link TransformableFilter}
      */
-    public ArtifactFilter filter()
+    public AndFilter filter()
     {
         return filter;
     }

Added: maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java?rev=1752049&view=auto
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java (added)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/test/java/org/apache/maven/plugin/javadoc/AggregatorJavadocReportTest.java Sat Jul  9 21:49:07 2016
@@ -0,0 +1,237 @@
+package org.apache.maven.plugin.javadoc;
+
+import java.io.BufferedReader;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.codehaus.plexus.util.FileUtils;
+
+public class AggregatorJavadocReportTest
+    extends AbstractMojoTestCase
+{
+    private static final char LINE_SEPARATOR = ' ';
+
+    /** flag to copy repo only one time */
+    private static boolean TEST_REPO_CREATED = false;
+
+    private File unit;
+
+    private File localRepo;
+
+    /** {@inheritDoc} */
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        unit = new File( getBasedir(), "src/test/resources/unit" );
+
+        localRepo = new File( getBasedir(), "target/local-repo/" );
+
+        createTestRepo();
+    }
+
+    private JavadocReport lookupMojo( File testPom )
+        throws Exception
+    {
+        JavadocReport mojo = (JavadocReport) lookupMojo( "aggregate", testPom );
+
+        PluginDescriptor pluginDescriptor = new PluginDescriptor();
+        pluginDescriptor.setPlugin( new Plugin() );
+
+        setVariableValueToObject( mojo, "plugin", pluginDescriptor );
+        return mojo;
+    }
+
+    /**
+     * Create test repository in target directory.
+     *
+     * @throws IOException if any
+     */
+    private void createTestRepo()
+        throws IOException
+    {
+        if ( TEST_REPO_CREATED )
+        {
+            return;
+        }
+
+        localRepo.mkdirs();
+
+        // ----------------------------------------------------------------------
+        // UMLGraph
+        // ----------------------------------------------------------------------
+
+        File sourceDir = new File( unit, "doclet-test/artifact-doclet" );
+        assertTrue( sourceDir.exists() );
+        FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+        // ----------------------------------------------------------------------
+        // UMLGraph-bis
+        // ----------------------------------------------------------------------
+
+        sourceDir = new File( unit, "doclet-path-test/artifact-doclet" );
+        assertTrue( sourceDir.exists() );
+        FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+        // ----------------------------------------------------------------------
+        // commons-attributes-compiler
+        // http://www.tullmann.org/pat/taglets/
+        // ----------------------------------------------------------------------
+
+        sourceDir = new File( unit, "taglet-test/artifact-taglet" );
+        assertTrue( sourceDir.exists() );
+        FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+        // ----------------------------------------------------------------------
+        // stylesheetfile-test
+        // ----------------------------------------------------------------------
+
+        sourceDir = new File( unit, "stylesheetfile-test/artifact-stylesheetfile" );
+        assertTrue( sourceDir.exists() );
+        FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+        // ----------------------------------------------------------------------
+        // helpfile-test
+        // ----------------------------------------------------------------------
+
+        sourceDir = new File( unit, "helpfile-test/artifact-helpfile" );
+        assertTrue( sourceDir.exists() );
+        FileUtils.copyDirectoryStructure( sourceDir, localRepo );
+
+        // Remove SCM files
+        List<String> files = FileUtils.getFileAndDirectoryNames( localRepo, FileUtils.getDefaultExcludesAsString(),
+                                                                 null, true, true, true, true );
+        for ( String filename : files )
+        {
+            File file = new File( filename );
+
+            if ( file.isDirectory() )
+            {
+                FileUtils.deleteDirectory( file );
+            }
+            else
+            {
+                file.delete();
+            }
+        }
+
+        TEST_REPO_CREATED = true;
+    }
+
+    /**
+     * Convenience method that reads the contents of the specified file object into a string with a <code>space</code>
+     * as line separator.
+     *
+     * @see #LINE_SEPARATOR
+     * @param file the file to be read
+     * @return a String object that contains the contents of the file
+     * @throws IOException if any
+     */
+    private static String readFile( File file )
+        throws IOException
+    {
+        String strTmp;
+        StringBuilder str = new StringBuilder( (int) file.length() );
+        BufferedReader in = new BufferedReader( new FileReader( file ) );
+
+        try
+        {
+            while ( ( strTmp = in.readLine() ) != null )
+            {
+                str.append( LINE_SEPARATOR );
+                str.append( strTmp );
+            }
+        }
+        finally
+        {
+            in.close();
+        }
+
+        return str.toString();
+    }
+
+    /**
+     * Method to test the aggregate parameter
+     *
+     * @throws Exception if any
+     */
+    public void testAggregate()
+        throws Exception
+    {
+        File testPom = new File( unit, "aggregate-test/aggregate-test-plugin-config.xml" );
+        JavadocReport mojo = (JavadocReport) lookupMojo( testPom );
+        mojo.execute();
+
+        File apidocs = new File( getBasedir(), "target/test/unit/aggregate-test/target/site/apidocs/" );
+
+        // check if project1 api files exist
+        assertTrue( new File( apidocs, "aggregate/test/project1/Project1App.html" ).exists() );
+        assertTrue( new File( apidocs, "aggregate/test/project1/Project1AppSample.html" ).exists() );
+        assertTrue( new File( apidocs, "aggregate/test/project1/Project1Sample.html" ).exists() );
+        assertTrue( new File( apidocs, "aggregate/test/project1/Project1Test.html" ).exists() );
+
+        // check if project2 api files exist
+        assertTrue( new File( apidocs, "aggregate/test/project2/Project2App.html" ).exists() );
+        assertTrue( new File( apidocs, "aggregate/test/project2/Project2AppSample.html" ).exists() );
+        assertTrue( new File( apidocs, "aggregate/test/project2/Project2Sample.html" ).exists() );
+        assertTrue( new File( apidocs, "aggregate/test/project2/Project2Test.html" ).exists() );
+    }
+
+    /**
+     * Test the javadoc resources in the aggregation case.
+     *
+     * @throws Exception if any
+     */
+    public void testAggregateJavadocResources()
+        throws Exception
+    {
+        File testPom = new File( unit, "aggregate-resources-test/aggregate-resources-test-plugin-config.xml" );
+        JavadocReport mojo = (JavadocReport) lookupMojo( testPom );
+        mojo.execute();
+
+        File apidocs = new File( getBasedir(), "target/test/unit/aggregate-resources-test/target/site/apidocs" );
+
+        // Test overview
+        File overviewSummary = new File( apidocs, "overview-summary.html" );
+        assertTrue( overviewSummary.exists() );
+        String overview = readFile( overviewSummary ).toLowerCase();
+        assertTrue( overview.contains( "<a href=\"resources/test/package-summary.html\">resources.test</a>" ) );
+        assertTrue( overview.contains( ">blabla</" ) );
+        assertTrue( overview.contains( "<a href=\"resources/test2/package-summary.html\">resources.test2</a>" ) );
+        assertTrue( overview.contains( "<a href=\"resources2/test/package-summary.html\">resources2.test</a>" ) );
+        assertTrue( overview.contains( "<a href=\"resources2/test2/package-summary.html\">resources2.test2</a>" ) );
+
+        // Test doc-files
+        File app = new File( apidocs, "resources/test/App.html" );
+        assertTrue( app.exists() );
+        overview = readFile( app );
+        assertTrue( overview.contains( "<img src=\"doc-files/maven-feather.png\" alt=\"Maven\">" ) );
+        assertTrue( new File( apidocs, "resources/test/doc-files/maven-feather.png" ).exists() );
+    }
+}