MRL's Dynamically Generated WSDL

A WSDL is a interface defintion.  It's like a contract, that is written in XML.  What is good for? I'm glad you asked :)

A WSDL can allow other developers and applications to create code which will take the WSDL and generate code for a client which they can use directly in their program.  This generated code will have the ability to use the methods in the WSDL very easily.

An example would be if I am a .net developer, and want my cool robot application to use MRL - I could take this ClockService wsdl generate the code and I would have a MRL client.

The C# code could look as easy as this.

ClockService clock = new ClockService("http://somehost/mrl:6767");
clock.setData("hello there!");
clock.startClock();
Almost all modern languages have the ability to interface with SOAP with ease.  Java, C#, Python, Perl, PHP, Ruby all have the capability of creating clients quickly.
 
In most cases a WSDL is constructed by developers or generated from source code during "build time" ... but not in MRL!  This WSDL was generated during "runtime".  MRL uses reflection to inspect the services, and on the fly translates those methods into a document which other systems can use !  (an ongoing issue in web-services is wsdl "contracts" getting out of sync with what the code is doing, but this is impossible if the code which is currently running creates the wsdl on the fly.)

Right now only methods with primitive return types and parameters are getting translated, but as you can see - this constitutes much of the functionality we would be interested in.

WSDLs are a big structured blob of XML .

Not so pretty for most folks.  The top picture above is the wsdl after its been transformed into an HTML document using XSLT .  XSL is a stylesheet which is applied to the XML to make it look or behave differently.  I found this translation here https://code.google.com/p/wsdl-viewer/  

This is the same WSDL contract document but viewed within Eclipse

Niether are exactly what I want.  I want something which you can get helpful information "about" the method. And most importantly, I WANT TO BE ABLE TO CLICK A BUTTON AND HAVE THE METHOD EXECUTE !!! 

Being able to activate nearly any method in MRL from a browser will take a little more work, but we are a step closer to a very cool web display (including a REST interface) !!!