标签: enunciate

在Enunciate中收集的TypeHint

我有一些REST服务(使用和生成application/json),我用它@TypeHint来生成文档.

现在我有这样的事情:

import javax.ws.rs.core.Response;
...

@Path("/path")
public class MyClass {

    @GET
    @TypeHint(MyResponse.class)
    public Response getIt() {

        MyResponse resp = ... ;
        return MyBuilder.build(resp);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是MyResponse是一个包装List<MyType>.

我的build方法MyResponse看起来像这样:

public static Response build(Serializable payload) {
    return Response.ok(msr).header(...).build();
}
Run Code Online (Sandbox Code Playgroud)

我想直接使用List<MyType>而不是MyResponse.TypeHint在以下代码中使用哪种方法最好?

    @GET
    @TypeHint(/* TODO */)
    public Response getIt() {

        List<MyType> myList = ... ;
        return MyBuilder.build(myList);
    }
Run Code Online (Sandbox Code Playgroud)

我在考虑以下选项:

  1. @TypeHint(List.class)
  2. @TypeHint(MyType.class)
  3. @TypeHint(List<MyType>.class) - >遗憾的是,由于Java类型擦除,这不起作用.

题:

3号有没有有效的替代方案? …

java annotations enunciate code-documentation type-hinting

12
推荐指数
2
解决办法
2483
查看次数

我可以在Gradle中使用Maven插件(enunciate)吗?

我有一个名为enunciate的maven插件,它可以生成很好的API文档.我宁愿使用Gradle作为我的构建工具,但看起来它在这方面有限,或者我只是不知道如何使用它.

我想知道是否有可能以某种方式在gradle中使用maven插件(enunciate)?我是否必须编写一个蚂蚁脚本并调用它?到目前为止,我无法找到发音的gradle示例,所以我猜它不受支持?

ant plugins enunciate gradle maven

11
推荐指数
2
解决办法
1万
查看次数

Swagger不够聪明,无法处理匿名类型(如地图)

我正在使用enunciate生成REST API的Swagger文档.我的一个遗留bean包含一个Map,Swagger抱怨这个:

[INFO] --- maven-enunciate-plugin:1.27:docs (default) @ foo-api ---
[INFO] initializing enunciate.
[INFO] invoking enunciate:generate step...
[WARNING] Validation result has errors.
/.../rest/BarBean.java:170: [swagger] Swagger isn't smart enough to handle anonymous types (such as maps).
   public HashMap<String, BazBean> getBazBeans() {
Run Code Online (Sandbox Code Playgroud)

是否有任何注释我可以放入bean类中,以便Swagger可以处理这个?

除此之外,有没有办法让Swagger简单地忽略这个领域或全班?我知道Swagger在没有@XmlRootElement注释的情况下忽略了类,但是BazBean在另一个接受XML的端点中不幸地使用了它.

java enunciate swagger swagger-ui

11
推荐指数
1
解决办法
1144
查看次数

如何使用Enunciate为Spring-Jersey项目生成REST文档?

我正在努力处理我认为非常简单的事情 - 为一组已经存在的REST服务生成文档,这些服务基本上只是用JAX-RS注释注释的POJO .我使用Jersey作为实现提供者.REST API作为Spring Web应用程序的一部分进行部署.

我想只生成REST服务POJO的文档,所以我的enunciate.xml配置是这样的:

<?xml version="1.0"?>
<enunciate label="novaglobalapi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://enunciate.codehaus.org/schemas/enunciate-1.25.xsd">

    <api-classes>
        <include pattern="com.something.api.rest.*"/>
    </api-classes>

    <modules>
        <docs docsDir="restapi" title="REST API"/>
    </modules>
</enunciate>
Run Code Online (Sandbox Code Playgroud)

我按照enunciate文档中的建议配置了我的pom.xml:

<build>
...
    <plugin>
        <groupId>org.codehaus.enunciate</groupId>
            <artifactId>maven-enunciate-plugin</artifactId>
            <version>1.25</version>
            <executions>
                <execution>
                    <goals>
                        <goal>docs</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <configFile>enunciate.xml</configFile>
            </configuration>
    </plugin>
...
</build>
Run Code Online (Sandbox Code Playgroud)

但是当我运行时mvn enunciate:docs,我收到以下构建错误:

[ERROR] Failed to execute goal org.codehaus.enunciate:maven-enunciate-plugin:1.25:docs (default-cli) on project NovaGlobalSSOAPI: Problem assembling the enunciate app. invalid LOC header (bad signature) -> …
Run Code Online (Sandbox Code Playgroud)

spring jersey enunciate maven

10
推荐指数
1
解决办法
1万
查看次数

如何在Enunciate生成的文档中包含JSON Response Body的格式?

目前Enunciate生成REST API文档,但Response Body不包含有关响应的JSON结构的信息.根据我的理解,如果我将类包含在由Jersey to JSON序列化/反序列化的数据实体中,则enunciate将能够生成该文档的那一部分.

数据实体位于不同的模块中,按照发布文档 - 多模块项目中的建议与其源一起打包

...
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.1.2</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>
...
Run Code Online (Sandbox Code Playgroud)

这就是我的enunciate.xml的样子:

<?xml version="1.0"?>
<enunciate label="someapi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://enunciate.codehaus.org/schemas/enunciate-1.25.xsd">

    <api-import pattern="com.something.business.vo.**"/>
    <api-import pattern="com.something.business.domain.**"/>

    <api-classes>
        <include pattern="com.something.web.ssoApi.rest.*"/>
        <include pattern="com.something.business.vo.**"/>
        <include pattern="com.something.business.domain.**"/>
    </api-classes>

</enunciate>
Run Code Online (Sandbox Code Playgroud)

这就是文档的样子:

文档截图

如您所见,响应主体只包含element: (custom).

如何使其包含响应的JSON结构?

enunciate maven

9
推荐指数
1
解决办法
3645
查看次数

您如何记录REST API?

您如何记录REST API?不仅仅是资源是什么的文档,而且实际上是什么是在请求中发送的数据以及在响应中发回的数据.知道某些东西需要发送XML并返回XML是没有用的; 或JASN; 管他呢.如何记录请求中发送的数据以及响应中发回的数据?

到目前为止,我能找到的最好的是Enunciate工具,您可以在其中记录REST API和数据元素.是否为此设置了正确的工具类型,我是否错过任何其他提供此功能的工具,我应该看一下?

我的REST API的消费者可以使用任何语言python,Java,.NET等

rest enunciate

9
推荐指数
2
解决办法
6706
查看次数

java 1.8上的maven-enunciate-plugin现在从最新的JDK中删除了(即java注释处理工具)

问题是如何让java 1.8和maven-enunciate-plugin一起工作?

使用maven插件org.codehaus.enunciate version 1.29和OSX JDK 1.7.0_25一切都很好.Enunciate取决于apt,我看到此运行时警告 1.7.0_25

[INFO]调用enunciate:generate step ...

警告:计划在下一个主要JDK版本中删除apt工具及其关联的API.这些功能已被javac和标准化的注释处理API javax.annotation.processing和javax.lang.model取代.建议用户迁移到javac的注释处理功能; 有关更多信息,请参阅javac手册页.

更改1.8.0_05构建失败时...

apt确实没了,因此com.sun.mirror.apt.AnnotationProcessorFactory没有找到运行时错误.

mvn install -pl myProject -e -X

...

<snip>
urls[46] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-xml/1.29/enunciate-xml-1.29.jar
urls[47] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-java-client/1.29/enunciate-java-client-1.29.jar
urls[48] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-c/1.29/enunciate-c-1.29.jar
urls[49] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-obj-c/1.29/enunciate-obj-c-1.29.jar
urls[50] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-csharp/1.29/enunciate-csharp-1.29.jar
urls[51] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-ruby/1.29/enunciate-ruby-1.29.jar
urls[52] = file:/Users/k1/.m2/repository/org/codehaus/enunciate/enunciate-php/1.29/enunciate-php-1.29.jar
Number of foreign imports: 1
import: Entry[import  from realm ClassRealm[maven.api, parent: null]]

-----------------------------------------------------

    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:165)
    ... 20 more
Caused by: java.lang.NoClassDefFoundError: com/sun/mirror/apt/AnnotationProcessorFactory
    at org.codehaus.enunciate.DocsMojo.loadMavenSpecificEnunciate(DocsMojo.java:107)
    at …
Run Code Online (Sandbox Code Playgroud)

java apt annotations enunciate maven

7
推荐指数
1
解决办法
6261
查看次数

java.lang.NoClassDefFoundError:com/sun/mirror/apt/AnnotationProcessorFactory执行时执行Enunciate ant任务

尝试使用Enunciate生成Java项目的文档时,我收到了以下堆栈跟踪.我正在使用JDK 1.8.0_25和Enunciate 1.30 RC1.

BUILD FAILED
C:\dev\PayWay\make\build.xml:882: java.lang.NoClassDefFoundError: com/sun/mirror/apt/AnnotationProcessorFactory
        at org.codehaus.enunciate.main.EnunciateTask.execute(EnunciateTask.java:93)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.Main.runBuild(Main.java:851)
        at org.apache.tools.ant.Main.startAnt(Main.java:235)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.lang.ClassNotFoundException: com.sun.mirror.apt.AnnotationProcessorFactory
        at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1374)
        at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1323)
        at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1076)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 17 more
