Dawid,

The issue about being difficult to subtype the StandardDoclet is a
known issue.

You should be able to provide your own file manager if you invoke
javadoc via the API available in javax.tools.

https://docs.oracle.com/en/java/javase/11/docs/api/java.compiler/javax/tools/ToolProvider.html#getSystemDocumentationTool()

-- Jon


On 5/7/20 1:29 AM, Dawid Weiss wrote:
Hello everyone,

I had a somewhat wild idea of trying to modify the behavior of the
StandardDoclet to write directly to a ZIP file (instead of the file
system). All the pieces fall into place relatively easily:

1) Create a custom Doclet that extends (public) StandardDoclet and
overrides the run method with:

public boolean run(DocletEnvironment docEnv) {
     return super.run(new CustomEnvironment(docEnv));
}

2) CustomEnvironment delegates everything to docEnv except it returns
a ForwardingJavaFileManager over the docEnv.getJavaFileManager with a
bunch of "get*Input" methods substituted.


The only problem is - it doesn't work. :) Internally WorkArounds has a
cast to an internal implementation type:

public WorkArounds(BaseConfiguration configuration) {
     [...]
     this.toolEnv = ((DocEnvImpl)this.configuration.docEnv).toolEnv;
}

And it's a showstopper (maybe there are others but I didn't have a
chance to try).

Is there any way forward out of this (or an alternative take I can try)?

Dawid

Reply via email to