com.sun.xml.ws.client.sei
Class ResponseBuilder

java.lang.Object
  extended by com.sun.xml.ws.client.sei.ResponseBuilder
Direct Known Subclasses:
ResponseBuilder.AttachmentBuilder, ResponseBuilder.Body, ResponseBuilder.Composite, ResponseBuilder.DocLit, ResponseBuilder.Header, ResponseBuilder.None, ResponseBuilder.NullSetter, ResponseBuilder.RpcLit

abstract class ResponseBuilder
extends Object

Reads a response Message, disassembles it, and moves obtained Java values to the expected places.


Nested Class Summary
(package private) static class ResponseBuilder.AttachmentBuilder
          Reads an Attachment into a Java parameter.
(package private) static class ResponseBuilder.Body
          Reads the whole payload into a single JAXB bean.
(package private) static class ResponseBuilder.Composite
          ResponseBuilder that is a composition of multiple ResponseBuilders.
(package private) static class ResponseBuilder.DocLit
          Treats a payload as multiple parts wrapped into one element, and processes all such wrapped parts.
(package private) static class ResponseBuilder.Header
          Reads a header into a JAXB object.
(package private) static class ResponseBuilder.None
           
(package private) static class ResponseBuilder.NullSetter
          ResponseBuilder that sets the VM uninitialized value to the type.
(package private) static class ResponseBuilder.RpcLit
          Treats a payload as multiple parts wrapped into one element, and processes all such wrapped parts.
 
Field Summary
static ResponseBuilder NONE
          The singleton instance that produces null return value.
 
Constructor Summary
ResponseBuilder()
           
 
Method Summary
static Object getVMUninitializedValue(Type type)
          Returns the 'uninitialized' value for the given type.
static String getWSDLPartName(Attachment att)
          Gets the WSDL part name of this attachment.
(package private) abstract  Object readResponse(Message reply, Object[] args)
          Reads a response Message, disassembles it, and moves obtained Java values to the expected places.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NONE

public static ResponseBuilder NONE
The singleton instance that produces null return value. Used for operations that doesn't have any output.

Constructor Detail

ResponseBuilder

ResponseBuilder()
Method Detail

readResponse

abstract Object readResponse(Message reply,
                             Object[] args)
                      throws JAXBException,
                             javax.xml.stream.XMLStreamException
Reads a response Message, disassembles it, and moves obtained Java values to the expected places.

Parameters:
reply - The reply Message to be de-composed.
args - The Java arguments given to the SEI method invocation. Some parts of the reply message may be set to Holders in the arguments.
Returns:
If a part of the reply message is returned as a return value from the SEI method, this method returns that value. Otherwise null.
Throws:
JAXBException - if there's an error during unmarshalling the reply message.
javax.xml.stream.XMLStreamException - if there's an error during unmarshalling the reply message.

getVMUninitializedValue

public static Object getVMUninitializedValue(Type type)
Returns the 'uninitialized' value for the given type.

For primitive types, it's '0', and for reference types, it's null.


getWSDLPartName

public static final String getWSDLPartName(Attachment att)
Gets the WSDL part name of this attachment.

According to WSI AP 1.0

 3.8 Value-space of Content-Id Header
   Definition: content-id part encoding
   The "content-id part encoding" consists of the concatenation of:
 The value of the name attribute of the wsdl:part element referenced by the mime:content, in which characters disallowed in content-id headers (non-ASCII characters as represented by code points above 0x7F) are escaped as follows:
     o Each disallowed character is converted to UTF-8 as one or more bytes.
     o Any bytes corresponding to a disallowed character are escaped with the URI escaping mechanism (that is, converted to %HH, where HH is the hexadecimal notation of the byte value).
     o The original character is replaced by the resulting character sequence.
 The character '=' (0x3D).
 A globally unique value such as a UUID.
 The character '@' (0x40).
 A valid domain name under the authority of the entity constructing the message.
 
So a wsdl:part fooPart will be encoded as:

Returns:
null if the parsing fails.