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:
-
XML parsing of WSDL 2.0 interface and binding components and their children.
(The children include components such as interface operations, and interface faults.)
(*note: WSDL import and include elements are not supported in this milestone.)
(*note: Interface extension via the 'extends' attribute is not supported in this milestone.)
-
Extension architecture to support extension attributes and elements and parsing of the
SOAP extension attributes and elements defined in the spec Part 2, Adjuncts.
-
Creation of a Component model with Description, ElementDeclaration, TypeDefinition,
interface, and binding components.
-
Validation feature support, XML Schema based validation, and validation the types and
interface elements and their children as well as the interface component and its children.
(*note: message exchange pattern (MEP) assertions are not included in this milestone.)
The specific WSDL 2.0 assertions included in this milestone are:
Document assertions: Description-0025, Interface-0031, Schema-0016, Schema-0017, Schema-0018,
Schema-0019, Schema-0020, Schema-0052
Component assertions: FeatureRef-0046, FeatureRef-0047, Interface-0027, Interface-0030,
InterfaceFault-0028, InterfaceFault-0032, InterfaceFaultReference-0045, InterfaceMessageReference-0041,
InterfaceMessageReference-0042, InterfaceOperation-0029, InterfaceOperation-0035, MEP-0037,
Property-0049, Property-0050, PropertyRef-0048
Current Release Structure
The distribution contains two 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 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!
-
As per the M2 plan, there is a need for a lot of JUnit tests for the parser.
-
As per the M2 plan, there is a need for user documentation.
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
-
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.
-
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.
-
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.
-
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.
-
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.