Apache CXF API

org.apache.cxf.ws.addressing.soap
Class VersionTransformer

java.lang.Object
  extended by org.apache.cxf.ws.addressing.VersionTransformer
      extended by org.apache.cxf.ws.addressing.soap.VersionTransformer

public class VersionTransformer
extends VersionTransformer

This class is responsible for transforming between the native WS-Addressing schema version (i.e. 2005/08) and exposed version (currently may be 2005/08 or 2004/08).

The native version is that used throughout the stack, were the WS-A types are represented via the JAXB generated types for the 2005/08 schema.

The exposed version is that used when the WS-A types are externalized, i.e. are encoded in the headers of outgoing messages. For outgoing requests, the exposed version is determined from configuration. For outgoing responses, the exposed version is determined by the exposed version of the corresponding request.

The motivation for using different native and exposed types is usually to facilitate a WS-* standard based on an earlier version of WS-Adressing (for example WS-RM depends on the 2004/08 version).


Nested Class Summary
static class VersionTransformer.Names200403
          Adds 2004/03 headers to set.
static class VersionTransformer.Names200408
          Holder for 2004/08 Names
 
Field Summary
protected  MAPCodec codec
           
static Set<QName> HEADERS
           
 
Fields inherited from class org.apache.cxf.ws.addressing.VersionTransformer
NATIVE_VERSION
 
Constructor Summary
VersionTransformer(MAPCodec mapCodec)
          Constructor.
 
Method Summary
<T> T
decodeAsNative(String encodedAs, Class<T> clz, Element headerElement, javax.xml.bind.Unmarshaller unmarshaller)
          Decodes a MAP from a exposed version.
<T> void
encodeAsExposed(String exposeAs, T value, String localName, Class<T> clz, Element header, javax.xml.bind.Marshaller marshaller)
          Encode message in exposed version.
 
Methods inherited from class org.apache.cxf.ws.addressing.VersionTransformer
convert, convert, convert, convert, convert, convert, convert, convert, convert, convert, convert, convertTo200403, convertTo200403, convertTo200403, convertToInternal, convertToNative, getExposedJAXBContext, getExposedReferenceType, isSupported, parseEndpointReference
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HEADERS

public static final Set<QName> HEADERS

codec

protected MAPCodec codec
Constructor Detail

VersionTransformer

public VersionTransformer(MAPCodec mapCodec)
Constructor.

Parameters:
mapCodec - the MAPCodec to use
Method Detail

encodeAsExposed

public <T> void encodeAsExposed(String exposeAs,
                                T value,
                                String localName,
                                Class<T> clz,
                                Element header,
                                javax.xml.bind.Marshaller marshaller)
                     throws javax.xml.bind.JAXBException
Encode message in exposed version.

Parameters:
exposeAs - specifies the WS-Addressing version to expose
value - the value to encode
localName - the localName for the header
clz - the class
header - the SOAP header element
marshaller - the JAXB marshaller to use
Throws:
javax.xml.bind.JAXBException

decodeAsNative

public <T> T decodeAsNative(String encodedAs,
                            Class<T> clz,
                            Element headerElement,
                            javax.xml.bind.Unmarshaller unmarshaller)
                 throws javax.xml.bind.JAXBException
Decodes a MAP from a exposed version.

Parameters:
encodedAs - specifies the encoded version
clz - the class
headerElement - the SOAP header element
marshaller - the JAXB marshaller to use
Returns:
the decoded value
Throws:
javax.xml.bind.JAXBException

Apache CXF API

Apache CXF