To meet the requirements from JAX-WSA to define a custom binding ID, I
modified the code and introduced the BindingID class.
Previously, we were using String to represent a binding ID, and in
various places just comparing it against a few known values to define
how to process it. This made it impossible to recognize new binding IDs
that are plugged in by higher-level technologies.
The newly introduced BindingID class works kinda like how java.net.URL
works for URL-like strings. BindingID gives you various methods to query
the key characteristic of binding ID that are important for the JAX-WS
RI, such as the version of SOAP, etc.
This allows JAX-WS to work with any binding ID that exposes a few
characteristics, and upper-layer technologies can define and access
additional meaning of those bindingIDs from their pipes, from their
WSDLParserExtensions, etc.
I tried to reduce the amount of changes, but this is a breaking change.
In particular the following two places are major changes:
public abstract class PipelineAssemblerFactory {
// this used to take a String
public abstract PipelineAssembler doCreate(BindingID bindingId);
}
public interface WSBinding extends Binding {
// this used to return a String
@NotNull BindingID getBindingId();
}
--
Kohsuke Kawaguchi
Sun Microsystems kohsuke.kawaguchi_at_sun.com