You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2006/08/25 01:29:28 UTC

svn commit: r434560 - in /maven: plugins/trunk/maven-javadoc-plugin/ plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/ shared/trunk/maven-plugin-testing-harness/src/main/java/org/apache/maven/plugin/testing/stubs/

Author: vsiveton
Date: Thu Aug 24 16:29:27 2006
New Revision: 434560

URL: http://svn.apache.org/viewvc?rev=434560&view=rev
Log:
MJAVADOC-72: Aggregating javadocs doesn't work
Submitted by: Mathias Brökelmann 
Reviewed by: Vincent Siveton

o patch applied with our code style
o bump to 1.0-beta-2-SNAPSHOT for maven-plugin-testing-harness
o return Collections.EMPTY_SET in the MavenProjectStub#createArtifacts() to prevent a String classcast exception 

Modified:
    maven/plugins/trunk/maven-javadoc-plugin/pom.xml
    maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/AbstractJavadocMojo.java
    maven/shared/trunk/maven-plugin-testing-harness/src/main/java/org/apache/maven/plugin/testing/stubs/MavenProjectStub.java

Modified: maven/plugins/trunk/maven-javadoc-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-javadoc-plugin/pom.xml?rev=434560&r1=434559&r2=434560&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/pom.xml Thu Aug 24 16:29:27 2006
@@ -81,8 +81,8 @@
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-plugin-testing-harness</artifactId>
-      <version>1.0-beta-1</version>
+      <version>1.0-beta-2-SNAPSHOT</version>
       <scope>test</scope>
     </dependency>
-  </dependencies>  
+  </dependencies>
 </project>

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=434560&r1=434559&r2=434560&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 Thu Aug 24 16:29:27 2006
@@ -16,20 +16,39 @@
  * limitations under the License.
  */
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
 import org.apache.commons.lang.ClassUtils;
 import org.apache.commons.lang.SystemUtils;
 import org.apache.commons.lang.math.NumberUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.AbstractArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 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.plugin.AbstractMojo;
 import org.apache.maven.plugin.javadoc.options.Group;
 import org.apache.maven.plugin.javadoc.options.Tag;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.apache.maven.reporting.MavenReportException;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
@@ -39,20 +58,6 @@
 import org.codehaus.plexus.util.cli.Commandline;
 import org.codehaus.plexus.util.cli.DefaultConsumer;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.StringTokenizer;
-import java.util.Map;
-import java.util.HashMap;
-
 /**
  * Base class with majority of Javadoc functionality.
  *
@@ -136,7 +141,7 @@
      *
      * @parameter
      */
-//TODO: May need to allow multiple artifacts
+    //TODO: May need to allow multiple artifacts
     private DocletArtifact docletArtifact;
 
     /**
@@ -603,6 +608,13 @@
      */
     protected boolean aggregate;
 
