NPE out of AbstractJavadocMojo::getSourcePaths() on multimodule project using 
aggregate
---------------------------------------------------------------------------------------

                 Key: MJAVADOC-139
                 URL: http://jira.codehaus.org/browse/MJAVADOC-139
             Project: Maven 2.x Javadoc Plugin
          Issue Type: Bug
            Reporter: John Allen


My main concern is this area of the code:

AbstractJavadocMojo::getSourcePaths()

{code}
   /**
     * 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 source paths
     */
    protected List getSourcePaths()
    {
        List sourcePaths;

        if ( StringUtils.isEmpty( sourcepath ) )
        {
            sourcePaths = new ArrayList( getProjectSourceRoots( project ) );

            if ( project.getExecutionProject() != null )
            {
                sourcePaths.addAll( getExecutionProjectSourceRoots( project ) );
            }

            if ( getJavadocDirectory() != null )
            {
                File javadocDir = getJavadocDirectory();
                if ( javadocDir.exists() && javadocDir.isDirectory() )
                {
                    sourcePaths.add( getJavadocDirectory().getAbsolutePath() );
                }
            }

            if ( aggregate && project.isExecutionRoot() )
            {
                for ( Iterator i = reactorProjects.iterator(); i.hasNext(); )
                {
                    MavenProject subProject = (MavenProject) i.next();

                    if ( subProject != project )
                    {
                        List sourceRoots = getProjectSourceRoots( subProject );
{code}

*HERE WE CHECK IF subProject.getExecutionProject() IS NOT EQUAL TO NULL*

{code}

                        if ( subProject.getExecutionProject() != null )
                        {
                            sourceRoots.addAll( getExecutionProjectSourceRoots( 
subProject ) );
                        }

                        ArtifactHandler artifactHandler = 
subProject.getArtifact().getArtifactHandler();
                        if ( "java".equals( artifactHandler.getLanguage() ) )
                        {
                            sourcePaths.addAll( sourceRoots );
                        }

{code}

*BUT NOW WE TRY AND DEREFERENCE subProject.getExecutionProject() REGARDLESS - 
RESULTS IN NPE*

{code}

                        String javadocDirRelative = PathUtils.toRelative( 
project.getBasedir(), getJavadocDirectory().getAbsolutePath() );
                        File javadocDir = new File( 
subProject.getExecutionProject().getBasedir(), javadocDirRelative );
                        if ( javadocDir.exists() && javadocDir.isDirectory() )
                        {
                            sourcePaths.add( javadocDir.getAbsolutePath() );
                        }
                    }
                }
            }

            sourcePaths = pruneSourceDirs( sourcePaths );
        }
        else
        {
            sourcePaths = new ArrayList( Arrays.asList( sourcepath.split( "[;]" 
) ) );
            if ( getJavadocDirectory() != null )
            {
                sourcePaths.add( getJavadocDirectory().getAbsolutePath() );
            }
            sourcePaths = pruneSourceDirs( sourcePaths );
        }

        return sourcePaths;
    }
{code}


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to