Can Enunciate将Java Interface作为数据类型?

时间:2016-11-29 11:31:11

标签: java jaxb jax-rs enunciate

我想使用Enunciate自动生成我的REST API文档。

JAX-RS带注释的代码如下所示:

let newFrame = view.frame.insetBy(dx: 10.0, dy:10.0)

@POST @Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML}) @Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML}) public IAuthentication login(CLogin aLogin) throws XException { return this.pManager.authenticate(aLogin); } 是一个界面,它必须保持一个。这是因为我使用注入,我无法预测方法IAuthentication返回的确切类型。 authenticate()是一个类,它是正常的,因为它是方法CLogin接受的类型的特化。

现在我的问题是,只有Request Body是Enunciate生成的文档中的文档,而不是Response Body。在查找潜在数据类型时,Enunciate似乎忽略了Java接口,并显示以下消息:

  

[DEBUG] [ENUNCIATE] com.example.IAuthentication不是潜在的杰克逊类型,因为它不是一个类或枚举。

我的界面使用JAXB注释进行注释。它们可以从源路径访问。

authenticate()

有没有办法告诉Enunciate Java接口作为数据类型是正常的,必须加以考虑。

附录

此方法的JSON输出的实际示例:

@XmlRootElement
public interface IAuthentication {
    /* methods signatures */
}

1 个答案:

答案 0 :(得分:0)

根据@stoicflame对this issue的回答,Enunciate的2.7版本似乎不支持Java接口作为数据类型。

我使用了JavaDoc标记@returnWrapped。另一个选项是特定于Enunciate的注释@TypeHint。 JavaDoc标记虽然省略了外部运行时依赖性。

修改 版本2.9.0现在发布supports documenting interface types