Switching to WADL

Coordinator
Sep 19, 2009 at 5:39 PM
Edited Sep 20, 2009 at 4:06 AM

I've recently stumbled onto WADL (http://weblogs.java.net/blog/2009/02/03/draft-wadl-update) and realized that it accomodates all of our REST metadata needs (with a few minor exceptions).  As a result, I'm adopting it as the core of ExtREST.  Originally I was designing my own schema that would reside in a database but this spec already has everything I need and more! I also think that XML is going to provide a much more portable "container" for our REST metadata than a database.  Lastly, WADL has been around for a few years so it has legs and has benefited from a few release refinements.

The new architecture plan is to have the path to a *.wadl file defined in the web.config.  A new WADLManager class will take center stage.  During global.asax Application_Start a call to the WADLManager's LoadWADL() method will hydrate object representations of WADL metadata and remain instantiated for the life of the website.  It will register an HttpHandler to receive all incoming requests and marshall them to the appropriate handler (defined in the *.wadl file).  To process incomming requests, the WADLManager will instantiate a WADLContext object.  This object encapsulates all info needed to process in incoming request.  This would include what processing class will process the URL, what request types are allowed, what error codes are returned, what querystring params are allowed, documentation about the method, a path to an *.xsd file that will be used to validate the request, what methods can be used on the resource (PUT/POST/GET/DELETE).

As a side note, there may be an interesting evolution of this REST engine with HATEOAS.  HATEOAS involves a non-static WADL that morphs and changes based on object states.  Clients can hard wire their client libraries to interact with published WADL resource but the realtime availability of these resources could change based on state.  This is a very cool concept and breathes new capabilities into ROA that have no equivalent in the SOA space.

I'm excited about this change in the architecture.  I hope to have this in place by 9/26/09.

For reference, here are a few interesting articles on WADL:

Mark

Jan 7, 2010 at 8:28 AM

Am I correct in assuming that the development of this library/application has ended, and WADLRocket is it's replacement?

Thanks

vSv