2013-07-03 54 views
3

我正在使用Enunciate在Maven項目中生成REST API文檔。闡明Spring註釋API文檔

的神器maven-enunciate-plugin生成的Web API文檔,但它忽略了Spring註解,如:@Secured(從春季安全)

我試圖產生與具有彈簧支撐maven-enunciate-spring-plugin Maven構件的文檔,但它甚至不生成Web API文檔。

是否有配置聲明或使用另一個聲明maven插件的方法,以便在由Enunciate生成的文檔中識別並提及來自Spring的註釋?

回答

4

沒關係,我設法解決這個問題「應用自定義外觀Enunctiate的文檔」(http://docs.codehaus.org/display/ENUNCIATE/Applying+a+Custom+Skin+to+Enunciate%27s+Documentation

我修改docs.xml.fmt以及對enunciate-docsdocs.fmt,讓「@Secured」註釋是公認的。

不幸的是,對於docs.xml.fmt,沒有乾淨的方式來定製,因爲我們已經爲docs.fmt進行了定製。所以,我不得不用這些修改後的文件打包自己。

我提到了如何處理@Deprecated(java.lang.Deprecated)並遵循類似的方法。

docs.fmt文件,僅加入下面的isDeprecated

[#function isSecured element] 
    [#return (getTagValues(element, "secured")?size > 0)/] 
[/#function] 

現在類似的功能模塊該模塊,

略低於此塊:

[#if isDeprecated(resource)] 
<p class="alert">This resource has been deprecated.</p> 
[/#if] 

如果塊

再添
[#if isSecured(resource)] 
    <p class="note">This resource is available only to these roles: 
    [#assign securedTags = getTagValues(resource, "secured") /] 
    [#if securedTags?size > 0] 
    ${securedTags[0]} 
    [/#if] 

    [#list resource.parent.annotations as tag] 
     ${tag} 
    [/#list] 
    </p> 
[/#if] 

現在,在docs.xml.fmt文件,略低於:

[#if resource.parent.annotations["java.lang.Deprecated"]??] 
    <tag name="deprecated"/> 
[/#if] 

添加以下塊

[#if resource.parent.annotations["org.springframework.security.access.annotation.Secured"]??] 
    <tag name="secured"> 

    [#list resource.parent.annotations["org.springframework.security.access.annotation.Secured"]["value"] as roles] 
     <![CDATA[${roles}]]> 
    [/#list] 

    </tag> 
[/#if] 
1

恐怕不是。雖然可以添加該功能,但聲明不會識別這些Spring註釋。歡迎您到open up a request

(該maven-enunciate-spring-plugin只是用來闡明有絲春季後端運行時,它不包括你問的功能。)

+1

我想已經有一個類似的功能要求:http://jira.codehaus.org/browse/ENUNCIATE -724 – lihsus

+0

以某種方式也涉及到這個問題: http://jira.codehaus.org/browse/ENUNCIATE-618 – lihsus