issues.jboss.org/browse/RESTEASY-1695
далось получить WADL с помощьюorg.jboss.resteasy.wadl.ResteasyWadlServlet
(https://stackoverflow.com/a/41471710/2528609), но WADL не содержит грамматики. Узлы представления также не содержатelement
атрибут, определяющий тип ответа.
Учитывая следующий класс конечной точки отдыха
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("user")
public class UserEndpoint {
@GET
@Path("")
@Produces(MediaType.APPLICATION_JSON)
public UserResponse getUser() {
UserResponse response = new UserResponse();
response.name = "Michiel";
response.age = 43;
return response;
}
}
А также
public class UserResponse {
public String name;
public int age;
}
Я получаю правильный JSON при переходе к конечной точке, но при переходе по URL-адресу application.xml я получаю
<application xmlns="http://wadl.dev.java.net/2009/02">
<resources base="http://localhost:8080/box/rest">
<resource path="user">
<resource path="">
<method id="getUser" name="GET">
<response>
<representation mediaType="application/json"/>
</response>
</method>
</resource>
</resources>
</application>
WADL не описывает класс UserResponse и не указывает его как тип элемента метода getUser.
Я бы ожидал что-то вроде:
<application xmlns="http://wadl.dev.java.net/2009/02">
<grammars>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="...">
<xs:complexType name="UerResponse">
<xs:sequence>
...
</xs:sequence>
</xs:complexType>
</xs:schema>
</grammars>
<resources base="http://localhost:8080/box/rest">
<resource path="user">
<resource path="">
<method id="getUser" name="GET">
<response>
<representation mediaType="application/json"element="prefix1:UserResponse"/>
</response>
</method>
</resource>
</resources>
</application>
Как получить сгенерированный WADL для включения грамматической части?
Это мой web.xml:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>RESTEasy WADL</servlet-name>
<servlet-class>org.jboss.resteasy.wadl.ResteasyWadlServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RESTEasy WADL</servlet-name>
<url-pattern>/application.xml</url-pattern>
</servlet-mapping>
</web-app>
Это зависимости в моем pom.xml:
<dependencies>
<!-- https://mvnrepository.com/artifact/org.jboss.resteasy/resteasy-wadl -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-wadl</artifactId>
<version>3.0.19.Final</version>
<exclusions>
<exclusion>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Я использую JBoss Wildfly 10.1.0.