Woden Incubating 1.0.0 M2 Release Notes

This is the Second Milestone release of Apache Woden.

Key points

This milestone (and up to M4) delivers a DOM-based implementation of Woden. The main objective is to deliver a full implementation of WSDL 2.0 asap. A StAX implementation of the Woden API will be the next objective, along with WSDL 1.1 support and 1.1 to 2.0 conversion.

In M2 the XML Schema model has been changed from the W3C XML Schema API implemented in Xerces for handling to switch to the XmlSchema model in Apache ws-commons.

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:

Current Release Structure

The distribution contains two Woden jar files described below:

Woden depends on Apache Xerces 2.7.1 and on Apache Web Service Common XmlSchema. These libraries are 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!

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

Known Problems/Issues

  1. 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 XSModel interface). Later on we will consider more general, extendable support for other type systems.
  2. Constants that represent possible type systems (e.g. W3 XML Schema) and type system APIs (e.g. XML Schema API) are defined in org.apache.woden.internal.wsdl20.Constants. This is part of the implementation, not part of the API. Users of the API may need access to these constants to query type system support via TypesElement, ElementDeclaration or TypeDefinition. We need to think about how to expose these constants on the API.
  3. Xerces and XmlSchema report some schema errors in the W3C test suite. These relate to resolving cross references between different schemas (e.g. an inline schema imports the namespace of another inline schema and specifies a fragid in its schemaLocation attribute that refers to the id attribute of the imported schema). Possible solutions or work arounds to these problems emerged close to the M2 date, but we didn't have time to resolve them.
    The specific tests that have failed due to these problems are: testImport1B, testSchemaId1G, and testServiceReference1G1.
  4. The JUnit test testImportedWSDL1G in the W3C test suite is currently failing because the function required for part of the test has not yet been implemented in Woden. This will be addressed in M3.
  5. There are insufficient test cases in the test suite for M2. 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.