| com.sun.xml.ws.api.message.HeaderList
HeaderList | final public class HeaderList extends ArrayList(Code) | | A list of
Header s on a
Message .
This list can be modified to add headers
from outside a
Message , this is necessary
since intermediate processing layers often need to
put additional headers.
Following the SOAP convention, the order among headers
are not significant. However,
Codec s are
expected to preserve the order of headers in the input
message as much as possible.
MustUnderstand Processing
To perform SOAP mustUnderstang processing correctly, we need to keep
track of headers that are understood and headers that are not.
This is a collaborative process among
Pipe s, thus it's something
a
Pipe author needs to keep in mind.
Specifically, when a
Pipe sees a header and processes it
(that is, if it did enough computing with the header to claim that
the header is understood), then it should mark the corresponding
header as "understood". For example, when a pipe that handles JAX-WSA
examins the <wsa:To> header, it can claim that it understood the header.
But for example, if a pipe that does the signature verification checks
<wsa:To> for a signature, that would not be considered as "understood".
There are two ways to mark a header as understood:
- Use one of the getXXX methods that take a
boolean markAsUnderstood parameter.
Most often, a
Pipe knows it's going to understand a header
as long as it's present, so this is the easiest and thus the preferred way.
For example, if JAX-WSA looks for <wsa:To>, then it can set
markAsUnderstand to true, to do the obtaining of a header
and marking at the same time.
- Call
HeaderList.understood(int) .
If under a rare circumstance, a pipe cannot determine whether
it can understand it or not when you are fetching a header, then
you can use this method afterward to mark it as understood.
Intuitively speaking, at the end of the day, if a header is not
understood but
Header.isIgnorable(SOAPVersionSet) is false, a bad thing
will happen. The actual implementation of the checking is more complicated,
for that see
ClientMUTube /
ServerMUTube .
See Also: Message.getHeaders |
Method Summary | |
public boolean | add(Header header) Adds a new
Header .
Order doesn't matter in headers, so this method
does not make any guarantee as to where the new header
is inserted.
always true. | public void | addAll(Header... headers) Adds all the headers. | public static HeaderList | copy(HeaderList original) Creates a copy. | public void | fillRequestAddressingHeaders(Packet packet, AddressingVersion av, SOAPVersion sv, boolean oneway, String action) Creates a set of outbound WS-Addressing headers on the client with the
specified Action Message Addressing Property value.
This method needs to be invoked right after such a Message is
created which is error prone but so far only MEX, RM and JAX-WS
creates a request so this ugliness is acceptable. | public void | fillRequestAddressingHeaders(WSDLPort wsdlPort, WSBinding binding, Packet packet) Creates a set of outbound WS-Addressing headers on the client with the
default Action Message Addressing Property value.
This method needs to be invoked right after such a Message is
created which is error prone but so far only MEX, RM and JAX-WS
creates a request so this ugliness is acceptable. | public Header | get(int index) Gets the
Header at the specified index. | public Header | get(String nsUri, String localName, boolean markAsUnderstood) Gets the first
Header of the specified name.
Parameters: markAsUnderstood - If this parameter is true, the returned header willbe marked as "understood". | public Header | get(String nsUri, String localName) | public Header | get(QName name, boolean markAsUnderstood) Gets the first
Header of the specified name.
Parameters: markAsUnderstood - If this parameter is true, the returned header willbe marked as "understood". | public Header | get(QName name) | public String | getAction(AddressingVersion av, SOAPVersion sv) Returns the value of WS-Addressing Action header. | public WSEndpointReference | getFaultTo(AddressingVersion av, SOAPVersion sv) Returns the value of WS-Addressing FaultTo header. | public Iterator<Header> | getHeaders(String nsUri, String localName) | public Iterator<Header> | getHeaders(String nsUri, String localName, boolean markAsUnderstood) Gets all the
Header s of the specified name,
including duplicates (if any.)
Parameters: markAsUnderstood - If this parameter is true, the returned headers willbe marked as "understood" when they are returnedfrom Iterator.next. | public Iterator<Header> | getHeaders(QName headerName, boolean markAsUnderstood) | public Iterator<Header> | getHeaders(String nsUri) | public Iterator<Header> | getHeaders(String nsUri, boolean markAsUnderstood) | public String | getMessageID(AddressingVersion av, SOAPVersion sv) Returns the value of WS-Addressing MessageID header. | public WSEndpointReference | getReplyTo(AddressingVersion av, SOAPVersion sv) Returns the value of WS-Addressing ReplyTo header. | public String | getTo(AddressingVersion av, SOAPVersion sv) Returns the value of WS-Addressing To header. | public boolean | isUnderstood(int index) Returns true if a
Header at the given index
was "understood". | public void | readResponseAddressingHeaders(WSDLPort wsdlPort, WSBinding binding) | public Header | remove(int index) | public boolean | remove(Object o) | public boolean | removeAll(Collection> c) | public boolean | retainAll(Collection> c) | public int | size() The number of total headers. | public void | understood(int index) Marks the
Header at the specified index as
"understood". | public void | understood(Header header) Marks the specified
Header as "understood". |
add | public boolean add(Header header)(Code) | | Adds a new
Header .
Order doesn't matter in headers, so this method
does not make any guarantee as to where the new header
is inserted.
always true. Don't use the return value. |
addAll | public void addAll(Header... headers)(Code) | | Adds all the headers.
|
copy | public static HeaderList copy(HeaderList original)(Code) | | Creates a copy.
This handles null
HeaderList correctly.
Parameters: original - Can be null, in which case null will be returned. |
fillRequestAddressingHeaders | public void fillRequestAddressingHeaders(Packet packet, AddressingVersion av, SOAPVersion sv, boolean oneway, String action)(Code) | | Creates a set of outbound WS-Addressing headers on the client with the
specified Action Message Addressing Property value.
This method needs to be invoked right after such a Message is
created which is error prone but so far only MEX, RM and JAX-WS
creates a request so this ugliness is acceptable. This method is also used
to create protocol messages that are not associated with any
WSBinding and
WSDLPort .
Parameters: packet - request packet Parameters: av - WS-Addressing version Parameters: sv - SOAP version Parameters: oneway - Indicates if the message exchange pattern is oneway Parameters: action - Action Message Addressing Property value |
fillRequestAddressingHeaders | public void fillRequestAddressingHeaders(WSDLPort wsdlPort, WSBinding binding, Packet packet)(Code) | | Creates a set of outbound WS-Addressing headers on the client with the
default Action Message Addressing Property value.
This method needs to be invoked right after such a Message is
created which is error prone but so far only MEX, RM and JAX-WS
creates a request so this ugliness is acceptable. If more components
are identified using this, then we may revisit this.
This method is used if default Action Message Addressing Property is to
be used. See
HeaderList.fillRequestAddressingHeaders(Packet,com.sun.xml.ws.api.addressing.AddressingVersion,com.sun.xml.ws.api.SOAPVersion,boolean,String) if non-default Action is to be used, for example when creating a protocol message not
associated with
WSBinding and
WSDLPort .
This method uses SOAPAction as the Action unless set expplicitly in the wsdl.
Parameters: wsdlPort - request WSDL port Parameters: binding - request WSBinding Parameters: packet - request packet |
get | public Header get(String nsUri, String localName, boolean markAsUnderstood)(Code) | | Gets the first
Header of the specified name.
Parameters: markAsUnderstood - If this parameter is true, the returned header willbe marked as "understood". null if not found. |
get | public Header get(QName name, boolean markAsUnderstood)(Code) | | Gets the first
Header of the specified name.
Parameters: markAsUnderstood - If this parameter is true, the returned header willbe marked as "understood". nullif not found. |
getAction | public String getAction(AddressingVersion av, SOAPVersion sv)(Code) | | Returns the value of WS-Addressing Action header. The version
identifies the WS-Addressing version and the header returned is targeted at
the current implicit role. Caches the value for subsequent invocation.
Duplicate Action headers are detected earlier.
Parameters: av - WS-Addressing version Parameters: sv - SOAP version throws: IllegalArgumentException - if either av or sv is null. Value of WS-Addressing Action header, null if no header is present |
getFaultTo | public WSEndpointReference getFaultTo(AddressingVersion av, SOAPVersion sv)(Code) | | Returns the value of WS-Addressing FaultTo header. The version
identifies the WS-Addressing version and the header returned is targeted at
the current implicit role. Caches the value for subsequent invocation.
Duplicate FaultTo headers are detected earlier.
Parameters: av - WS-Addressing version Parameters: sv - SOAP version throws: IllegalArgumentException - if either av or sv is null. Value of WS-Addressing FaultTo header, null if no header is present |
getHeaders | public Iterator<Header> getHeaders(String nsUri, String localName, boolean markAsUnderstood)(Code) | | Gets all the
Header s of the specified name,
including duplicates (if any.)
Parameters: markAsUnderstood - If this parameter is true, the returned headers willbe marked as "understood" when they are returnedfrom Iterator.next. empty iterator if not found. |
getHeaders | public Iterator<Header> getHeaders(String nsUri, boolean markAsUnderstood)(Code) | | Gets an iteration of headers
Header in the specified namespace,
including duplicates (if any.)
Parameters: markAsUnderstood - If this parameter is true, the returned headers willbe marked as "understood" when they are returnedfrom Iterator.next.empty iterator if not found. |
getMessageID | public String getMessageID(AddressingVersion av, SOAPVersion sv)(Code) | | Returns the value of WS-Addressing MessageID header. The version
identifies the WS-Addressing version and the header returned is targeted at
the current implicit role. Caches the value for subsequent invocation.
Duplicate MessageID headers are detected earlier.
Parameters: av - WS-Addressing version Parameters: sv - SOAP version throws: WebServiceException - if either av or sv is null. Value of WS-Addressing MessageID header, null if no header is present |
getReplyTo | public WSEndpointReference getReplyTo(AddressingVersion av, SOAPVersion sv)(Code) | | Returns the value of WS-Addressing ReplyTo header. The version
identifies the WS-Addressing version and the header returned is targeted at
the current implicit role. Caches the value for subsequent invocation.
Duplicate ReplyTo headers are detected earlier.
Parameters: av - WS-Addressing version Parameters: sv - SOAP version throws: IllegalArgumentException - if either av or sv is null. Value of WS-Addressing ReplyTo header, null if no header is present |
getTo | public String getTo(AddressingVersion av, SOAPVersion sv)(Code) | | Returns the value of WS-Addressing To header. The version
identifies the WS-Addressing version and the header returned is targeted at
the current implicit role. Caches the value for subsequent invocation.
Duplicate To headers are detected earlier.
Parameters: av - WS-Addressing version Parameters: sv - SOAP version throws: IllegalArgumentException - if either av or sv is null. Value of WS-Addressing To header, anonymous URI if no header is present |
size | public int size()(Code) | | The number of total headers.
|
|
|