Woden Incubating 1.0.0 M5 Release Notes
This is the Fifth Milestone release of Apache Woden.
The Milestone plan is at http://incubator.apache.org/woden/dev/1.0/milestoneplan.html.
Incubation Disclaimer
The Woden project is an effort undergoing incubation at the Apache
Software Foundation (ASF), sponsored by Davanum Srinivas. Incubation is
required of all newly accepted projects until a further review indicates
that the infrastructure, communications, and decision making process have
stabilized in a manner consistent with other successful ASF projects. While
incubation status is not necessarily a reflection of the completeness or
stability of the code, it does indicate that the project has yet to be fully
endorsed by the ASF.
Key points
This milestone delivers a DOM-based implementation of Woden.
The initial objective is to deliver a full implementation of WSDL 2.0 parsing
and validation. Work is underway to integrate Woden into Axis2.
A StAX implementation of the Woden API will be the next objective, along
with WSDL 1.1 support, 1.1 to 2.0 conversion, serialization and full support
for creating and modifying WSDL documents.
The Woden framework and programming model are similar to WSDL4J, such as the
factory, reader and WSDL xml object model. Other features will be reused too,
such as the extension mechanism.
What's in this release?
This release includes the following new features:
-
Parsing of HTTP binding and endpoint extensions are now fully supported by Woden,
as HTTP extension elements and attributes via the Element API and
as HTTP component extension properties via the Component API.
Related junit testcases have been added to the test suite.
-
Interface extension is now fully supported, so for example Interface and Binding nested
components can now refer to derived or inherited faults and operations.
-
The WSDLReader API has been expanded to support reading WSDL from sources other
than a URI - for example, from a DOM Element or from an InputSource.
-
A technical description of the extension mechanism and the SOAP and HTTP extension
implementations has been added to the Woden Wiki.
-
An Ant task for using Woden from Ant to perform WSDL 2.0 validation. The task is called
ValidateWSDL20 and is packaged in a new jar file, woden-ant.jar. To use Woden with Ant add the
jar files woden.jar and woden-ant.jar to your Ant installation. The User Guide on the Woden
website will be updated soon with details of this Ant task.
-
A standalone converter program that uses WSDL4J to read a WSDL 1.1 service definition then
serializes it as a WSDL 2.0 description. org.apache.woden.tool.converter.Convert is packaged in
the woden.jar file. Investigation is underway to incorporate this conversion logic into Woden's
planned support for WSDL 1.1 to 2.0 conversion.
Current Release Structure
The distribution contains three Woden jar files described below:
-
woden-api.jar - Contains only the public Woden API (not yet final).
This jar is suitable for those that wish to create their own implementation of
the API.
-
woden.jar - Contains the public Woden API (not yet final) and current DOM
implementation.
-
woden-ant.jar - Contains the Ant task ValidateWSDL20.
Woden depends on Apache Xerces 2.8.0 and on Apache Web Service Commons XmlSchema 1.0.
These libraries are included in the distribution. The standalone WSDL 1.1 conversion
program depends on WSDL4J 1.52 and this library is also included in the distribution.
What's still to do?
Please see a list of what we think needs doing - and please consider helping out if
you're interested & able!
-
A URL resolver mechanism needs to be implemented, something like an EntityResolver or CatalogResolver.
-
Unit tests the extensions are mostly complete, but tests for the core WSDL 2.0
Component model and its underlying Element model are still largely outstanding.
These were a major plan item for M5 but were overshadowed by the effort required
to complete the HTTP extensions and test cases. These are still crucially important
for regression testing further development and will remain a major focus item for the
next milestone.
-
The User Guide added after M3 needs updating to reflect the functional additions for M4 and M5.
-
Technical design documentation for developers needs to be created, probably on the Woden Wiki.
-
Integrating the stand-alone WSDL 1.1 to 2.0 converter tool into Woden to produce
a Woden WSDL 2.0 object model from a parsed WSDL 1.1. document.
-
Validation of MEPs and extension elements (such as those for SOAP and HTTP bindings and
for type systems other than XML schema) has not yet been implemented.
-
Serialization (e.g. WSDLWriter) has not been implemented.
-
Support for non-XML Schema type systems has not yet been implemented.
-
See the Woden JIRA issues at http://issues.apache.org/jira/browse/Woden.
-
See also the Task List on the Woden wiki at http://wiki.apache.org/ws/FrontPage/Woden/TaskList.
Example Usage
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader reader = factory.newWSDLReader();
reader.setFeature(ReaderFeatures.VALIDATION_FEATURE_ID, true); <-- enable WSDL 2.0 validation (optional)
DescriptionElement desc = reader.readWSDL(wsdlLoc); <-- the <description> element
Description descComp = desc.toComponent(); <-- the Description component
A custom error handler can also be specified as follows:
DescriptionElement desc = reader.readWSDL(wsdlLoc, handler);
WSDL can be now be parsed from a DOM Element, DOM Document or InputSource using a WSDLSource object:
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader reader = factory.newWSDLReader();
reader.setFeature(WSDLReader.FEATURE_VALIDATION, true);
WSDLSource wsdlSource = reader.createWSDLSource();
wsdlSource.setBaseURI(wsdlURI);
wsdlSource.setSource(docEl);
DescriptionElement desc = reader.readWSDL(wsdlSource);
Description descComp = desc.toComponent();
Known Problems/Issues
-
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.
-
In the Element API, certain 'name' attributes are being handled as QNames whereas they
are defined in the infoset as NCNames. This is being fixed.
-
There are various failures in the test results for the Component Interchange format testing
being conducted by the WSDL 2.0 Working Group. These need to be investigated prior to the
W3C WSDL 2.0 Interop event in early July 2006.
-
There are insufficient test cases in the test suite for M5. The suite requires more
junit tests for the Woden framework and the W3C WSDL test suite is in the process of
being annotated with assertions that tie each test to a specific part of the WSDL 2.0
spec.