[ 
https://issues.apache.org/jira/browse/YETUS-1197?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Duo Zhang updated YETUS-1197:
-----------------------------
    Component/s: Audience Annotations

> NPE in DocletEnvironmentProcessor 
> ----------------------------------
>
>                 Key: YETUS-1197
>                 URL: https://issues.apache.org/jira/browse/YETUS-1197
>             Project: Yetus
>          Issue Type: Bug
>          Components: Audience Annotations
>            Reporter: Duo Zhang
>            Assignee: Duo Zhang
>            Priority: Major
>
> In HBASE-25983 we tried to build javadoc with JDK11 and finally we end with a 
> NPE.
> {noformat}
> [ERROR] java.lang.NullPointerException
> [ERROR]       at 
> org.apache.yetus.audience.tools.DocletEnvironmentProcessor$DocEnvImpl.excluded(DocletEnvironmentProcessor.java:60)
> [ERROR]       at 
> org.apache.yetus.audience.tools.DocletEnvironmentProcessor$DocEnvImpl.isIncluded(DocletEnvironmentProcessor.java:50)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.Utils.isIncluded(Utils.java:2685)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.getModuleLink(HtmlDocletWriter.java:629)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ClassWriterImpl.getHeader(ClassWriterImpl.java:104)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.ClassBuilder.buildClassDoc(ClassBuilder.java:138)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.ClassBuilder.build(ClassBuilder.java:120)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:263)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:273)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:207)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.run(AbstractDoclet.java:114)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.doclet.StandardDoclet.run(StandardDoclet.java:72)
> [ERROR]       at 
> org.apache.yetus.audience.tools.ExcludePrivateAnnotationsStandardDoclet.run(ExcludePrivateAnnotationsStandardDoclet.java:58)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.tool.Start.parseAndExecute(Start.java:588)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:432)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:345)
> [ERROR]       at 
> jdk.javadoc/jdk.javadoc.internal.tool.Main.execute(Main.java:63)
> [ERROR]       at jdk.javadoc/jdk.javadoc.internal.tool.Main.main(Main.java:52)
> {noformat}
> It is this line
> https://github.com/apache/yetus/blob/bfc2193567614ca3818dc37705eae09cac281ee9/audience-annotations-component/audience-annotations/src/main/java/org/apache/yetus/audience/tools/DocletEnvironmentProcessor.java#L60
> {code}
>     private boolean excluded(final Element e) {
>       // Exclude private and limited private types
>       if (e.getAnnotation(InterfaceAudience.Private.class) != null) { // 
> <==== this line
>         return true;
>       }
>       ...
>     }
> {code}
> Seems the Element is null. I checked the code in OpenJDK
> https://github.com/adoptium/jdk11u/blob/faf1f86f95117a5e2a0d52b67647dee893311545/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ElementsTable.java#L328
> It does check whether the Element passed in is null, so I think we should 
> also add null check here.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to