/*
* Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package javax.xml.soap;
The container for the SOAPHeader and SOAPBody portions of a SOAPPart
object. By default, a SOAPMessage
object is created with a SOAPPart
object that has a SOAPEnvelope
object. The SOAPEnvelope
object by default has an empty SOAPBody
object and an empty SOAPHeader
object. The SOAPBody
object is required, and the SOAPHeader
object, though optional, is used in the majority of cases. If the SOAPHeader
object is not needed, it can be deleted, which is shown later. A client can access the SOAPHeader
and SOAPBody
objects by calling the methods SOAPEnvelope.getHeader
and SOAPEnvelope.getBody
. The following lines of code use these two methods after starting with the SOAPMessage
object message to get the SOAPPart
object sp, which is then used to get the SOAPEnvelope
object se.
SOAPPart sp = message.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
SOAPHeader sh = se.getHeader();
SOAPBody sb = se.getBody();
It is possible to change the body or header of a SOAPEnvelope
object by retrieving the current one, deleting it, and then adding a new body or header. The javax.xml.soap.Node
method deleteNode
deletes the XML element (node) on which it is called. For example, the following line of code deletes the SOAPBody
object that is retrieved by the method getBody
.
se.getBody().detachNode();
To create a SOAPHeader
object to replace the one that was removed, a client uses the method SOAPEnvelope.addHeader
, which creates a new header and adds it to the SOAPEnvelope
object. Similarly, the method addBody
creates a new SOAPBody
object and adds it to the SOAPEnvelope
object. The following code fragment retrieves the current header, removes it, and adds a new one. Then it retrieves the current body, removes it, and adds a new one.
SOAPPart sp = message.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
se.getHeader().detachNode();
SOAPHeader sh = se.addHeader();
se.getBody().detachNode();
SOAPBody sb = se.addBody();
It is an error to add a SOAPBody
or SOAPHeader
object if one already exists. The SOAPEnvelope
interface provides three methods for creating Name
objects. One method creates Name
objects with a local name, a namespace prefix, and a namesapce URI. The second method creates Name
objects with a local name and a namespace prefix, and the third creates Name
objects with just a local name. The following line of code, in which se is a SOAPEnvelope
object, creates a new Name
object with all three.
Name name = se.createName("GetLastTradePrice", "WOMBAT",
"http://www.wombat.org/trader");
Since: 1.6
/**
* The container for the SOAPHeader and SOAPBody portions of a
* {@code SOAPPart} object. By default, a {@code SOAPMessage}
* object is created with a {@code SOAPPart} object that has a
* {@code SOAPEnvelope} object. The {@code SOAPEnvelope} object
* by default has an empty {@code SOAPBody} object and an empty
* {@code SOAPHeader} object. The {@code SOAPBody} object is
* required, and the {@code SOAPHeader} object, though
* optional, is used in the majority of cases. If the
* {@code SOAPHeader} object is not needed, it can be deleted,
* which is shown later.
* <P>
* A client can access the {@code SOAPHeader} and {@code SOAPBody}
* objects by calling the methods {@code SOAPEnvelope.getHeader} and
* {@code SOAPEnvelope.getBody}. The
* following lines of code use these two methods after starting with
* the {@code SOAPMessage}
* object <i>message</i> to get the {@code SOAPPart} object <i>sp</i>,
* which is then used to get the {@code SOAPEnvelope} object <i>se</i>.
*
* <pre>{@code
* SOAPPart sp = message.getSOAPPart();
* SOAPEnvelope se = sp.getEnvelope();
* SOAPHeader sh = se.getHeader();
* SOAPBody sb = se.getBody();
* }</pre>
* <P>
* It is possible to change the body or header of a {@code SOAPEnvelope}
* object by retrieving the current one, deleting it, and then adding
* a new body or header. The {@code javax.xml.soap.Node} method
* {@code deleteNode} deletes the XML element (node) on which it is
* called. For example, the following line of code deletes the
* {@code SOAPBody} object that is retrieved by the method {@code getBody}.
* <pre>{@code
* se.getBody().detachNode();
* }</pre>
* To create a {@code SOAPHeader} object to replace the one that was removed,
* a client uses
* the method {@code SOAPEnvelope.addHeader}, which creates a new header and
* adds it to the {@code SOAPEnvelope} object. Similarly, the method
* {@code addBody} creates a new {@code SOAPBody} object and adds
* it to the {@code SOAPEnvelope} object. The following code fragment
* retrieves the current header, removes it, and adds a new one. Then
* it retrieves the current body, removes it, and adds a new one.
*
* <pre>{@code
* SOAPPart sp = message.getSOAPPart();
* SOAPEnvelope se = sp.getEnvelope();
* se.getHeader().detachNode();
* SOAPHeader sh = se.addHeader();
* se.getBody().detachNode();
* SOAPBody sb = se.addBody();
* }</pre>
* It is an error to add a {@code SOAPBody} or {@code SOAPHeader}
* object if one already exists.
* <P>
* The {@code SOAPEnvelope} interface provides three methods for creating
* {@code Name} objects. One method creates {@code Name} objects with
* a local name, a namespace prefix, and a namesapce URI. The second method creates
* {@code Name} objects with a local name and a namespace prefix, and the third
* creates {@code Name} objects with just a local name. The following line of
* code, in which <i>se</i> is a {@code SOAPEnvelope} object, creates a new
* {@code Name} object with all three.
* <pre>{@code
* Name name = se.createName("GetLastTradePrice", "WOMBAT",
* "http://www.wombat.org/trader");
* }</pre>
*
* @since 1.6
*/
public interface SOAPEnvelope extends SOAPElement {
Creates a new Name
object initialized with the given local name, namespace prefix, and namespace URI. This factory method creates Name
objects for use in the SOAP/XML document.
Params: - localName – a
String
giving the local name - prefix – a
String
giving the prefix of the namespace - uri – a
String
giving the URI of the namespace
Throws: - SOAPException – if there is a SOAP error
Returns: a Name
object initialized with the given local name, namespace prefix, and namespace URI
/**
* Creates a new {@code Name} object initialized with the
* given local name, namespace prefix, and namespace URI.
* <P>
* This factory method creates {@code Name} objects for use in
* the SOAP/XML document.
*
* @param localName a {@code String} giving the local name
* @param prefix a {@code String} giving the prefix of the namespace
* @param uri a {@code String} giving the URI of the namespace
* @return a {@code Name} object initialized with the given
* local name, namespace prefix, and namespace URI
* @throws SOAPException if there is a SOAP error
*/
public abstract Name createName(String localName, String prefix,
String uri)
throws SOAPException;
Creates a new Name
object initialized with the given local name. This factory method creates Name
objects for use in the SOAP/XML document.
Params: - localName – a
String
giving the local name
Throws: - SOAPException – if there is a SOAP error
Returns: a Name
object initialized with the given local name
/**
* Creates a new {@code Name} object initialized with the
* given local name.
* <P>
* This factory method creates {@code Name} objects for use in
* the SOAP/XML document.
*
* @param localName a {@code String} giving the local name
* @return a {@code Name} object initialized with the given
* local name
* @throws SOAPException if there is a SOAP error
*/
public abstract Name createName(String localName)
throws SOAPException;
Returns the SOAPHeader
object for this SOAPEnvelope
object. A new SOAPMessage
object is by default created with a SOAPEnvelope
object that contains an empty SOAPHeader
object. As a result, the method getHeader
will always return a SOAPHeader
object unless the header has been removed and a new one has not been added.
Throws: - SOAPException – if there is a problem obtaining the
SOAPHeader
object
Returns: the SOAPHeader
object or null
if there is none
/**
* Returns the {@code SOAPHeader} object for
* this {@code SOAPEnvelope} object.
* <P>
* A new {@code SOAPMessage} object is by default created with a
* {@code SOAPEnvelope} object that contains an empty
* {@code SOAPHeader} object. As a result, the method
* {@code getHeader} will always return a {@code SOAPHeader}
* object unless the header has been removed and a new one has not
* been added.
*
* @return the {@code SOAPHeader} object or {@code null} if
* there is none
* @exception SOAPException if there is a problem obtaining the
* {@code SOAPHeader} object
*/
public SOAPHeader getHeader() throws SOAPException;
Returns the SOAPBody
object associated with this SOAPEnvelope
object. A new SOAPMessage
object is by default created with a SOAPEnvelope
object that contains an empty SOAPBody
object. As a result, the method getBody
will always return a SOAPBody
object unless the body has been removed and a new one has not been added.
Throws: - SOAPException – if there is a problem obtaining the
SOAPBody
object
Returns: the SOAPBody
object for this SOAPEnvelope
object or null
if there is none
/**
* Returns the {@code SOAPBody} object associated with this
* {@code SOAPEnvelope} object.
* <P>
* A new {@code SOAPMessage} object is by default created with a
* {@code SOAPEnvelope} object that contains an empty
* {@code SOAPBody} object. As a result, the method
* {@code getBody} will always return a {@code SOAPBody}
* object unless the body has been removed and a new one has not
* been added.
*
* @return the {@code SOAPBody} object for this
* {@code SOAPEnvelope} object or {@code null}
* if there is none
* @exception SOAPException if there is a problem obtaining the
* {@code SOAPBody} object
*/
public SOAPBody getBody() throws SOAPException;
Creates a SOAPHeader
object and sets it as the SOAPHeader
object for this SOAPEnvelope
object.
It is illegal to add a header when the envelope already
contains a header. Therefore, this method should be called
only after the existing header has been removed.
Throws: - SOAPException – if this
SOAPEnvelope
object already contains a valid SOAPHeader
object
Returns: the new SOAPHeader
object
/**
* Creates a {@code SOAPHeader} object and sets it as the
* {@code SOAPHeader} object for this {@code SOAPEnvelope}
* object.
* <P>
* It is illegal to add a header when the envelope already
* contains a header. Therefore, this method should be called
* only after the existing header has been removed.
*
* @return the new {@code SOAPHeader} object
*
* @exception SOAPException if this
* {@code SOAPEnvelope} object already contains a
* valid {@code SOAPHeader} object
*/
public SOAPHeader addHeader() throws SOAPException;
Creates a SOAPBody
object and sets it as the SOAPBody
object for this SOAPEnvelope
object.
It is illegal to add a body when the envelope already
contains a body. Therefore, this method should be called
only after the existing body has been removed.
Throws: - SOAPException – if this
SOAPEnvelope
object already contains a valid SOAPBody
object
Returns: the new SOAPBody
object
/**
* Creates a {@code SOAPBody} object and sets it as the
* {@code SOAPBody} object for this {@code SOAPEnvelope}
* object.
* <P>
* It is illegal to add a body when the envelope already
* contains a body. Therefore, this method should be called
* only after the existing body has been removed.
*
* @return the new {@code SOAPBody} object
*
* @exception SOAPException if this
* {@code SOAPEnvelope} object already contains a
* valid {@code SOAPBody} object
*/
public SOAPBody addBody() throws SOAPException;
}