2012-03-28 19 views
1

私は、既存のJavaソースファイルからJavadocをスクラップし、カスタムドックレットを介して前処理するツールを作成しています(処理の詳細は関係ありません)。私はドックレットを書いており、Java documentationに示されているように、プログラマチックAPIを介して自分のコードからドックレットを呼び出すことができます。プログラムで呼び出されたJavadocドックレットの出力を呼び出し元から取得するにはどうすればよいですか?

ドックレットを実行した結果が、最初のクラスのJavaオブジェクトを介してexecute()メソッドの呼び出し側に返すことができないという意味で、このメカニズムは「書き込み専用」に見えます。代わりに、ドックレット内のファイルに中間出力を書き込んだり、それを私の呼び出し元から読み込んだりするなどのkludgeに頼らざるを得ません。

私の質問:たとえば、呼び出し元でカスタムドックレットによって直接生成された文字列を取得する方法はありますか?たとえば:

public void foo() { 
    // Invoke my custom doclet via Javadoc programmatically 
    com.sun.tools.javadoc.Main.execute(new String[] {"-d", "docs", "- sourcepath", "/home/usr/src", "p1", "p2"}); 

    // Access the String output of my doclet here 
    String processedJavadoc = getTheOutputOfMyDoclet(); 
} 

ありがとうございます!

答えて

0

オクラホマので、私はこれを行うために思い付くことができる最もエレガントな方法は、ドックレットのstart()メソッドを呼び出すときにドックレットクラスはJavadocのハーネスによって渡さRootDocインスタンスに設定されている静的メンバ変数を使用することですその後、ゲッターを介してこの静的メンバーへの呼び出し側へのアクセスを許可します。これには、静的メンバーを使用するという明白なスレッドの安全性の問題がありますが、私の目的にはうまくいきました。

関連する問題