2012-03-28 3 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() 메소드를 호출 할 때 도크 렛 클래스는 자바 독 하네스에 의해 전달 된 RootDoc 인스턴스로 설정되어 정적 멤버 변수를 사용하는 것입니다 , getter를 통해이 정적 멤버에 대한 호출자에 대한 액세스를 허용합니다. 이것은 정적 멤버를 사용하는 명백한 스레드 안전성 문제와 함께 제공되지만, 제 목적을 위해 잘 작동했습니다.