|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.ArrayList<Header>
com.sun.xml.ws.api.message.HeaderList
public final class HeaderList
A list of Headers 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, Codecs are
expected to preserve the order of headers in the input
message as much as possible.
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 Pipes, 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:
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.
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(SOAPVersion, Set) is false, a bad thing
will happen. The actual implementation of the checking is more complicated,
for that see ClientMUTube/ServerMUTube.
Message.getHeaders(),
Serialized Form| Field Summary |
|---|
| Fields inherited from class java.util.AbstractList |
|---|
modCount |
| Constructor Summary | |
|---|---|
HeaderList()
Creates an empty HeaderList. |
|
HeaderList(HeaderList that)
Copy constructor. |
|
| Method Summary | |
|---|---|
boolean |
add(Header header)
Adds a new Header. |
void |
addAll(Header... headers)
Adds all the headers. |
static HeaderList |
copy(HeaderList original)
Creates a copy. |
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. |
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. |
Header |
get(int index)
Gets the Header at the specified index. |
Header |
get(QName name)
Deprecated. Use get(QName) |
Header |
get(QName name,
boolean markAsUnderstood)
Gets the first Header of the specified name. |
Header |
get(String nsUri,
String localName)
Deprecated. Use get(String, String, boolean) |
Header |
get(String nsUri,
String localName,
boolean markAsUnderstood)
Gets the first Header of the specified name. |
String |
getAction(AddressingVersion av,
SOAPVersion sv)
Returns the value of WS-Addressing Action header. |
WSEndpointReference |
getFaultTo(AddressingVersion av,
SOAPVersion sv)
Returns the value of WS-Addressing FaultTo header. |
Iterator<Header> |
getHeaders(QName headerName,
boolean markAsUnderstood)
|
Iterator<Header> |
getHeaders(String nsUri)
Deprecated. use getHeaders(String, boolean). |
Iterator<Header> |
getHeaders(String nsUri,
boolean markAsUnderstood)
Gets an iteration of headers Header in the specified namespace,
including duplicates (if any.) |
Iterator<Header> |
getHeaders(String nsUri,
String localName)
Deprecated. Use getHeaders(String, String, boolean) |
Iterator<Header> |
getHeaders(String nsUri,
String localName,
boolean markAsUnderstood)
Gets all the Headers of the specified name,
including duplicates (if any.) |
String |
getMessageID(AddressingVersion av,
SOAPVersion sv)
Returns the value of WS-Addressing MessageID header. |
WSEndpointReference |
getReplyTo(AddressingVersion av,
SOAPVersion sv)
Returns the value of WS-Addressing ReplyTo header. |
String |
getTo(AddressingVersion av,
SOAPVersion sv)
Returns the value of WS-Addressing To header. |
boolean |
isUnderstood(int index)
Returns true if a Header at the given index
was "understood". |
void |
readResponseAddressingHeaders(WSDLPort wsdlPort,
WSBinding binding)
|
Header |
remove(int index)
Deprecated. HeaderList is monotonic and you can't remove anything. |
boolean |
remove(Object o)
Deprecated. HeaderList is monotonic and you can't remove anything. |
boolean |
removeAll(Collection<?> c)
Deprecated. HeaderList is monotonic and you can't remove anything. |
boolean |
retainAll(Collection<?> c)
Deprecated. HeaderList is monotonic and you can't remove anything. |
int |
size()
The number of total headers. |
void |
understood(Header header)
Deprecated. By the deifnition of ArrayList, this operation requires
O(n) search of the array, and thus inherently inefficient.
Because of this, if you are developing a Pipe for
a performance sensitive environment, do not use this method. |
void |
understood(int index)
Marks the Header at the specified index as
"understood". |
| Methods inherited from class java.util.ArrayList |
|---|
add, addAll, addAll, clear, clone, contains, ensureCapacity, indexOf, isEmpty, lastIndexOf, removeRange, set, toArray, toArray, trimToSize |
| Methods inherited from class java.util.AbstractList |
|---|
equals, hashCode, iterator, listIterator, listIterator, subList |
| Methods inherited from class java.util.AbstractCollection |
|---|
containsAll, toString |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface java.util.List |
|---|
containsAll, equals, hashCode, iterator, listIterator, listIterator, subList |
| Constructor Detail |
|---|
public HeaderList()
HeaderList.
public HeaderList(HeaderList that)
| Method Detail |
|---|
public int size()
size in interface Collection<Header>size in interface List<Header>size in class ArrayList<Header>public void addAll(Header... headers)
public Header get(int index)
Header at the specified index.
This method does not mark the returned Header as understood.
get in interface List<Header>get in class ArrayList<Header>understood(int)public void understood(int index)
Header at the specified index as
"understood".
public boolean isUnderstood(int index)
Header at the given index
was "understood".
public void understood(@NotNull
Header header)
ArrayList, this operation requires
O(n) search of the array, and thus inherently inefficient.
Because of this, if you are developing a Pipe for
a performance sensitive environment, do not use this method.
Header as "understood".
IllegalArgumentException - if the given header is not contained
in this header.
@Nullable
public Header get(@NotNull
String nsUri,
@NotNull
String localName,
boolean markAsUnderstood)
Header of the specified name.
markAsUnderstood - If this parameter is true, the returned header will
be marked as "understood".
public Header get(String nsUri,
String localName)
get(String, String, boolean)
@Nullable
public Header get(@NotNull
QName name,
boolean markAsUnderstood)
Header of the specified name.
markAsUnderstood - If this parameter is true, the returned header will
be marked as "understood".
@Nullable
public Header get(@NotNull
QName name)
get(QName)
public Iterator<Header> getHeaders(String nsUri,
String localName)
getHeaders(String, String, boolean)
@NotNull
public Iterator<Header> getHeaders(@NotNull
String nsUri,
@NotNull
String localName,
boolean markAsUnderstood)
Headers of the specified name,
including duplicates (if any.)
markAsUnderstood - If this parameter is true, the returned headers will
be marked as "understood" when they are returned
from Iterator.next().
@NotNull
public Iterator<Header> getHeaders(@NotNull
QName headerName,
boolean markAsUnderstood)
getHeaders(String, String, boolean)
@NotNull
public Iterator<Header> getHeaders(@NotNull
String nsUri)
getHeaders(String, boolean).
@NotNull
public Iterator<Header> getHeaders(@NotNull
String nsUri,
boolean markAsUnderstood)
Header in the specified namespace,
including duplicates (if any.)
markAsUnderstood - If this parameter is true, the returned headers will
be marked as "understood" when they are returned
from Iterator.next().
public String getTo(AddressingVersion av,
SOAPVersion sv)
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.
av - WS-Addressing versionsv - SOAP version
IllegalArgumentException - if either av or sv is null.
public String getAction(@NotNull
AddressingVersion av,
@NotNull
SOAPVersion sv)
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.
av - WS-Addressing versionsv - SOAP version
IllegalArgumentException - if either av or sv is null.
public WSEndpointReference getReplyTo(@NotNull
AddressingVersion av,
@NotNull
SOAPVersion sv)
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.
av - WS-Addressing versionsv - SOAP version
IllegalArgumentException - if either av or sv is null.
public WSEndpointReference getFaultTo(@NotNull
AddressingVersion av,
@NotNull
SOAPVersion sv)
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.
av - WS-Addressing versionsv - SOAP version
IllegalArgumentException - if either av or sv is null.
public String getMessageID(@NotNull
AddressingVersion av,
@NotNull
SOAPVersion sv)
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.
av - WS-Addressing versionsv - SOAP version
javax.xml.ws.WebServiceException - if either av or sv is null.
public void fillRequestAddressingHeaders(Packet packet,
AddressingVersion av,
SOAPVersion sv,
boolean oneway,
String action)
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.
packet - request packetav - WS-Addressing versionsv - SOAP versiononeway - Indicates if the message exchange pattern is onewayaction - Action Message Addressing Property value
public void fillRequestAddressingHeaders(WSDLPort wsdlPort,
@NotNull
WSBinding binding,
Packet packet)
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
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.
wsdlPort - request WSDL portbinding - request WSBindingpacket - request packetpublic boolean add(Header header)
Header.
Order doesn't matter in headers, so this method does not make any guarantee as to where the new header is inserted.
add in interface Collection<Header>add in interface List<Header>add in class ArrayList<Header>public Header remove(int index)
HeaderList is monotonic and you can't remove anything.
remove in interface List<Header>remove in class ArrayList<Header>public boolean remove(Object o)
HeaderList is monotonic and you can't remove anything.
remove in interface Collection<Header>remove in interface List<Header>remove in class ArrayList<Header>public boolean removeAll(Collection<?> c)
HeaderList is monotonic and you can't remove anything.
removeAll in interface Collection<Header>removeAll in interface List<Header>removeAll in class AbstractCollection<Header>public boolean retainAll(Collection<?> c)
HeaderList is monotonic and you can't remove anything.
retainAll in interface Collection<Header>retainAll in interface List<Header>retainAll in class AbstractCollection<Header>public static HeaderList copy(HeaderList original)
HeaderList correctly.
original - Can be null, in which case null will be returned.
public void readResponseAddressingHeaders(WSDLPort wsdlPort,
WSBinding binding)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||