Run Code Online (Sandbox Code Playgroud)

这个问题的原因是什么?

enunciate java-8

7
推荐指数
1
解决办法
6153
查看次数

修改Enunciate生成的配置文件以使用CXF的最新jackson库

Enunciatecxf-jaxrs-servlet.xml自动生成文件并指定:org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider作为JAX-RS提供者.此课程已更改为com.fasterxml.jackson.jaxrs.JacksonJaxbJsonProvider最新的Jackson库.如何在自动生成的文件Enunciate中将新类指定为JSON提供程序?或者我可以Enunciate使用用户提供的XML文件?

java rest cxf enunciate jackson

5
推荐指数
1
解决办法
664
查看次数

Can Enunciate为处理泛型类型的API生成文档?

给定一个抽象的,通用的Resource类和具体实现:

public abstract class AbstractResource<T> {

    @Autowired
    private SomeService<T> service;

    @Path("/{id}")
    @GET
    public T get(@PathParam("id") String id) {
        return service.get(id);
    }
}

@Path("/people")
public class PersonResource extends AbstractResource<Person> { }
Run Code Online (Sandbox Code Playgroud)

看来,在生成文档时PersonResource,Enunciate没有拿起get()返回a 的事实Person.

  1. Person未列在"数据模型">"数据类型"部分中.

  2. 在GET部分下,Response Body将元素类型显示为"(custom)".

这些问题是因为使用泛型作为实体类型吗?有没有办法提示发音真实类型是什么,以便正确生成文档?

在此输入图像描述

java rest jax-rs enunciate

5
推荐指数
1
解决办法
960
查看次数