I am trying to create a WADL using the maven plugin. The project is under construction and the service is working. Here is the POM part of the plugin:
<plugin> <groupId>com.sun.jersey.contribs</groupId> <artifactId>maven-wadl-plugin</artifactId> <version>1.19.2</version> <executions> <execution> <id>generate</id> <goals> <goal>generate</goal> </goals> <phase>package</phase> </execution> </executions> <configuration> <wadlFile>${basedir}/src/main/docs/ThingREST.wadl</wadlFile> <formatWadlFile>true</formatWadlFile> <baseUri>http://localhost:8080/ThingREST</baseUri> <packagesResourceConfig> <param>samp.rest.ws.controller</param> </packagesResourceConfig> <wadlGenerators> <wadlGeneratorDescription> <className>com.sun.jersey.server.wadl.generators.WadlGeneratorApplicationDoc </className> <properties> <property> <name>applicationDocsFile</name> <value>${basedir}/src/main/docs/xml/app-wadl-doc.xml</value> </property> </properties> </wadlGeneratorDescription> <wadlGeneratorDescription> <className>com.sun.jersey.server.wadl.generators.WadlGeneratorGrammarsSupport </className> <properties> <property> <name>grammarsFile</name> <value>${basedir}/src/main/docs/xml/app-wadl-grammar.xml</value> </property> </properties> </wadlGeneratorDescription> </wadlGenerators> </configuration> </plugin>
There are applicationDocFile and grammarFile files, but they do not contain reliable information. I'm not sure what to enable.
Here is the controller:
package samp.rest.ws.controller; import java.util.List; import samp.rest.ws.ThingDB; import samp.rest.ws.vo.Thing; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /** * * @author Grayson */ @RestController public class ThingController { @RequestMapping(value = "/things", method = RequestMethod.GET, headers = "Accept=application/json") //produces = "application/json") public List<Thing> getThings() { return ThingDB.getThings(); } @RequestMapping(value = "/thing/{id}", method = RequestMethod.GET, headers = "Accept=application/json") public Thing getThingById(@PathVariable int id) { return ThingDB.getThing(id); } @RequestMapping(value = "/thingy/{id}", method = RequestMethod.GET) public String getThingy(@PathVariable int id) { return ThingDB.getThing(id).toString(); } @RequestMapping(value = "/addthing", method = RequestMethod.PUT) //, headers = "Accept=application/json") public void addThing(@RequestBody Thing thing) { ThingDB.addThing(thing); List<Thing> lt = ThingDB.getThings(); for (Thing t : lt) { System.out.println(" Post add: " + t.toString()); } } }
Finally, WADL is created here:
<?xml version="1.0" encoding="UTF-8"?> <application xmlns="http://wadl.dev.java.net/2009/02"> <doc jersey:generatedBy="Jersey: 1.19.2 08/25/2016 12:00 AM" xmlns:jersey="http://jersey.java.net/"/> <doc title="Maven Spring REST Sample WADL" xml:lang="en"><![CDATA[ This is the Web Application Description Language (WADL) for a Maven Spring REST Service. This service is intended to serve as a workign model/sample. ]]></doc> <grammars/> <resources base="http://localhost:8080/ThingREST"/> </application>
I expect WADL to include available service calls, as well as detect input types. Obviously, I do not understand this.
I searched high and low for examples and documentation for using this plugin. Any help would be greatly appreciated. Unfortunately, what documentation / examples that exist look outdated.
Thanks in advance.
source share