Woden 1.0M9 Release Notes

February 2011. This is the Milestone 9 (M9) release of Apache Woden.
The Milestone plan is at http://ws.apache.org/woden/dev/1.0/milestoneplan.html.

Key points

Milestone releases will deliver Woden functionality gradually, leading up to a 1.0 release. The objective of a 1.0 release will be to deliver a WSDL processor that fully implements the W3C WSDL 2.0 specification, with functionality to parse WSDL 2.0 documents into the WSDL 2.0 component model and validate their syntax and semantics.

The WSDL 2.0 specification was published as a W3C Recommendation on June 26, 2007.

The M9 release fully supports the parsing of valid WSDL 2.0 documents into the WSDL 2.0 Component model, as defined by the WSDL 2.0 spec and embodied in its Test Suite as at the 9th February 2011. Within the WSDL 2.0 Test Suite at that date, there were 80 testcases in the Component Model Tests (the 'good' document testcases) whose WSDL documents collectively covered all of the WSDL 2.0 elements and attributes defined by the spec and those defined for the SOAP and HTTP binding extensions. Woden passed all of these 80 testcases. Any further change to the test suite will be implemented in Woden after the M9 release to maintain this level of compliance.

The M9 release includes a new validation framework, which will support the WSDL 2.0 assertions. As of M9 many of the assertions still need to be implemented. The main focus of the next release will be to complete Woden's WSDL 2.0 compliance by fully supporting the assertions defined in the WSDL 2.0 spec. That is, completing Woden's validation logic to capture violations of these assertions in the 'bad' WSDL documents in the W3C WSDL 2.0 test suite.

Other significant functionality that remains to be delivered is:

The Woden parser framework and its programming model originated from WSDL4J, a WSDL 1.1 processor. Differences in WSDL 2.0 mean that the Woden WSDL object model is quite different to WSDL4J's, however other WSDL4J features have been reused or adapted, such as its extension architecture.

What's new in this release?

This release includes the following new features:

Current Release Structure

The M9 release is available in 3 types of archives; zip, tar.gz and tar.bz2. For each archive type there is a binary and a source distribution archive, each with its own MD5 and sha1 checksums. The source distribution contains the entire Woden Subversion source code tree.

The binary distribution contains the Woden API Javadoc and the seven Woden jar files described below:
Woden depends on the following libraries and these are also included in the binary distribution:

What's still to do?

Please see this list of what we think needs doing - and please consider helping out if you're interested & able! A more complete and up-to-date list of ToDos is the Woden JIRA issues at http://issues.apache.org/jira/browse/Woden.

Example Usage

   WSDLFactory factory = WSDLFactory.newInstance();
   WSDLReader reader = factory.newWSDLReader();
   reader.setFeature(ReaderFeatures.VALIDATION_FEATURE_ID, true); <-- enable WSDL 2.0 validation (optional) 
   Description descComp = reader.readWSDL(wsdlLoc);               <-- the Description component, always returned
   DescriptionElement descElem = descComp.toElement();            <-- the <description> element, if required
A custom error handler can also be specified as follows:
   Description descComp = reader.readWSDL(wsdlLoc, myErrorHandler);
WSDL can be parsed from some underlying object or byte stream content (rather than a URL) using a WSDLSource object:
   WSDLFactory factory = WSDLFactory.newInstance();
   WSDLReader reader = factory.newWSDLReader();
   reader.setFeature(WSDLReader.FEATURE_VALIDATION, true);
   WSDLSource wsdlSource = reader.createWSDLSource();  //the WSDLSource impl is specific to the WSDLReader impl
   wsdlSource.setBaseURI(wsdlURI);
   wsdlSource.setSource(wsdlSrc);                      //where wsdlSrc might be a DOM Document or Element object
   Description descComp = reader.readWSDL(wsdlSource);

Known Problems/Issues

  1. The StAX/AXIOM implementation is less complete than the Xerces/DOM implementation and some functionality is not yet implemented (e.g. parsing of extenions).
  2. Currently, the only type system supported is W3C XML Schema and this is exposed at certain points of the API (through the use of the XmlSchema interface). Later on we will consider more general, extendable support for other type systems.
  3. Validation does not yet cover all WSDL 2.0 assertions and in fact, the W3C WSDL 2.0 Assertion Test Suite Coverage report shows that 'bad' WSDL testcases for some of these assertions do not not yet exist (i.e. this test suite is incomplete). So, there will currently be some Woden failures on the WSDL 2.0 Validation Tests report on the Dashboard.
  4. To improve performance, a better mechanism is required for caching retrieved documents to reduce network requests.