Friday, March 22, 2013

wadl2java 1.1.4 released

We have released a new version of the wadl2java tool today with a bunch of new features and bug fixes. Again thanks for Pavel Bucek from the Jersey team for his continual help, and for the contribution from my JDeveloper team mate Michael Bachand.

New Features:

  • Added support for generating binding classes for WADL & JSON Schema decribed services.
  • Refactored upgrade transform to wadl-xslt module and added a WADL->HTML transform.
  • Added support for constructors that take a URI, this require use of an internal class UriTemplate in Jersey 2.x to have this work in the RS 2.0 version breaking general compatibility.
  • Fixes with regards to the requirement to use a later version of JAX-B than provided with JDK 6, some examples now required endorsed directory to run / build.
  • The default message for this exception with just a status was just an empty string, so we generate some boilerplate to fix this. (See JAX_RS_SPEC-312)

WADL Bugs:

  • WADL-65 Exception if non-required query parameters are passed in as null.
  • WADL-66 If the XML Schema didn't start with <?xml it would be treated as a JSON Schema.
  • WADL-52 UriBuilder impl dependency missing.

Oracle Bugs:

  • 16234340 matrix parameters were not showing up in the test URL because of inconsistent usage of the resourceTypes and the resourceObjects structures.
  • 16429792, where you would get duplicate methods if there were matrix parameters. These are dealt with like template parameters and as such are dealt with differently and needed to be filtered from the optional list.
  • 16069855 we are modifying the WADL stylesheet (wadl_2009-02.xsl) since it's resulting XHTML document is now properly depicting non ascii characters (such as a french accent) the fix involves adding a element specifying UTF-8 as the charset.
  • 16061180 Cannot process WADL with regex in template parameters, templates needed to be take out for code gen.
  • 15878417 Generate template method to make it easier for IDE tooling to customize client creation
  • 14831111 The client was no longer throwing an exception for a server side failure.
  • 14710107 where the generated javadoc would would not be rendered properly do a XML copying issue.

Future Work:

Going forward we are looking to generate "java.lang.reflect.Proxy" based clients based on the Jersey 2.x module or a future part of the JAX-RS 2.x specification. We are also going to look at transforming other REST service descriptions into XML, for example Swagger, so that they can be fed into the client generation tool.