About JCP
Get Involved
Community Resources
Community News
FAQ
Contact Us
|
|
SAAJ 1.2 Change Log
SOAP with Attachments API for
JavaTM (SAAJ) 1.2
April 10, 2003
C001, C002,
C003, C004,
C005, C006,
C007, C008,
C009, C010,
C011, C012,
C013, C014,
C015, C016,
C017, C018,
C019, C020,
C021, C022,
C023, C024,
C025, C026,
C027, C028,
C029, C030,
C031, C032,
C033, C034,
C035, C036,
C037, C038,
C039, C040,
C041, C042,
C043, C044,
C045, C046,
C047
Maintenance revision of the SOAP with Attachments API for
JavaTM (SAAJ), version 1.2.
Nicholas Kassem and Phil Goodwin, Sun Microsystems, Inc.
Comments should be sent to mailto:jaxm-final@sun.com
The goal of this maintenance release is to provide support for the
proposed WS-I Basic Profile of SOAP 1.1. In addition we would like to
take the opportunity to make a number of corrections and clarifications
to the specification and JavaDocs.
The WS-I Basic Profile does not add any capabilities to the SOAP 1.1
document that it moderates. It does, however, promote the use of some
SOAP 1.1 features even as it proscribes the use of others. The goal of
this change log is to make it easier for applications to create and use
messages that are WS-I conformant. This maintenance release is concerned
with the following areas:
-
The use of literal encoding
-
Access to SOAP 1.1 features that are of increased prominence
-
Easier conformance to WS-I recommendations
SOAP 1.2 support has been considered and set aside for the current
maintenance cycle in order to reinforce the JCP's focus on WS-I support in
J2EE 1.4
-
Bind SAAJ APIs to DOM APIs
Rationale: DOM is already in use in
many environments. If SAAJ trees are also DOM trees then SAAJ will
be able to integrate more easily with many applications and
tools.
-
Add properties to
SOAPMessage
Rationale: There are several details about the formatting
and encoding of a SOAP message that can affect interoperability.
Giving the end user control over these details while retaining the
same defaults as SAAJ 1.1 allows us to deliver a higher degree of
potential interoperability without sacrificing usability or
backward compatibility.
-
Add ease of use methods
to key APIs Rationale: There are several opportunities in the SAAJ API to make it
easier on the end user to conform to the recommendations of SOAP
1.1 or WS-I. These new methods will automate frequent or
error-prone tasks, leading to higher productivity, fewer errors -
and less technical support.In addition, it is expected that the
average developer will not have extensive knowledge of DOM APIs and
so we would like to support common SOAP use cases involving DOM
through the SAAJ APIs.
-
Clarify and correct the wording of JavaDocs
and specification
Scope: None of these changes will break backward
compatibility or allow new behavior that was explicitly forbidden
before. In particular, conforming implementations will not break
existing clients and will be capable of passing the existing TCK.
Some of these changes will impose new requirements on
implementations. Where that is the case the changes will be
specifically enumerated in this document.
Rationale: Corrections of this nature cost little and
improve the overall integrity of the specification making correct
implementations easier to create, validate and use.
C001
javax.xml.soap
Interface Node
-
All Superinterfaces:
-
org.w3c.dom.Node
-
public interface Node
-
extends org.w3c.dom.Node
A representation of a node (element) in an XML document. This
interface extends the standard DOM Node interface with methods for
getting and setting the value of a node, for getting and setting the
parent of a node, and for removing a node.
Fields inherited from interface org.w3c.dom.Node
|
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE,
DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE,
ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
|
Methods inherited from interface org.w3c.dom.Node
|
appendChild, cloneNode, getAttributes, getChildNodes,
getFirstChild, getLastChild, getLocalName, getNamespaceURI,
getNextSibling, getNodeName, getNodeType, getNodeValue,
getOwnerDocument, getParentNode, getPrefix, getPreviousSibling,
hasAttributes, hasChildNodes, insertBefore, isSupported,
normalize, removeChild, replaceChild, setNodeValue,
setPrefix
|
C002
javax.xml.soap
Interface SOAPElement
-
All Superinterfaces:
-
org.w3c.dom.Element, Node, org.w3c.dom.Node
-
public interface SOAPElement
-
extends Node, org.w3c.dom.Element
An object representing the contents in a
SOAPBody object, the contents in a
SOAPHeader object, the content that can follow the
SOAPBody object in a SOAPEnvelope object,
or what can follow the detail element in a SOAPFault
object. It is the base class for all of the classes that represent
the SOAP objects as defined in the SOAP specification.
An object representing an element of a SOAP message that is
allowed but not specifically prescribed by a SOAP specification. This
interface serves as the base interface for those objects that are
specifically prescribed by a SOAP specification.
Methods in this interface that are required to return SAAJ
specific objects may "silently" replace nodes in the tree as required
to successfully return objects of the correct type. See getChildElements() and javax.xml.soapfor details.
Fields inherited from interface org.w3c.dom.Node
|
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE,
DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE,
ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
|
Methods inherited from interface org.w3c.dom.Node
|
appendChild, cloneNode, getAttributes, getChildNodes,
getFirstChild, getLastChild, getLocalName, getNamespaceURI,
getNextSibling, getNodeName, getNodeType, getNodeValue,
getOwnerDocument, getParentNode, getPrefix, getPreviousSibling,
hasAttributes, hasChildNodes, insertBefore, isSupported,
normalize, removeChild, replaceChild, setNodeValue,
setPrefix
|
Methods inherited from interface org.w3c.dom.Element
|
getAttribute, getAttributeNode, getAttributeNodeNS,
getAttributeNS, getElementsByTagName, getElementsByTagNameNS,
getTagName, hasAttribute, hasAttributeNS, removeAttribute,
removeAttributeNode, removeAttributeNS, setAttribute,
setAttributeNode, setAttributeNodeNS, setAttributeNS
|
C003
javax.xml.soap
Class SOAPPart
java.lang.Object | +--javax.xml.soap.SOAPPart
-
All Implemented Interfaces:
-
org.w3c.dom.Document, org.w3c.dom.Node
-
public abstract class SOAPPart
-
extends java.lang.Object
-
implements org.w3c.dom.Document
Fields inherited from interface org.w3c.dom.Node
|
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE,
DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE,
ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
|
Methods inherited from interface org.w3c.dom.Document
|
createAttribute, createAttributeNS, createCDATASection,
createComment, createDocumentFragment, createElement,
createElementNS, createEntityReference,
createProcessingInstruction, createTextNode, getDoctype,
getDocumentElement, getElementById, getElementsByTagName,
getElementsByTagNameNS, getImplementation, importNode
|
Methods inherited from interface org.w3c.dom.Node
|
appendChild, cloneNode, getAttributes, getChildNodes,
getFirstChild, getLastChild, getLocalName, getNamespaceURI,
getNextSibling, getNodeName, getNodeType, getNodeValue,
getOwnerDocument, getParentNode, getPrefix, getPreviousSibling,
hasAttributes, hasChildNodes, insertBefore, isSupported,
normalize, removeChild, replaceChild, setNodeValue,
setPrefix
|
C004
javax.xml.soap
Interface Text
-
All Superinterfaces:
-
org.w3c.dom.CharacterData, Node,
org.w3c.dom.Node, org.w3c.dom.Text
-
public interface Text
-
extends Node, org.w3c.dom.Text
Fields inherited from interface org.w3c.dom.Node
|
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE,
DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE,
ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
|
Methods inherited from interface org.w3c.dom.Node
|
appendChild, cloneNode, getAttributes, getChildNodes,
getFirstChild, getLastChild, getLocalName, getNamespaceURI,
getNextSibling, getNodeName, getNodeType, getNodeValue,
getOwnerDocument, getParentNode, getPrefix, getPreviousSibling,
hasAttributes, hasChildNodes, insertBefore, isSupported,
normalize, removeChild, replaceChild, setNodeValue,
setPrefix
|
Methods inherited from interface org.w3c.dom.Text
|
splitText
|
Methods inherited from interface
org.w3c.dom.CharacterData
|
appendData, deleteData, getData, getLength, insertData,
replaceData, setData, substringData
|
C046
In addition the APIs in the javax.xml.soap package
extend their counterparts in the org.w3c.dom package.
This means that the SOAPPart of a
SOAPMessage is also a DOM Level 2 Document ,
and can be manipulated as such by applications, tools and libraries
that use DOM (see http://www.w3.org/DOM/ for more information). It is
important to note that, while it is possible to use DOM APIs to add
ordinary DOM nodes to a SAAJ tree, the SAAJ APIs are still required
to return SAAJ types when examining or manipulating the tree. In
order to accomplish this the SAAJ APIs (specifically SOAPElement.getChildElements() ) are allowed
to "silently" replace objects that are incorrectly typed relative to
SAAJ requirements with equivalent objects of the required type. These
replacements must never cause the logical structure of the tree to
change, so from the perspective of the DOM APIs the tree will remain
unchanged. However, the physical composition of the tree will have
changed so that references to the nodes that were replaced will refer
to nodes that are no longer a part of the tree. The SAAJ APIs are not
allowed to make these replacements if they are not required so the
replacement objects will never subsequently be "silently" replaced by
future calls to the SAAJ API. What this means in practical terms is
that an application that starts to use SAAJ APIs on a tree after
manipulating it using DOM APIs must assume that the tree has been
translated into an all SAAJ tree and that any references to objects
within the tree that were obtained using DOM APIs are no longer
valid. Switching from SAAJ APIs to DOM APIs is not allowed to cause
invalid references and neither is using SAAJ APIs exclusively. It is
only switching from using DOM APIs on a particular SAAJ tree to using
SAAJ APIs that causes the risk of invalid references.
javax.xml.soap
Class SOAPMessage
java.lang.Object | +--javax.xml.soap.SOAPMessage
-
public abstract class SOAPMessage
-
extends java.lang.Object
abstract java.lang.String
|
getProperty(java.lang.String
property)
Retrieves value of the specified property.
|
abstract void
|
setProperty(java.lang.String
property, java.lang.Object value)
Associates the specified value with the specified
property.
|
C005
getProperty
public abstract java.lang.Object getProperty(java.lang.String property) throws SOAPException
-
Retrieves value of the specified property.
-
-
-
-
Parameters:
-
property - the name of the property to retrieve
-
Returns:
-
the value of the property or
null if no such
property exists.
-
Throws:
-
SOAPException - if the property
name is not recognized.
-
Since:
-
SAAJ 1.2
C006
setProperty
public abstract void setProperty(java.lang.String property,
java.lang.Object value)
throws SOAPException
-
Associates the specified value with the specified property. If
there was already a value associated with this property, the old
value is replaced.
The valid property names include WRITE_XML_DECLARATION
and CHARACTER_SET_ENCODING .
All of these standard SAAJ properties are prefixed by
"javax.xml.soap". Vendors may also add implementation specific
properties. These properties must be prefixed with package names
that are unique to the vendor.
Setting the property WRITE_XML_DECLARATION to
"true" will cause an XML Declaration to be written
out at the start of the SOAP message. The default value of
"false" suppresses this declaration.
The property CHARACTER_SET_ENCODING defaults to the
value "utf-8" which causes the SOAP message to be
encoded using UTF-8. Setting CHARACTER_SET_ENCODING
to "utf-16" causes the SOAP message to be encoded
using UTF-16.
Some implementations may allow encodings in addition to UTF-8 and
UTF-16. Refer to your vendor's documentation for details.
-
-
-
-
Parameters:
-
property - the property with which the specified
value is to be associated.
-
value - the value to be associated with the
specified property
-
Throws:
-
SOAPException - if the property
name is not recognized.
-
Since:
-
SAAJ 1.2
static java.lang.String
|
CHARACTER_SET_ENCODING
Specifies the character type encoding for the SOAP Message.
|
static java.lang.String
|
WRITE_XML_DECLARATION
WRITE_XML_DECLARATION specifies whether the SOAP Message
should contain an XML declaration; the value must be "true" or
"false".
|
C007
CHARACTER_SET_ENCODING
public static final java.lang.String CHARACTER_SET_ENCODING
-
Specifies the character type encoding for the SOAP Message. Valid
values include "utf-8" and "utf-16". See vendor documentation for
additional supported values. The default is "utf-8".
-
-
-
Since:
-
SAAJ 1.2
-
See Also:
-
SOAPMessage.setProperty ,
Constant
Field Values
C008
WRITE_XML_DECLARATION
public static final java.lang.String WRITE_XML_DECLARATION
-
Specifies whether the SOAP Message should contain an XML
declaration. The only valid values are "true" and "false". The
default is "false".
-
-
-
Since:
-
SAAJ 1.2
-
See Also:
-
SOAPMessage.setProperty ,
Constant
Field Values
Constant Field Values
C009
Change JavaDoc:
javax.xml.soap
Interface Node
void
|
detachNode()
Removes this Node object from the tree.
Once removed, this node can be garbage collected if
there are no application references to it.
|
Rationale: This was too much of a restriction on
implementors.
C010
Add method:
javax.xml.soap
Interface Node
void
|
setValue (java.lang.String
value)
If this is a Text node then this method will set
its value, otherwise it sets the value of the immediate
(Text ) child of this node.
|
setValue
public void setValue(java.lang.String value)
-
If this is a Text node then this method will set its value,
otherwise it sets the value of the immediate (Text) child of this
node. The value of the immediate child of this node can be set only
if, there is one child node and that node is a
Text
node, or if there are no children in which case a child
Text node will be created.
-
-
-
-
-
Throws:
-
java.lang.IllegalStateException - if the node is
not a Text node and either has more than one child
node or has a child node that is not a Text node.
-
Since:
-
SAAJ 1.2
-
Rationale: This simplifies a common case where
developers want to change a value in a tree without changing the structure
of the tree. The equivalent operation, using only SAAJ APIs, is thought by
some to be cumbersome and error prone.
Add methods:
javax.xml.soap
Interface SOAPFault
-
Name
|
getFaultCodeAsName()
Gets the mandatory SOAP 1.1 fault code for this
SOAPFault object as a SAAJ Name
object.
|
void
|
setFaultCode(
Name faultCodeQName)
Sets this SOAPFault object with the given fault
code.
|
void
|
setFaultString(java.lang.String
faultString, java.util.Locale locale)
Sets the fault string for this SOAPFault object
to the given string and localized to the given locale.
|
java.util.Locale
|
getFaultStringLocale()
Gets the locale of the fault string for this
SOAPFault object.
|
C011
getFaultCodeAsName
public Name getFaultCodeAsName()
-
Gets the mandatory SOAP 1.1 fault code for this
SOAPFault object as a SAAJ Name object.
The SOAP 1.1 specification requires the value of the "faultcode"
element to be of type QName. This method returns the content of the
element as a QName in the form of a SAAJ Name object. This method
should be used instead of the getFaultCode method
since it allows applications to easily access the namespace name
without additional parsing.
In the future, a QName object version of this method may also be
added.
-
-
-
-
-
Returns:
-
a
Name representing the faultcode
-
Since:
-
SAAJ 1.2
-
See Also:
-
setFaultCode(Name)
-
-
-
C012
setFaultCode
public void setFaultCode(Name faultCodeQName) throws SOAPException
-
Sets this
SOAPFault object with the given fault code.
Fault codes, which give information about the fault, are defined
in the SOAP 1.1 specification. A fault code is mandatory and must
be of type QName . This method provides a convenient
way to set a fault code. For example,
SOAPEnvelope se = ...;
// Create a qualified name in the SOAP namespace with a localName
// of "Client". Note that prefix parameter is optional and is null
// here which causes the implementation to use an appropriate prefix.
Name qname = se.createName("Client", null,
SOAPConstants.URI_NS_SOAP_ENVELOPE);
SOAPFault fault = ...;
fault.setFaultCode(qname);
It is preferable to use this method over setFaultCode(String) .
-
-
-
-
-
Parameters:
-
faultCodeQName - a Name object giving
the fault code to be set.It must be namespace qualified.
-
Throws:
-
SOAPException - if there was an
error in adding the faultcode element to the
underlying XML tree.
-
Since:
-
SAAJ 1.2
-
See Also:
-
getFaultCodeAsName()
-
-
-
C013
setFaultString
public void setFaultString(java.lang.String faultString,
java.util.Locale locale)
throws SOAPException
-
Sets the fault string for this
SOAPFault object to the
given string and localized to the given locale.
-
-
-
-
-
Parameters:
-
faultString - a String giving an
explanation of the fault
-
locale - a Locale object indicating
the native language of the faultString
-
Throws:
-
SOAPException - if there was an
error in adding the faultString to the underlying
XML tree.
-
Since:
-
SAAJ 1.2
-
See Also:
-
getFaultString()
C014
getFaultStringLocale
public java.util.Locale getFaultStringLocale()
-
Gets the locale of the fault string for this
SOAPFault
object.
-
-
-
-
-
Returns:
-
a
Locale object indicating the native language of
the fault string or null if no locale was
specified
-
-
Since:
-
SAAJ 1.2
-
See Also:
-
setFaultString(String, Locale)
Rationale: These two methods allow the
fault code to be treated as a fully qualified name, as required by SOAP
1.1.
C015
Add method:
javax.xml.soap
Interface SOAPBody
addDocument
public SOAPBodyElement addDocument(org.w3c.dom.Document document)
-
Adds the root node of the DOM
Document to this
SOAPBody object.
C016
-
Calling this method invalidates the document
parameter. The client application should discard all references
to this Document and its contents upon calling
addDocument . The behavior of an application that
continues to use such references is undefined. [end of
C045]
-
-
-
-
-
Parameters:
-
document - the Document object whose
root node will be added to this SOAPBody .
-
Returns:
-
the
SOAPBodyElement that represents the root node
that was added.
-
Throws:
-
SOAPException - if the
Document cannot be added
-
Since:
-
SAAJ 1.2
Rationale: This user requested method makes it
easier to use DOM in SAAJ applications. Without this method the end user
must rely entirely on DOM APIs to perform this operation. C045 allows a
wider range of implementation choices including possible optimizations at
the expense of some usability.
C047
Add methods:
javax.xml.soap
Interface SOAPBody
addFault
public SOAPFault addFault(Name faultCode,
java.lang.String faultString,
java.util.Locale locale)
throws SOAPException
-
Creates a new
SOAPFault object and adds it to this
SOAPBody object. The new SOAPFault will
have a faultcode element that is set to the
faultCode parameter and a faultstring set
to faultString and localized to locale .
A SOAPBody may contain at most one
SOAPFault child element
-
-
-
-
Parameters:
-
faultCode - a Name object giving the
fault code to be set; must be one of the fault codes defined in
the SOAP 1.1 specification and of type QName
-
faultString - a String giving an
explanation of the fault
-
locale - a Locale object indicating
the native language of the faultString
-
Returns:
-
the new
SOAPFault object
-
Throws:
-
SOAPException - if there is a
SOAP error
-
Since:
-
SAAJ 1.2
-
See Also:
-
SOAPFault.setFaultCode(javax.xml.soap.Name) ,
SOAPFault.setFaultString(java.lang.String)
addFault
public SOAPFault addFault(Name faultCode,
java.lang.String faultString)
throws SOAPException
-
Creates a new
SOAPFault object and adds it to this
SOAPBody object. The new SOAPFault will
have a faultcode element that is set to the
faultCode parameter and a faultstring set
to faultString .
A SOAPBody may contain at most one
SOAPFault child element
-
-
-
-
Parameters:
-
faultCode - a Name object giving the
fault code to be set; must be one of the fault codes defined in
the SOAP 1.1 specification and of type QName
-
faultString - a String giving an
explanation of the fault
-
Returns:
-
the new
SOAPFault object
-
Throws:
-
SOAPException - if there is a
SOAP error
-
Since:
-
SAAJ 1.2
-
See Also:
-
SOAPFault.setFaultCode(javax.xml.soap.Name) ,
SOAPFault.setFaultString(java.lang.String)
Rationale: Use of these methods would let developers
create faults that contain all of the necessary sub-elements, properly
initialized, with a single call.
C017
Add method:
javax.xml.soap
Interface SOAPElement
removeContents
public void removeContents()
Detaches all children of this SOAPElement .
This method is useful for rolling back the construction of partially
completed SOAPHeaders and SOAPBodys in
preparation for sending a fault when an error condition is detected.
It is also useful for recycling portions of a document within a SOAP
message.
-
Since:
-
SAAJ 1.2
Rationale: This method supports a common use case
where elements in a partially assembled body are replaced with a fault in
response to an error condition. It originated in the SOAPBody interface
and was pulled up into SOAPElement because of its general utility.
C018
Add method:
javax.xml.soap
Interface SOAPElement
getVisibleNamespacePrefixes
public java.util.Iterator getVisibleNamespacePrefixes()
-
Returns an
Iterator over the namespace prefix
String s visible to this element. The prefixes returned
by this iterator can be passed to the method
getNamespaceURI to retrieve the URI of each namespace.
-
-
Returns:
-
an iterator over the namespace prefixes that are within scope
of this
SOAPElement object
-
Since:
-
SAAJ 1.2
Rationale: This is a common operation. It
is likely that vendors can provide an implementation that is more efficient
than what can be obtained directly from the other SAAJ or DOM APIs.
Add methods:
javax.xml.soap
Interface SOAPHeader
java.util.Iterator
|
examineAllHeaderElements()
Returns an Iterator over all the
SOAPHeaderElement objects in this
SOAPHeader object.
|
java.util.Iterator
|
examineMustUnderstandHeaderElements(java.lang.String actor)
Returns an Iterator over all the
SOAPHeaderElement objects in this
SOAPHeader object that have the specified
actor and that have a MustUnderstand attribute whose value is
equivalent to true .
|
java.util.Iterator
|
extractAllHeaderElements()
Returns an Iterator over all the
SOAPHeaderElement objects in this
SOAPHeader object and detaches them from this
SOAPHeader object.
|
C019
examineAllHeaderElements
public java.util.Iterator examineAllHeaderElements()
-
Returns an
Iterator over all the
SOAPHeaderElement objects in this
SOAPHeader object.
-
-
-
-
-
Returns:
-
an
Iterator object over all the
SOAPHeaderElement objects contained by this
SOAPHeader
-
Since:
-
SAAJ 1.2
-
See Also:
-
extractAllHeaderElements()
C020
examineMustUnderstandHeaderElements
public java.util.Iterator examineMustUnderstandHeaderElements(java.lang.String actor)
-
Returns an
Iterator over all the
SOAPHeaderElement objects in this
SOAPHeader object that have the specified actor
and that have a MustUnderstand attribute whose value is equivalent
to true .
-
-
-
-
-
Parameters:
-
actor - a String giving the URI of
the actor for which to search
-
Returns:
-
an
Iterator object over all the
SOAPHeaderElement objects that contain the
specified actor and are marked as MustUnderstand
-
Since:
-
SAAJ 1.2
-
See Also:
-
examineHeaderElements(java.lang.String) ,
extractHeaderElements(java.lang.String) ,
SOAPConstants.URI_SOAP_ACTOR_NEXT
C021
extractAllHeaderElements
public java.util.Iterator extractAllHeaderElements()
-
Returns an
Iterator over all the
SOAPHeaderElement objects in this
SOAPHeader object and detaches them from this
SOAPHeader object.
-
-
-
-
-
Returns:
-
an
Iterator object over all the
SOAPHeaderElement objects contained by this
SOAPHeader
-
Since:
-
SAAJ 1.2
-
See Also:
-
examineAllHeaderElements()
Rationale: The ability to examine or extract all
header elements gives an application flexibility to implement its own
processing model. Applications implementing SOAP processing will need to
be able to examine all of the header elements marked must understand in
order to correctly fulfill the must understand contract. The
examineMustUnderstandHeaderElements(String) method provides easy and
correct access to this piece of necessary and routine processing.
Add methods:
javax.xml.soap
Class SOAPMessage
C022
getSOAPBody
public abstract SOAPBody getSOAPBody()
-
Gets the SOAP Body contained in this
SOAPMessage
object.
-
-
-
-
-
-
Returns:
-
the
SOAPBody object contained by this
SOAPMessage object
-
-
Throws:
-
SOAPException - if the SOAP
Body does not exist or cannot be retrieved
-
Since:
-
SAAJ 1.2
C023
getSOAPHeader
public abstract SOAPHeader getSOAPHeader()
-
Gets the SOAP Header contained in this
SOAPMessage
object.
-
-
-
-
-
-
Returns:
-
the
SOAPHeader object contained by this
SOAPMessage object
-
-
Throws:
-
SOAPException - if the SOAP
Header does not exist or cannot be retrieved
-
Since:
-
SAAJ 1.2
Rationale: These methods make writing SAAJ clients
easier by eliminating the getSOAPPart().getEnvelope() call sequence for
gaining access to the header and body elements of the message. This
allows developers to focus on their application needs rather than the
details of the structure of SOAP messages.
javax.xml.soap
Interface Detail
C024
getDetailEntries
public java.util.Iterator getDetailEntries()
-
Gets a list of detail entries Gets an Iterator
over all of the DetailEntry s in this
Detail object.
-
-
-
-
-
Returns:
-
an
Iterator object over the
DetailEntry objects in this Detail
object
Rationale:The actual return type is an
Iterator, not a List.
javax.xml.soap
Class MessageFactory
C025
-
public abstract class MessageFactory
-
extends java.lang.Object
A factory for creating SOAPMessage objects. A
JAXM client performs the following steps to create a
message.
It is also possible to create a
MessageFactory object
A SAAJ client can create a MessageFactory object
using the method newInstance , as shown in the following
line of code.
[...] If a MessageFactory object was created
using a ProviderConnection object, which means that it
was initialized with a specified profile, it
MessageFactory objects can be initialized with a JAXM
profile. In such a case it will produce messages that also come
prepopulated with additional entries in the SOAPHeader
object and the SOAPBody object.
[...]
Rationale: SAAJ is independent of JAXM.
While it is appropriate to mention the available interactions between the
two, it is misleading to suggest that JAXM APIs are the endorsed mechanism
for accessing the SAAJ factory classes.
javax.xml.soap
Class MimeHeaders
C026
java.util.Iterator
|
getAllHeaders()
Returns all the headers
MimeHeader objects in this
MimeHeaders object.
|
Rationale:The method summaries for methods that
return Iterators should indicate the types of the objects contained by
the iterated collections. Otherwise clients will be unable to use the
objects returned by the iteration process.
javax.xml.soap
Interface Name
C027
getPrefix
public java.lang.String getPrefix()
-
Returns the prefix associated with the namespace for the
XML Returns the prefix that was specified when this
Name object was initialized. This prefix is associated
with the namespace for the XML name that this Name
object represents.
-
-
-
-
Returns:
-
the prefix as a string
Rationale:The phrase "the prefix" was ambiguous
since there may be zero or many prefixes associated with a given
namespace within a given context. This change helps to clarify that a
Name is a simple value, unassociated with any context and providing no
claims with respect to the validity of its prefix. The TCK already
enforces this interpretation of the original wording. This is simply a
clarification of the original intent. It is also consistent with the
thinking that is driving the evolution of the QName class.
javax.xml.soap
Interface Node
C028
getValue
public java.lang.String getValue()
-
Returns the value of the immediate child of this
Node object if a child exists and its value is
text.
-
Returns the value of this node if this is a
Text
node or the value of the immediate child of this node otherwise. If
there is an immediate child of this Node that it is a
Text node then it's value will be returned. If there
is more than one Text node then the value of the first
Text Node will be returned. Otherwise
null is returned.
-
-
-
-
-
Returns:
-
a String with the text of the immediate
child of this Node object if (1) there is a child
and (2) the child is a Text object;
null otherwise
-
a
String with the text of this node if this is
a Text node or the text contained by the first
immediate child of this Node object that is a
Text object if such a child exists;
null otherwise.
Rationale:This reflects the actual behavior of the
Reference Implementation, the original intent of the specification, the
equivalent behavior of DOM, and what we believe the end user will expect.
It does represent a new behavior rather than a new restriction which
raises the possibility of broken backward compatibility, however, in
light of the facts listed above coupled with the fact that the TCK
already allows this behavior (or else the Reference Implementation would
not have passed) we believe that it is both safe and desirable to make
this change.
javax.xml.soap
Interface SOAPBody
C029
addFault
public SOAPException
-
Creates a new
SOAPFault object and adds it to this
SOAPBody object. The new
SOAPFault will have default values set for the
mandatory child elements faultcode and
faultstring .
A SOAPBody may contain at most
oneSOAPFault child element.
-
-
-
-
-
Returns:
-
the new
SOAPFault object
-
Throws:
-
SOAPException - if there is a
SOAP error
Rationale:This reflects restrictions present in the
SOAP 1.1 specification.
javax.xml.soap
Class SOAPConnection
C030
-
public abstract class SOAPConnection
-
extends java.lang.Object
A point-to-point connection that a client can use for sending
messages directly to a remote party (represented by a URL, for
instance).
A client can obtain a SOAPConnection object
simply by calling the following static method.
SOAPConnection con = SOAPConnection.newInstance();
A client can obtain a SOAPConnection object using a
SOAPConnectionFactory object as in
the following example:
SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
SOAPConnection con = factory.createConnection();
A SOAPConnection object can be used to send messages
directly to a URL following the request/response paradigm. That is,
messages are sent using the method call , which sends the
message and then waits until it gets a reply.
Rationale:The original JavaDoc was wrong.
javax.xml.soap
Class SOAPConnectionFactory
C031
-
public abstract class SOAPConnectionFactory
-
extends java.lang.Object
A factory for creating SOAPConnection objects.
Implementation of this class is optional. If
SOAPConnectionFactory.newInstance() throws an
UnsupportedOperationException then the implementation does not
support the SAAJ communication infrastructure. Otherwise SOAPConnection objects can be created by
calling createConnection() on the newly created
SOAPConnectionFactory object.
Rationale:There was no JavaDoc class comment for
this class before. This comment clearly states the optional nature of the
SAAJ communication artifacts and exposes the mechanism that allows them
to be optional.
javax.xml.soap
Interface SOAPConstants
C032
URI_NS_SOAP_ENVELOPE
public static final java.lang.String URI_NS_SOAP_ENVELOPE
-
The namespace identifier for the SOAP 1.1 envelope. All
SOAPElement s in this namespace are defined by the SOAP
1.1 specification.
-
-
-
-
See Also:
-
Constant
Field Values
C033
URI_NS_SOAP_ENCODING
public static final java.lang.String URI_NS_SOAP_ENCODING
-
The namespace identifier for the SOAP 1.1 encoding. An attribute
named
encodingStyle in the
URI_NS_SOAP_ENVELOPE namespace and set to the value
URI_NS_SOAP_ENCODING can be added to an element to
indicate that it is encoded using the rules in section 5 of the
SOAP 1.1 specification.
-
-
-
See Also:
-
Constant
Field Values
C034
URI_SOAP_ACTOR_NEXT
public static final java.lang.String URI_SOAP_ACTOR_NEXT
-
The URI identifying the
first next
application processing a SOAP request as the intended actor for a
SOAP 1.1 header entry (see section 4.2.2 of the SOAP 1.1
specification).
This value can be passed to
SOAPHeader.examineMustUnderstandHeaderElements(String) ,
SOAPHeader.examineHeaderElements(String)
and
SOAPHeader.extractHeaderElements(String)
-
-
-
See Also:
-
Constant
Field Values
Rationale:These are just informational changes. They
do not change the meaning of the specification at all.
javax.xml.soap
Interface SOAPElement
-
public interface SOAPElement
-
extends Node, org.w3c.dom.Element
SOAPElement
|
C035
addChildElement(java.lang.String
localName)
Creates a new SOAPElement object initialized with
the given String specified
local name and adds the new element to this
SOAPElement object.
|
java.util.Iterator
|
C036
getAllAttributes()
Returns an iterator over all of the attribute
names Iterator over all of the
attribute Name objects in this
SOAPElement object.
|
java.util.Iterator
|
C037
getChildElements()
Returns an iterator over all the immediate content of
this element.
Returns an Iterator over all the immediate child
Node s of
this element . This includes Text objects as
well as SOAPElement objects.
Calling this method may cause child Element ,
SOAPElement and org.w3c.dom.Text
nodes to be replaced by SOAPElement ,
SOAPHeaderElement , SOAPBodyElement
or javax.xml.soap.Text nodes as appropriate for
the type of this parent node. As a result the calling
application must treat any existing references to these child
nodes that have been obtained through DOM APIs as invalid and
either discard them or refresh them with the values returned
by this Iterator . This behavior can be avoided
by calling the equivalent DOM APIs. See javax.xml.soapfor more details.
|
java.util.Iterator
|
C038
getChildElements(
Name name)
Returns an iterator over all the child elements with
the specified name. Returns an
Iterator over all the immediate child Node s of this
element with the specified name. All of these children
will be SOAPElement nodes.
Calling this method may cause child Element ,
SOAPElement and org.w3c.dom.Text
nodes to be replaced by SOAPElement ,
SOAPHeaderElement , SOAPBodyElement
or javax.xml.soap.Text nodes as appropriate for
the type of this parent node. As a result the calling
application must treat any existing references to these child
nodes that have been obtained through DOM APIs as invalid and
either discard them or refresh them with the values returned
by this Iterator . This behavior can be avoided
by calling the equivalent DOM APIs. See javax.xml.soapfor more details.
|
java.util.Iterator
|
C039
getNamespacePrefixes()
Returns an iterator of namespace prefixes
Iterator over the namespace prefix
String s declared by this element. The prefixes
returned by this iterator can be passed to the method
getNamespaceURI to retrieve the URI of each
namespace.
|
Rationale: Clarifies that the String
parameter of addChildElement is intended to be the name of
the new element -- not its value, and specifies the types to expect to be
able to extract from Iterator return values. C037 and C038
clarify the consequences of moving nodes around in the SAAJ tree and the
option of avoiding these consequences via DOM interfaces.
javax.xml.soap
Class SOAPException
initCause
public java.lang.Throwable initCause(java.lang.Throwable cause)
-
[...]
-
-
-
-
C040
-
-
-
Throws:
-
[...]
-
java.lang.IllegalStateException - if this
SOAPException object was created with SOAPException(Throwable) or SOAPException(String,Throwable), or this method
has already been called on this SOAPException
object
-
if the cause for this
SOAPException object has
already been initialized
Rationale:Tightens up the language.
javax.xml.soap
Interface SOAPHeader
java.util.Iterator
|
C041
examineHeaderElements(java.lang.String
actor)
Returns a list of all the
SOAPHeaderElement objects Returns an
Iterator over all the
SOAPHeaderElement objects in this
SOAPHeader object that have the specified
actor.
|
java.util.Iterator
|
C042
extractHeaderElements(java.lang.String
actor)
Returns a list of all the
SOAPHeaderElement objects Returns an
Iterator over all the
SOAPHeaderElement objects in this
SOAPHeader object that have the specified
actor and detaches them from this SOAPHeader
object.
|
Rationale:These methods return iterators, not
lists.
javax.xml.soap
Class SOAPMessage
saveRequired
public abstract boolean saveRequired()
C043
-
Indicates whether this SOAPMessage object has
had the method saveChanges called on it.
Indicates whether this SOAPMessage object needs to
have the method saveChanges called on it.
-
-
-
-
Returns:
-
true if
saveChanges has been called on
this message at least once; true if
saveChanges needs to be called;
false otherwise.
Rationale:Original wording was almost the exact
opposite of the intent.
javax.xml.soap
Class AttachmentPart
java.lang.Object | +--javax.xml.soap.AttachmentPart
getContent
public abstract java.lang.Object getContent() throws
SOAPException
-
[...]
C044
-
A JAXMSAAJ-compliant implementation must,
as a minimum, return a java.lang.String object
corresponding to any content stream with a
Content-Type value of text/plain , a
javax.xml.transform.stream.StreamSource
object corresponding to a content stream with a
Content-Type value of text/xml , a
java.awt.Image object corresponding to a content
stream with a Content-Type value of
image/gif or image/jpeg . For those
content types that an installed DataContentHandler
object does not understand, the DataContentHandler
object is required to return a java.io.InputStream
object with the raw bytes.
-
-
-
-
Returns:
-
a Java object with the content of this
AttachmentPart object
-
Throws:
-
SOAPException - if there is no
content set into this AttachmentPart object or if
there was a data transformation error
Rationale: This is the SAAJ API not JAXM. The
package name was wrong.
javax.xml.soap
Class SOAPPart
java.lang.Object | +--javax.xml.soap.SOAPPart
-
setContent
public abstract void setContent(javax.xml.transform.Source source)
throws SOAPException
-
C045
-
-
-
Sets the content of the
SOAPEnvelope object with the
data from the given Source object. This
Source must contain a valid SOAP document.
-
-
-
-
Throws:
-
SOAPException - if
there is a problem in setting the source
-
See Also:
-
getContent()
Rationale: It was not clear that the SOAPPart could
contain only a SOAP document.
-
Deprecating the Name interface in favor of the QName class.
Rationale: The QName class is currently in the process of being
upgraded and moved into a more appropriate package. While it would be
appropriate for SAAJ to adopt QName as it's preferred representation of
XML qualified names, it makes sense for us to defer this move until the
changes to QName are complete. Since the adoption of QName will have no
impact on WS-I compatibility it is not urgent that we make this change
at this time.
|