I managed to get a WADL by using the org.jboss.resteasy.wadl.ResteasyWadlServlet
(https://stackoverflow.com/a/41471710/2528609), but the WADL does not contain the Grammar. The representation nodes also do not contain an element
attribute defining the response type.
Given the following rest endpoint class
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;
}
}
And
public class UserResponse {
public String name;
public int age;
}
I do get the correct JSON when navigating to the endpoint, but when navigating to the application.xml URL I get
<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>
The WADL does not describe the UserResponse class, nor does it indicate it as the element type of the getUser method.
I would have expected something like:
<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>
How do I get the generated WADL to include the grammar part?
This is my 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>
These are the dependencies in my 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>
I use JBoss Wildfly 10.1.0.
来源:https://stackoverflow.com/questions/44112418/missing-grammar-in-jboss-resteasy-generated-wadl