2013-02-20 45 views
0

我正在嘗試使用聲明來重新生成基於Jersey的REST API的文檔。遇到幾個絆腳石:使用Iterable和泛型聲明文檔問題

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public Iterable<Project> listAll() { 
    ... 
} 

聲明似乎不能插入Iterable。在我的文檔中,我只是得到「元素:(自定義)」。請注意,項目類型使用@XmlRootElement和@JsonRootType註釋。

類似地,對於這樣的代碼:

@POST 
@Consumes(MediaType.APPLICATION_JSON) 
public Response save(final T persistable) { 
    ... 
} 

我得到「元素:(定製)」兩者的方法參數(注:T具有一個延伸的限制),以及返回類型(其中,反應是:javax.ws.rs.core.Response)。此外,闡明似乎無法弄清楚返回的媒體類型:它列出了XML,JSON和*(想起它,我不確定我想要的是什麼,但我知道不是這樣)

任何想法?

回答

1

Enunciate使用JAX-RS規範來生成其文檔。不幸的是,Iterable接口不是一個正式支持的JAX-RS對象類型,所以不知何故,您使用自定義消息正文編寫器來將Iterable序列化爲JSON(我假設它爲Jackson?)。

所以,如果你想成爲正式的關於您的返回類型,你可以創建一個包裝的bean闡明可以識別並返回的,與其Iterable,例如:

@XmlRootElement 
public class Projects { 
    public Collection<Project> projects; 
}