2013-08-07 15 views
1

我正在使用發音爲Resteasy服務生成文檔。我能夠 生成所需的文檔,但我有一個關於一些自定義參數的問題。闡明自定義@QueryParam註釋

我們的服務接口由定製的@QueryParam註釋組成,用於列出 方法實現支持的所有查詢參數。我現在不想解釋 爲什麼我們決定定製@QueryParam,這只是一個架構決定。

儘管所有現在發音不承認自定義@QueryParam所以我所有的Resteasy方法都沒有@QueryParam參數(只有@PathParam)。

樣品服務接口:

@GET 
@Path("{regionId}/{userId}/validate-access") 
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) 
@QueryParams(uniqueName = "validatePin", params = { 
     @QueryParam(param = Param.PIN, isRequired = true), 
     @QueryParam(param = Param.PIN_TYPE, isRequired = false, valueSet = { "valueA", "valueB" }, defaultValue = "valueA") }) 
StatusResponseResult validatePin(@Context HttpServletRequest hsr, @PathParam("regionId") int regionId, 
     @PathParam("userId") int userId, @Context UriInfo info) throws RestApiException; 

@QueryParam類的執行情況:

@Retention(RetentionPolicy.RUNTIME) 
public @interface QueryParam { 
    public Param param(); 
    public boolean isRequired() default false; 
    public boolean canBeEmpty() default true; 
    public String defaultValue() default ""; 
    public String minValue() default ""; 
    public String maxValue() default ""; 
    public String format() default ""; 
    public String[] valueSet() default {}; 
} 

實現@QueryParams類:

@Retention(RetentionPolicy.RUNTIME) 
public @interface QueryParams { 
    String uniqueName(); 
    QueryParam[] params(); 
} 

在生成HTML文檔時,有沒有辦法告訴Enunciate同時考慮我的定製@QueryParam

回答

0

您可能可以嘗試使用@ResourceMethodSignature註釋明確告訴闡明該方法試圖執行的操作。 More info here.

你也許可以嘗試將兩者@QueryParams註釋@QueryParam註解。

如果這兩者都不起作用,我唯一能想到的就是創建一個自定義的Enunciate模塊,該模塊設置自定義@QueryParams註釋試圖聲明的模型。 More (but not much) info here.

+0

該鏈接已損壞,現在它指向https://github.com/stoicflame/enunciate/wiki/No-JAX –

0

好吧,用@ResourceMethodSignature我能夠得到文檔中的所有參數(查詢和路徑)。唯一的缺點是我需要再次在@ResourceMethodSignature中列出參數。如果在添加新參數(或刪除)時忘記更新@ResourceMethodSignature,則文檔將不同步。

例子:

@ResourceMethodSignature(
     pathParams = { @PathParam("regionId"),@PathParam("userId") }, 
     queryParams = { @javax.ws.rs.QueryParam("pin"), 
         @javax.ws.rs.QueryParam("pin_type") } 
) 

當你 「讀」 所有@ javax.ws.rs.QueryParam你覺得你也可以考慮其他的註解?