[
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