2012-03-02 6 views
0

JAutoDocでメソッド(フィールド)アノテーションの内容を調べることができるかどうかを知りたいです。得られたJavadocの@AnnotationsのJAutoDoc評価?

public interface A { 
    @MyAnnotation(attribute=false) 
    String getSomeValue(); 
} 

、Iは、出力するようにこの場合attributeを注釈属性に基づいて値を希望。 #if(...)で正規表現とテンプレートを構築するのは簡単です。プレビューウィンドウに入力している間はすべて正常に機能しますが、コードでは機能しません。JAutoDocは注釈をすべて無視しているようです。メソッド/フィールド署名を超えて見るように説得する方法はありますか?

私はテンプレートを挿入するためにいくつかのレベルを試しました。メソッド階層内のスタンドアロンテンプレート、または「その他のテンプレートを返す」テンプレートのサブテンプレートです。

おかげで、フランク・

答えて

0

JAutodocでバージョン1.10.0で、このようなテンプレートを構築することができます。

#if(${e.hasAnnotation('MyAnnotation')}) 
#set($vc=$e.getAnnotation('MyAnnotation')) 
#if(${$vc.getValue('mandatory')}) 
The value is mandatory. 
#else 
The value is optional. 
#end 
1

JAutodocは直接注釈をサポートしていませんが、多分このテンプレートは、あなたのニーズに合った:

/** 
#set($found = 'false') 
#if(${e.getMember().getMember().getAnnotations()}) 
    #foreach($a in ${e.getMember().getMember().getAnnotations()}) 
    #if(${a.getElementName()} == 'MyAnnotation') 
     #set($found = 'true') 
     Annotation found: ${a.getElementName()} 
     #foreach($vp in ${a.getMemberValuePairs()}) 
     #if(${vp.getMemberName()} == 'attribute') 
      #if(${vp.getValue()} == 'false') 
      attribute is false 
      #elseif(${vp.getValue()} == 'true') 
      attribute is true 
      #else 
      attribute is ${vp.getValue()} 
      #end 
     #end 
     #end 
    #end 
    #end 
#end 
#if($found == 'false') 
* No Annotation. 
#end 
*/ 
+0

テンプレートはどこに配置しますか?それをテンプレート "Return others"に入れても機能しません。 – tichy

+0

上記の例では、「ゲッター」テンプレートが一致します。 – Martin

+0

最新のjautodocプラグインはアノテーションをサポートしています。 – tichy