Enunciate 可以将 Java 接口作为数据类型吗?

Can Enunciate take Java Interface as data types?

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

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

@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 是一个 class,这没关系,因为它是方法 authenticate() 接受的类型的特化。

现在我的问题是只有请求主体是 Enunciate 生成的文档中的文档,而不是响应主体。在寻找潜在的数据类型时,Enunciate 似乎忽略了 Java 接口,并显示以下消息:

[DEBUG] [ENUNCIATE] com.example.IAuthentication isn't a potential Jackson type because it's not a class or an enum.

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

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

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

附录

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

{
    "token": "imec51lpb72lgsdrb0ftvfomt3",
    "auth_key": ""
}

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

我求助于使用 Java文档标签 @returnWrapped。另一种选择是特定于 Enunciate 的注释 @TypeHint。 JavaDoc 标签让我省去了外部运行时依赖性。

编辑: Enunciate 版本 2.9.0 现在 supports documenting interface types