[ 
https://jira.codehaus.org/browse/MJAVADOC-297?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=273506#comment-273506
 ] 

Robert Scholte commented on MJAVADOC-297:
-----------------------------------------

Extracted this ocde fragment from the tagged class.
{code}
private void writeParamTag( final StringBuffer sb, final JavaMethod javaMethod,
                                final JavaEntityTags javaEntityTags, String[] 
params )
    {
        params = fixQdox173( params );

        String paramName = params[0];

        if ( !fixTag( PARAM_TAG ) )
        {
            // write original param tag if found
            String originalJavadocTag = javaEntityTags.getJavadocParamTag( 
paramName );
            if ( originalJavadocTag != null )
            {
                sb.append( originalJavadocTag );
            }
            return;
        }

        boolean found = false;
        JavaParameter javaParam = javaMethod.getParameterByName( paramName );
        if ( javaParam == null )
        {
            // is generic?
            TypeVariable[] typeParams = javaMethod.getTypeParameters();
            for ( int i = 0; i < typeParams.length; i++ )
            {
                if ( typeParams[i].getGenericValue().equals( paramName ) )
                {
                    found = true;
                }
            }
        }
        else
        {
            found = true;
        }

        if ( !found )
        {
            if ( getLog().isWarnEnabled() )
            {
                StringBuffer warn = new StringBuffer();

                warn.append( "Fixed unknown param '" ).append( paramName 
).append( "' defined in " );
                warn.append( getJavaMethodAsString( javaMethod ) );

                getLog().warn( warn.toString() );
            }

            if ( sb.toString().endsWith( EOL ) )
            {
                sb.delete( sb.toString().lastIndexOf( EOL ), 
sb.toString().length() );
            }
        }
        else
        {
            String originalJavadocTag = javaEntityTags.getJavadocParamTag( 
paramName );
            if ( originalJavadocTag != null )
            {
                sb.append( originalJavadocTag );
                String s = "@" + PARAM_TAG + " " + paramName;
                if ( StringUtils.removeDuplicateWhitespace( originalJavadocTag 
).trim().endsWith( s ) )
                {
                    sb.append( " " );
                    sb.append( getDefaultJavadocForType( javaParam.getType() ) 
);
                }
            }
        }
    }
{code}

The NPE is caused in one of the final lines: {{sb.append( 
getDefaultJavadocForType( javaParam.getType() ) );}}
{{sb}} can't be {{null}} since it's already used, so it has to be {{javaParam}}.
Two options I can think of: @param is empty or it has an invalid name.
Shouldn't be too hard to find out.

> NullPointerException in AbstractFixJavadocMojo.writeParamTag()
> --------------------------------------------------------------
>
>                 Key: MJAVADOC-297
>                 URL: https://jira.codehaus.org/browse/MJAVADOC-297
>             Project: Maven 2.x Javadoc Plugin
>          Issue Type: Bug
>    Affects Versions: 2.7
>         Environment: graham-leggetts-macbook-pro-3:patricia-db-trunk minfrin$ 
> mvn --version
> Apache Maven 2.2.0 (r788681; 2009-06-26 15:04:01+0200)
> Java version: 1.6.0_20
> Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
> Default locale: en_US, platform encoding: MacRoman
> OS name: "mac os x" version: "10.5.8" arch: "x86_64" Family: "mac"
>            Reporter: Graham Leggett
>
> While attempting to run the javadoc:fix goal against source code, v2.7 of the 
> javadoc plugin crashed as follows:
> {noformat}[INFO] 
> ------------------------------------------------------------------------
> [ERROR] FATAL ERROR
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] null
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Trace
> java.lang.NullPointerException
>       at 
> org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.writeParamTag(AbstractFixJavadocMojo.java:1958)
>       at 
> org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.updateJavadocTags(AbstractFixJavadocMojo.java:1842)
>       at 
> org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.updateJavadocTags(AbstractFixJavadocMojo.java:1747)
>       at 
> org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.updateJavadocComment(AbstractFixJavadocMojo.java:1658)
>       at 
> org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.updateEntityComment(AbstractFixJavadocMojo.java:1527)
>       at 
> org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.fixMethodComment(AbstractFixJavadocMojo.java:1391)
>       at 
> org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.processFix(AbstractFixJavadocMojo.java:993)
>       at 
> org.apache.maven.plugin.javadoc.AbstractFixJavadocMojo.execute(AbstractFixJavadocMojo.java:405)
>       at 
> org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:553)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:523)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:332)
>       at 
> org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
>       at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
>       at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
>       at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
>       at 
> org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:41)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:597)
>       at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
>       at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
>       at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
>       at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
> {noformat}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to