+    /**
+     * Used to resolve artifacts of aggregated modules
+     *
+     * @component
+     */
+    private ArtifactMetadataSource artifactMetadataSource;
+
     private static final float MIN_JAVA_VERSION = 1.4f;
 
     /**
@@ -731,8 +743,8 @@
         if ( StringUtils.isEmpty( doclet ) )
         {
             addArgIf( arguments, author, "-author" );
-            addArgIfNotEmpty( arguments, "-bottom",
-                              quotedArgument( getBottomText( project.getModel().getInceptionYear() ) ) );
+            addArgIfNotEmpty( arguments, "-bottom", quotedArgument( getBottomText( project.getModel()
+                .getInceptionYear() ) ) );
             addArgIf( arguments, breakiterator, "-breakiterator", MIN_JAVA_VERSION );
             addArgIfNotEmpty( arguments, "-charset", quotedArgument( charset ) );
             addArgIfNotEmpty( arguments, "-d", quotedPathArgument( javadocDirectory.toString() ) );
@@ -744,15 +756,15 @@
             addArgIfNotEmpty( arguments, "-footer", quotedArgument( footer ) );
             for ( int i = 0; i < groups.length; i++ )
             {
-                if ( groups[i] == null || StringUtils.isEmpty( groups[i].getTitle() ) ||
-                    StringUtils.isEmpty( groups[i].getPackages() ) )
+                if ( groups[i] == null || StringUtils.isEmpty( groups[i].getTitle() )
+                    || StringUtils.isEmpty( groups[i].getPackages() ) )
                 {
                     getLog().info( "A group option is empty. Ignore this option." );
                 }
                 else
                 {
-                    addArgIfNotEmpty( arguments, "-group", quotedArgument( groups[i].getTitle() ) + " " +
-                        quotedArgument( groups[i].getPackages() ), true );
+                    addArgIfNotEmpty( arguments, "-group", quotedArgument( groups[i].getTitle() ) + " "
+                        + quotedArgument( groups[i].getPackages() ), true );
                 }
             }
             addArgIfNotEmpty( arguments, "-header", quotedArgument( header ) );
@@ -780,16 +792,15 @@
             addArgIf( arguments, notree, "-notree" );
             addArgIf( arguments, serialwarn, "-serialwarn" );
             addArgIf( arguments, splitindex, "-splitindex" );
-            addArgIfNotEmpty( arguments, "-stylesheetfile",
-                              quotedPathArgument( getStylesheetFile( javadocDirectory ) ) );
+            addArgIfNotEmpty( arguments, "-stylesheetfile", quotedPathArgument( getStylesheetFile( javadocDirectory ) ) );
 
             addArgIfNotEmpty( arguments, "-taglet", quotedArgument( taglet ), MIN_JAVA_VERSION );
             addArgIfNotEmpty( arguments, "-tagletpath", quotedPathArgument( tagletpath ), MIN_JAVA_VERSION );
 
             for ( int i = 0; i < tags.length; i++ )
             {
-                if ( tags[i] == null || StringUtils.isEmpty( tags[i].getName() ) ||
-                    StringUtils.isEmpty( tags[i].getPlacement() ) )
+                if ( tags[i] == null || StringUtils.isEmpty( tags[i].getName() )
+                    || StringUtils.isEmpty( tags[i].getPlacement() ) )
                 {
                     getLog().info( "A tag option is empty. Ignore this option." );
                 }
@@ -1057,12 +1068,32 @@
 
         if ( aggregate && project.isExecutionRoot() )
         {
-            for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
+            try
             {
-                MavenProject subProject = (MavenProject) i.next();
-
-                classpathElements.add( subProject.getBuild().getOutputDirectory() );
-                populateCompileArtifactMap( compileArtifactMap, subProject.getCompileArtifacts() );
+                for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
+                {
+                    MavenProject subProject = (MavenProject) i.next();
+                    if ( subProject != project )
+                    {
+                        classpathElements.add( subProject.getBuild().getOutputDirectory() );
+                        Set dependencyArtifacts = subProject.createArtifacts( factory, null, null );
+                        if ( !dependencyArtifacts.isEmpty() )
+                        {
+                            ArtifactResolutionResult result = resolver
+                                .resolveTransitively( dependencyArtifacts, subProject.getArtifact(), subProject
+                                    .getRemoteArtifactRepositories(), localRepository, artifactMetadataSource );
+                            populateCompileArtifactMap( compileArtifactMap, getCompileArtifacts( result.getArtifacts() ) );
+                        }
+                    }
+                }
+            }
+            catch ( AbstractArtifactResolutionException e )
+            {
+                throw new MavenReportException( e.getMessage(), e );
+            }
+            catch ( InvalidDependencyVersionException e )
+            {
+                throw new MavenReportException( e.getMessage(), e );
             }
         }
 
@@ -1071,6 +1102,33 @@
     }
 
     /**
+     * Copy from {@link MavenProject#getCompileArtifacts()}
+     * @param artifacts
+     * @return
+     */
+    private List getCompileArtifacts( Set artifacts )
+    {
+        List list = new ArrayList( artifacts.size() );
+
+        for ( Iterator i = artifacts.iterator(); i.hasNext(); )
+        {
+            Artifact a = (Artifact) i.next();
+
+            // TODO: classpath check doesn't belong here - that's the other method
+            if ( a.getArtifactHandler().isAddedToClasspath() )
+            {
+                // TODO: let the scope handler deal with this
+                if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() )
+                    || Artifact.SCOPE_SYSTEM.equals( a.getScope() ) )
+                {
+                    list.add( a );
+                }
+            }
+        }
+        return list;
+    }
+
+    /**
      * Method to put the artifacts in the hashmap.
      *
      * @param compileArtifactMap the hashmap that will contain the artifacts
@@ -1080,20 +1138,21 @@
     private void populateCompileArtifactMap( Map compileArtifactMap, List artifactList )
         throws MavenReportException
     {
-        if ( artifactList != null)
-        {
-        for ( Iterator i = artifactList.iterator(); i.hasNext(); )
+        if ( artifactList != null )
         {
-            Artifact a = (Artifact) i.next();
+            for ( Iterator i = artifactList.iterator(); i.hasNext(); )
+            {
+                Artifact a = (Artifact) i.next();
 
-            File file = a.getFile();
+                File file = a.getFile();
 
-            if ( file == null )
-            {
-                throw new MavenReportException( "Error in plugin descriptor - compile dependencies were not resolved" );
+                if ( file == null )
+                {
+                    throw new MavenReportException(
+                                                    "Error in plugin descriptor - compile dependencies were not resolved" );
+                }
+                compileArtifactMap.put( a.getDependencyConflictId(), file.getAbsolutePath() );
             }
-            compileArtifactMap.put( a.getDependencyConflictId(), file.getAbsolutePath() );
-        }
         }
     }
 
@@ -1160,8 +1219,8 @@
     private String getAccessLevel()
     {
         String accessLevel;
-        if ( "public".equalsIgnoreCase( show ) || "protected".equalsIgnoreCase( show ) ||
-            "package".equalsIgnoreCase( show ) || "private".equalsIgnoreCase( show ) )
+        if ( "public".equalsIgnoreCase( show ) || "protected".equalsIgnoreCase( show )
+            || "package".equalsIgnoreCase( show ) || "private".equalsIgnoreCase( show ) )
         {
             accessLevel = "-" + show;
         }
@@ -1226,8 +1285,8 @@
             }
             else
             {
-                if ( NumberUtils.isDigits( memory.substring( 0, memory.length() - 1 ) ) &&
-                    memory.toLowerCase().endsWith( "m" ) )
+                if ( NumberUtils.isDigits( memory.substring( 0, memory.length() - 1 ) )
+                    && memory.toLowerCase().endsWith( "m" ) )
                 {
                     cmd.createArgument().setValue( "-J" + arg + memory );
                 }
@@ -1433,14 +1492,14 @@
         if ( !StringUtils.isEmpty( path ) )
         {
             path = path.replace( '\\', '/' );
-            if( path.indexOf( "\'" ) != -1 )
+            if ( path.indexOf( "\'" ) != -1 )
             {
                 String split[] = path.split( "\'" );
                 path = "";
 
-                for( int i = 0; i < split.length; i++ )
+                for ( int i = 0; i < split.length; i++ )
                 {
-                    if( i != split.length - 1)
+                    if ( i != split.length - 1 )
                     {
                         path = path + split[i] + "\\'";
                     }
@@ -1468,8 +1527,8 @@
             for ( int i = 0; i < offlineLinks.size(); i++ )
             {
                 OfflineLink offlineLink = (OfflineLink) offlineLinks.get( i );
-                addArgIfNotEmpty( arguments, "-linkoffline", quotedPathArgument( offlineLink.getUrl() ) + " " +
-                    quotedPathArgument( offlineLink.getLocation().getAbsolutePath() ), true );
+                addArgIfNotEmpty( arguments, "-linkoffline", quotedPathArgument( offlineLink.getUrl() ) + " "
+                    + quotedPathArgument( offlineLink.getLocation().getAbsolutePath() ), true );
             }
         }
     }
@@ -1603,8 +1662,8 @@
                         {
                             int i = fileList[j].lastIndexOf( File.separatorChar );
                             String packageName = fileList[j].substring( 0, i + 1 );
-                            if ( packageName.equals( sourceDirectory + File.separatorChar + excludeName[0] ) &&
-                                fileList[j].substring( i ).indexOf( ".java" ) != -1 )
+                            if ( packageName.equals( sourceDirectory + File.separatorChar + excludeName[0] )
+                                && fileList[j].substring( i ).indexOf( ".java" ) != -1 )
                             {
                                 include = true;
                             }
@@ -1643,15 +1702,15 @@
         List files = new ArrayList();
         for ( int i = 0; i < excludePackagenames.length; i++ )
         {
-            String[] fileList = FileUtils.getFilesFromExtension( sourceDirectory, new String[]{"java"} );
+            String[] fileList = FileUtils.getFilesFromExtension( sourceDirectory, new String[] { "java" } );
             for ( int j = 0; j < fileList.length; j++ )
             {
                 String[] excludeName = excludePackagenames[i].split( "[*]" );
                 int u = 0;
                 while ( u < excludeName.length )
                 {
-                    if ( !"".equals( excludeName[u].trim() ) && fileList[j].indexOf( excludeName[u] ) != -1 &&
-                        sourceDirectory.indexOf( excludeName[u] ) == -1 )
+                    if ( !"".equals( excludeName[u].trim() ) && fileList[j].indexOf( excludeName[u] ) != -1
+                        && sourceDirectory.indexOf( excludeName[u] ) == -1 )
                     {
                         files.add( fileList[j] );
                     }
@@ -1688,7 +1747,7 @@
      */
     private void addFilesFromSource( List files, String sourceDirectory, String[] excludePackages )
     {
-        String[] fileList = FileUtils.getFilesFromExtension( sourceDirectory, new String[]{"java"} );
+        String[] fileList = FileUtils.getFilesFromExtension( sourceDirectory, new String[] { "java" } );
         if ( fileList != null && fileList.length != 0 )
         {
             List tmpFiles = getIncludedFiles( sourceDirectory, fileList, excludePackages );

Modified: maven/shared/trunk/maven-plugin-testing-harness/src/main/java/org/apache/maven/plugin/testing/stubs/MavenProjectStub.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-plugin-testing-harness/src/main/java/org/apache/maven/plugin/testing/stubs/MavenProjectStub.java?rev=434560&r1=434559&r2=434560&view=diff
==============================================================================
--- maven/shared/trunk/maven-plugin-testing-harness/src/main/java/org/apache/maven/plugin/testing/stubs/MavenProjectStub.java (original)
+++ maven/shared/trunk/maven-plugin-testing-harness/src/main/java/org/apache/maven/plugin/testing/stubs/MavenProjectStub.java Thu Aug 24 16:29:27 2006
@@ -16,79 +16,96 @@
  * limitations under the License.
  */
 
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.model.Model;
-import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.apache.maven.model.DependencyManagement;
-import org.apache.maven.model.Prerequisites;
-import org.apache.maven.model.IssueManagement;
-import org.apache.maven.model.CiManagement;
-import org.apache.maven.model.DistributionManagement;
-import org.apache.maven.model.Organization;
-import org.apache.maven.model.Scm;
-import org.apache.maven.model.MailingList;
-import org.apache.maven.model.Developer;
-import org.apache.maven.model.Contributor;
-import org.apache.maven.model.Build;
-import org.apache.maven.model.Resource;
-import org.apache.maven.model.Reporting;
-import org.apache.maven.model.License;
-import org.apache.maven.model.PluginManagement;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.PlexusTestCase;
-
-import java.io.IOException;
 import java.io.File;
+import java.io.IOException;
 import java.io.Writer;
+import java.util.Collections;
 import java.util.List;
-import java.util.Set;
 import java.util.Map;
 import java.util.Properties;
-import java.util.Collections;
+import java.util.Set;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.model.Build;
+import org.apache.maven.model.CiManagement;
+import org.apache.maven.model.Contributor;
+import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Developer;
+import org.apache.maven.model.DistributionManagement;
+import org.apache.maven.model.IssueManagement;
+import org.apache.maven.model.License;
+import org.apache.maven.model.MailingList;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Organization;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginManagement;
+import org.apache.maven.model.Prerequisites;
+import org.apache.maven.model.Reporting;
+import org.apache.maven.model.Resource;
+import org.apache.maven.model.Scm;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 /**
  *  very simple stub of maven project, going to take a lot of work to make it useful as a stub though
  */
-public class MavenProjectStub extends MavenProject
+public class MavenProjectStub
+    extends MavenProject
 {
     private String groupId;
+
     private String artifactId;
+
     private String name;
 
     private Model model;
+
     private MavenProject parent;
+
     private File file;
-    private Set artifacts;
-    private Artifact parentArtifact;
-    private Set pluginArtifacts;
-    private List remoteArtifactRepositories;
+
     private List collectedProjects;
+
     private List attachedArtifacts;
-    private MavenProject executionProject;
+
     private List compileSourceRoots;
+
     private List testCompileSourceRoots;
+
     private List scriptSourceRoots;
+
     private List pluginArtifactRepositories;
+
     private ArtifactRepository releaseArtifactRepository;
+
     private ArtifactRepository snapshotArtifactRepository;
+
     private List activeProfiles;
+
     private Set dependencyArtifacts;
+
     private Artifact artifact;
+
     private Map artifactMap;
+
     private Model originalModel;
+
     private Map pluginArtifactMap;
-    private Set reportArtifacts;
+
     private Map reportArtifactMap;
-    private Set extensionArtifacts;
+
     private Map extensionArtifactMap;
+
     private Map projectReferences;
+
     private Build buildOverlay;
+
     private boolean executionRoot;
 
     private List compileArtifacts;
@@ -98,17 +115,27 @@
     private List systemDependencies;
 
     private List testClasspathElements;
+
     private List testDependencies;
+
     private List systemClasspathElements;
+
     private List systemArtifacts;
+
     private List testArtifacts;
+
     private List runtimeArtifacts;
+
     private List runtimeDependencies;
+
     private List runtimeClasspathElements;
 
     private String modelVersion;
+
     private String packaging;
+
     private String inceptionYear;
+
     private String url;
 
     private String description;
@@ -117,21 +144,23 @@
 
     private String defaultGoal;
 
-
-    public MavenProjectStub() { super( (Model) null ); }
+    public MavenProjectStub()
+    {
+        super( (Model) null );
+    }
 
     // kinda dangerous...
-    public MavenProjectStub(Model model)
+    public MavenProjectStub( Model model )
     {
-      //  super(model);
-      super( (Model) null );
+        //  super(model);
+        super( (Model) null );
     }
 
     // kinda dangerous...
-    public MavenProjectStub(MavenProject project)
+    public MavenProjectStub( MavenProject project )
     {
         //super(project);
-      super( (Model) null );
+        super( (Model) null );
     }
 
     public String getModulePathAdjustment( MavenProject mavenProject )
@@ -177,7 +206,7 @@
 
     public boolean hasParent()
     {
-        if (parent != null)
+        if ( parent != null )
         {
             return true;
         }
@@ -199,7 +228,7 @@
 
     public File getBasedir()
     {
-        return new File(PlexusTestCase.getBasedir());
+        return new File( PlexusTestCase.getBasedir() );
     }
 
     public void setDependencies( List list )
@@ -479,7 +508,7 @@
 
     public void setName( String string )
     {
-       this.name = string;
+        this.name = string;
     }
 
     public String getName()
@@ -924,7 +953,7 @@
     public Set createArtifacts( ArtifactFactory artifactFactory, String string, ArtifactFilter artifactFilter )
         throws InvalidDependencyVersionException
     {
-        return Collections.singleton( "" );
+        return Collections.EMPTY_SET;
     }
 
     public void addProjectReference( MavenProject mavenProject )
@@ -971,5 +1000,4 @@
     {
         return null;
     }
-
 }