About Addressing

Apache Addressing was an implementation of the Web Services Addressing (WS-Addressing), published by the IBM, Microsoft and BEA as a joint specification, on top of Apache Axis. Version 1.0 of the library was donated to the Apache Software Foundation, which abandoned the project in 2005.

As of today, a considerable amount of projects depend on this library. Unfortunately, most of them use modified versions, and this produces incompatibility issues that are extremely hard to avoid, even using advanced techniques like classpath concealing.

In an effort of integrating several such projects, like GEMSS, Fura, and OGSA-DAI, I have decided to take this library out from the Apache archives and move it forward to a stable, bug-free version that could be used by anyone.

What Are The Differences?

While an official 1.0 version was released before the project was closed, it was far from complete. There were API inconsistencies, the documentation was poor, and no compliance tests were conducted. What is more, it contained several bugs that prevented the library from being used in production.

In an attempt to solve all these issues, I have made several changes to the code-base, as well as to the building system.

Project Building

The most obvious change in this aspect is that now Maven2 is used. The official releases will be mirrored to the Maven Central Repository as Maven2 artifacts.

No provision is made to publish them for Maven1. For those wanting to use this library with Maven1, I strongly recommend using a Repository Manager like Nexus .

Several code analysis reports have been included in the project site generation, like FindBugs or PMD. The goal is to proactively detect and fix potential bugs and/or design flaws.

API Changes

The library now requires Java 5 as its running environment. If you do need it to run under JDK 1.4 or below, my recommendation would be to use Retroweaver for retro-translating the classes.

As long as possible, the API has been kept backwards compatible. There are, however, some differences that may prevent code compiled with Addressing 1.0 from working with the 1.1 library.

The original code does not specify serialVersionUID values for any of the Serializable classes. This means that, depending on the compiler used, the new classes may be not compatible with the old ones. I have used the Sun JDK serialver tool for finding out the UIDs of the old classes, and preserved these values in the new classes, hoping this will be enough for most cases.

EndpointReference access to reference properties, parameters and metadata was not consistent. While there were beans for parameters and properties, metadata was just a List of Objects. This has been changed, and now three beans exist for each of the mentioned fields. All these beans extend from ArrayList , so code relying on accessing Metadata through a List should still work.

As a side effect of moving to Java 5, some API classes and methods are now "generics aware". This means that Java 5 code using the old library may not compile without changes, because of type errors.

Finally, as I am the only developer in this project, I have re-formatted the source code to follow a set of conventions I am more comfortable with. ;-)

Testsuite

The testsuite is being moved to JUnit 4.1. This is a work in progress, as my priority was to have it working without failures.

The Cobertura Report shows that currently, the code coverage is rather low. I expect this to improve with time.

I am considering to add the W3C Web Services Addressing 1.0 Testsuite as part of the project integration testsuite. This should help to improve the test code coverage statistics, and to detect interoperability issues.

Help Wanted

From these lines, I would like to invite anyone with experience in this library to share their knowledge. I know that many people has spent lots of time in fixing bugs and interoperability issues in the Addressing library, and I do believe that with their help, this will become a great project.

If I have convinced you, please let me know through the project forums :-)