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.

Ответы на вопрос(0)

Ваш ответ на вопрос