Class SOAPPart

  • All Implemented Interfaces:
    java.io.Serializable, Part, org.w3c.dom.Document, org.w3c.dom.Node

    public class SOAPPart
    extends SOAPPart
    implements Part
    The SOAPPart provides access to the root part of the Message which contains the envelope.

    SOAPPart implements Part, providing common MIME operations.

    SOAPPart also allows access to its envelope, as a string, byte[], InputStream, or SOAPEnvelope. (This functionality used to be in Message, and has been moved here more or less verbatim pending further cleanup.)

    Author:
    Rob Jellinghaus (robj@unrealities.com), Doug Davis (dug@us.ibm.com), Glen Daniels (gdaniels@allaire.com), Heejune Ahn (cityboy@tmax.co.kr)
    See Also:
    Serialized Form
    • Field Detail

      • log

        protected static org.apache.commons.logging.Log log
      • ALLOW_FORM_OPTIMIZATION

        public static final java.lang.String ALLOW_FORM_OPTIMIZATION
        property used to set SOAPEnvelope as default form
        See Also:
        Constant Field Values
      • mDocument

        protected org.w3c.dom.Document mDocument
        SOAPEnvelope is the Document Elements of this XML docuement
    • Constructor Detail

      • SOAPPart

        public SOAPPart​(Message parent,
                        java.lang.Object initialContents,
                        boolean isBodyStream)
        Create a new SOAPPart.

        Do not call this directly! Should only be called by Message.

        Parameters:
        parent - the parent Message
        initialContents - the initial contens Object
        isBodyStream - if the body is in a stream
    • Method Detail

      • getMessage

        public Message getMessage()
        Get the Message for this Part.
        Returns:
        the Message for this Part
      • setMessage

        public void setMessage​(Message msg)
        Set the Message for this Part. Do not call this Directly. Called by Message.
        Parameters:
        msg - the Message for this part
      • getContentType

        public java.lang.String getContentType()
        Content type is always "text/xml" for SOAPParts.
        Specified by:
        getContentType in interface Part
        Returns:
        the content type
      • getContentLength

        public long getContentLength()
                              throws AxisFault
        Get the content length for this SOAPPart. This will force buffering of the SOAPPart, but it will also cache the byte[] form of the SOAPPart.
        Returns:
        the content length in bytes
        Throws:
        AxisFault
      • setSOAPEnvelope

        public void setSOAPEnvelope​(SOAPEnvelope env)
        This set the SOAP Envelope for this part.

        Note: It breaks the chicken/egg created. I need a message to create an attachment... From the attachment I should be able to get a reference... I now want to edit elements in the envelope in order to place the attachment reference to it. How do I now update the SOAP envelope with what I've changed?

        Parameters:
        env - the SOAPEnvelope for this SOAPPart
      • writeTo

        public void writeTo​(java.io.OutputStream os)
                     throws java.io.IOException
        Write the contents to the specified stream.
        Parameters:
        os - the java.io.OutputStream to write to
        Throws:
        java.io.IOException
      • writeTo

        public void writeTo​(java.io.Writer writer)
                     throws java.io.IOException
        Write the contents to the specified writer.
        Parameters:
        writer - the Writer to write to
        Throws:
        java.io.IOException
      • getCurrentMessage

        public java.lang.Object getCurrentMessage()
        Get the current message, in whatever form it happens to be right now. Will return a String, byte[], InputStream, or SOAPEnvelope, depending on circumstances.

        The method name is historical. TODO: rename this for clarity; should be more like getContents.

        Returns:
        the current content
      • setCurrentMessage

        public void setCurrentMessage​(java.lang.Object currMsg,
                                      int form)
        Set the current message
        Parameters:
        currMsg -
        form -
      • getCurrentForm

        public int getCurrentForm()
      • getAsBytes

        public byte[] getAsBytes()
                          throws AxisFault
        Get the contents of this Part (not the headers!), as a byte array. This will force buffering of the message.
        Returns:
        an array of bytes containing a byte representation of this Part
        Throws:
        AxisFault - if this Part can't be serialized to the byte array
      • getAsString

        public java.lang.String getAsString()
                                     throws AxisFault
        Get the contents of this Part (not the headers!), as a String. This will force buffering of the message.
        Returns:
        a String containing the content of this message
        Throws:
        AxisFault - if there is an error serializing this part
      • getAsSOAPEnvelope

        public SOAPEnvelope getAsSOAPEnvelope()
                                       throws AxisFault
        Get the contents of this Part (not the MIME headers!), as a SOAPEnvelope. This will force a complete parse of the message.
        Returns:
        a SOAPEnvelope containing the message content
        Throws:
        AxisFault - if the envelope could not be constructed
      • addMimeHeader

        public void addMimeHeader​(java.lang.String header,
                                  java.lang.String value)
        Add the specified MIME header, as per JAXM.
        Specified by:
        addMimeHeader in interface Part
        Specified by:
        addMimeHeader in class SOAPPart
        Parameters:
        header - the header to add
        value - the value of that header
      • setContentId

        public void setContentId​(java.lang.String newCid)
        Sets Content-Id of this part. already defined.
        Specified by:
        setContentId in interface Part
        Overrides:
        setContentId in class SOAPPart
        Parameters:
        newCid - new Content-Id
        See Also:
        getContentId()
      • getContentIdRef

        public java.lang.String getContentIdRef()
        Content ID.
        Specified by:
        getContentIdRef in interface Part
        Returns:
        the contentId reference value that should be used directly as an href in a SOAP element to reference this attachment. Not part of JAX-RPC, JAX-M, SAAJ, etc.
      • getMatchingMimeHeaders

        public java.util.Iterator getMatchingMimeHeaders​(java.lang.String[] match)
        Get all headers that match.
        Specified by:
        getMatchingMimeHeaders in interface Part
        Specified by:
        getMatchingMimeHeaders in class SOAPPart
        Parameters:
        match - an array of Strings giving mime header names
        Returns:
        an Iterator over all values matching these headers
      • getNonMatchingMimeHeaders

        public java.util.Iterator getNonMatchingMimeHeaders​(java.lang.String[] match)
        Get all headers that do not match.
        Specified by:
        getNonMatchingMimeHeaders in interface Part
        Specified by:
        getNonMatchingMimeHeaders in class SOAPPart
        Parameters:
        match - an array of Strings giving mime header names
        Returns:
        an Iterator over all values not matching these headers
      • setContent

        public void setContent​(javax.xml.transform.Source source)
                        throws SOAPException
        Sets the content of the SOAPEnvelope object with the data from the given Source object.
        Specified by:
        setContent in class SOAPPart
        Parameters:
        source - javax.xml.transform.Source object with the data to be set
        Throws:
        SOAPException - if there is a problem in setting the source
        See Also:
        getContent()
      • getAllMimeHeaders

        public java.util.Iterator getAllMimeHeaders()
        Retrieves all the headers for this SOAPPart object as an iterator over the MimeHeader objects.
        Specified by:
        getAllMimeHeaders in class SOAPPart
        Returns:
        an Iterator object with all of the Mime headers for this SOAPPart object
      • setMimeHeader

        public void setMimeHeader​(java.lang.String name,
                                  java.lang.String value)
        Changes the first header entry that matches the given header name so that its value is the given value, adding a new header with the given name and value if no existing header is a match. If there is a match, this method clears all existing values for the first header that matches and sets the given value instead. If more than one header has the given name, this method removes all of the matching headers after the first one.

        Note that RFC822 headers can contain only US-ASCII characters.

        Specified by:
        setMimeHeader in class SOAPPart
        Parameters:
        name - a String giving the header name for which to search
        value - a String giving the value to be set. This value will be substituted for the current value(s) of the first header that is a match if there is one. If there is no match, this value will be the value for a new MimeHeader object.
        See Also:
        getMimeHeader(java.lang.String)
      • getMimeHeader

        public java.lang.String[] getMimeHeader​(java.lang.String name)
        Gets all the values of the MimeHeader object in this SOAPPart object that is identified by the given String.
        Specified by:
        getMimeHeader in interface Part
        Specified by:
        getMimeHeader in class SOAPPart
        Parameters:
        name - the name of the header; example: "Content-Type"
        Returns:
        a String array giving all the values for the specified header
        See Also:
        setMimeHeader(java.lang.String, java.lang.String)
      • removeAllMimeHeaders

        public void removeAllMimeHeaders()
        Removes all the MimeHeader objects for this SOAPEnvelope object.
        Specified by:
        removeAllMimeHeaders in class SOAPPart
      • removeMimeHeader

        public void removeMimeHeader​(java.lang.String header)
        Removes all MIME headers that match the given name.
        Specified by:
        removeMimeHeader in class SOAPPart
        Parameters:
        header - a String giving the name of the MIME header(s) to be removed
      • getEnvelope

        public SOAPEnvelope getEnvelope()
                                 throws SOAPException
        Gets the SOAPEnvelope object associated with this SOAPPart object. Once the SOAP envelope is obtained, it can be used to get its contents.
        Specified by:
        getEnvelope in class SOAPPart
        Returns:
        the SOAPEnvelope object for this SOAPPart object
        Throws:
        SOAPException - if there is a SOAP error
      • getSOAPDocument

        public org.w3c.dom.Document getSOAPDocument()
        Since:
        SAAJ 1.2
      • getDoctype

        public org.w3c.dom.DocumentType getDoctype()
        Specified by:
        getDoctype in interface org.w3c.dom.Document
        Returns:
      • getImplementation

        public org.w3c.dom.DOMImplementation getImplementation()
        Specified by:
        getImplementation in interface org.w3c.dom.Document
        Returns:
      • getDocumentElement

        public org.w3c.dom.Element getDocumentElement()
        Specified by:
        getDocumentElement in interface org.w3c.dom.Document
      • createElement

        public org.w3c.dom.Element createElement​(java.lang.String tagName)
                                          throws org.w3c.dom.DOMException
        Specified by:
        createElement in interface org.w3c.dom.Document
        Parameters:
        tagName -
        Returns:
        Throws:
        org.w3c.dom.DOMException
      • createDocumentFragment

        public org.w3c.dom.DocumentFragment createDocumentFragment()
        Specified by:
        createDocumentFragment in interface org.w3c.dom.Document
      • createTextNode

        public org.w3c.dom.Text createTextNode​(java.lang.String data)
        Specified by:
        createTextNode in interface org.w3c.dom.Document
      • createComment

        public org.w3c.dom.Comment createComment​(java.lang.String data)
        Specified by:
        createComment in interface org.w3c.dom.Document
      • createCDATASection

        public org.w3c.dom.CDATASection createCDATASection​(java.lang.String data)
                                                    throws org.w3c.dom.DOMException
        Specified by:
        createCDATASection in interface org.w3c.dom.Document
        Throws:
        org.w3c.dom.DOMException
      • createProcessingInstruction

        public org.w3c.dom.ProcessingInstruction createProcessingInstruction​(java.lang.String target,
                                                                             java.lang.String data)
                                                                      throws org.w3c.dom.DOMException
        Specified by:
        createProcessingInstruction in interface org.w3c.dom.Document
        Throws:
        org.w3c.dom.DOMException
      • createAttribute

        public org.w3c.dom.Attr createAttribute​(java.lang.String name)
                                         throws org.w3c.dom.DOMException
        Specified by:
        createAttribute in interface org.w3c.dom.Document
        Throws:
        org.w3c.dom.DOMException
      • createEntityReference

        public org.w3c.dom.EntityReference createEntityReference​(java.lang.String name)
                                                          throws org.w3c.dom.DOMException
        Specified by:
        createEntityReference in interface org.w3c.dom.Document
        Throws:
        org.w3c.dom.DOMException
      • getElementsByTagName

        public org.w3c.dom.NodeList getElementsByTagName​(java.lang.String tagname)
        Specified by:
        getElementsByTagName in interface org.w3c.dom.Document
      • importNode

        public org.w3c.dom.Node importNode​(org.w3c.dom.Node importedNode,
                                           boolean deep)
                                    throws org.w3c.dom.DOMException
        Specified by:
        importNode in interface org.w3c.dom.Document
        Throws:
        org.w3c.dom.DOMException
      • createElementNS

        public org.w3c.dom.Element createElementNS​(java.lang.String namespaceURI,
                                                   java.lang.String qualifiedName)
                                            throws org.w3c.dom.DOMException
        Specified by:
        createElementNS in interface org.w3c.dom.Document
        Throws:
        org.w3c.dom.DOMException
      • createAttributeNS

        public org.w3c.dom.Attr createAttributeNS​(java.lang.String namespaceURI,
                                                  java.lang.String qualifiedName)
                                           throws org.w3c.dom.DOMException
        Specified by:
        createAttributeNS in interface org.w3c.dom.Document
        Throws:
        org.w3c.dom.DOMException
      • getElementsByTagNameNS

        public org.w3c.dom.NodeList getElementsByTagNameNS​(java.lang.String namespaceURI,
                                                           java.lang.String localName)
        Specified by:
        getElementsByTagNameNS in interface org.w3c.dom.Document
      • getElementById

        public org.w3c.dom.Element getElementById​(java.lang.String elementId)
        Specified by:
        getElementById in interface org.w3c.dom.Document
      • getEncoding

        public java.lang.String getEncoding()
      • setEncoding

        public void setEncoding​(java.lang.String s)
      • getStandalone

        public boolean getStandalone()
      • setStandalone

        public void setStandalone​(boolean flag)
      • getStrictErrorChecking

        public boolean getStrictErrorChecking()
        Specified by:
        getStrictErrorChecking in interface org.w3c.dom.Document
      • setStrictErrorChecking

        public void setStrictErrorChecking​(boolean flag)
        Specified by:
        setStrictErrorChecking in interface org.w3c.dom.Document
      • getVersion

        public java.lang.String getVersion()
      • setVersion

        public void setVersion​(java.lang.String s)
      • adoptNode

        public org.w3c.dom.Node adoptNode​(org.w3c.dom.Node node)
                                   throws org.w3c.dom.DOMException
        Specified by:
        adoptNode in interface org.w3c.dom.Document
        Throws:
        org.w3c.dom.DOMException
      • getNodeName

        public java.lang.String getNodeName()
        Node Implementation
        Specified by:
        getNodeName in interface org.w3c.dom.Node
      • getNodeValue

        public java.lang.String getNodeValue()
                                      throws org.w3c.dom.DOMException
        Specified by:
        getNodeValue in interface org.w3c.dom.Node
        Throws:
        org.w3c.dom.DOMException
      • setNodeValue

        public void setNodeValue​(java.lang.String nodeValue)
                          throws org.w3c.dom.DOMException
        Specified by:
        setNodeValue in interface org.w3c.dom.Node
        Throws:
        org.w3c.dom.DOMException
      • getNodeType

        public short getNodeType()
        Specified by:
        getNodeType in interface org.w3c.dom.Node
      • getParentNode

        public org.w3c.dom.Node getParentNode()
        Specified by:
        getParentNode in interface org.w3c.dom.Node
      • getChildNodes

        public org.w3c.dom.NodeList getChildNodes()
        Specified by:
        getChildNodes in interface org.w3c.dom.Node
      • getFirstChild

        public org.w3c.dom.Node getFirstChild()
        Specified by:
        getFirstChild in interface org.w3c.dom.Node
      • getLastChild

        public org.w3c.dom.Node getLastChild()
        Specified by:
        getLastChild in interface org.w3c.dom.Node
      • getPreviousSibling

        public org.w3c.dom.Node getPreviousSibling()
        Specified by:
        getPreviousSibling in interface org.w3c.dom.Node
      • getNextSibling

        public org.w3c.dom.Node getNextSibling()
        Specified by:
        getNextSibling in interface org.w3c.dom.Node
      • getAttributes

        public org.w3c.dom.NamedNodeMap getAttributes()
        Specified by:
        getAttributes in interface org.w3c.dom.Node
      • getOwnerDocument

        public org.w3c.dom.Document getOwnerDocument()
        Specified by:
        getOwnerDocument in interface org.w3c.dom.Node
      • insertBefore

        public org.w3c.dom.Node insertBefore​(org.w3c.dom.Node newChild,
                                             org.w3c.dom.Node refChild)
                                      throws org.w3c.dom.DOMException
        Specified by:
        insertBefore in interface org.w3c.dom.Node
        Throws:
        org.w3c.dom.DOMException
      • replaceChild

        public org.w3c.dom.Node replaceChild​(org.w3c.dom.Node newChild,
                                             org.w3c.dom.Node oldChild)
                                      throws org.w3c.dom.DOMException
        Specified by:
        replaceChild in interface org.w3c.dom.Node
        Throws:
        org.w3c.dom.DOMException
      • removeChild

        public org.w3c.dom.Node removeChild​(org.w3c.dom.Node oldChild)
                                     throws org.w3c.dom.DOMException
        Specified by:
        removeChild in interface org.w3c.dom.Node
        Throws:
        org.w3c.dom.DOMException
      • appendChild

        public org.w3c.dom.Node appendChild​(org.w3c.dom.Node newChild)
                                     throws org.w3c.dom.DOMException
        Specified by:
        appendChild in interface org.w3c.dom.Node
        Throws:
        org.w3c.dom.DOMException
      • hasChildNodes

        public boolean hasChildNodes()
        Specified by:
        hasChildNodes in interface org.w3c.dom.Node
      • cloneNode

        public org.w3c.dom.Node cloneNode​(boolean deep)
        Specified by:
        cloneNode in interface org.w3c.dom.Node
      • normalize

        public void normalize()
        Specified by:
        normalize in interface org.w3c.dom.Node
      • isSupported

        public boolean isSupported​(java.lang.String feature,
                                   java.lang.String version)
        Specified by:
        isSupported in interface org.w3c.dom.Node
      • getNamespaceURI

        public java.lang.String getNamespaceURI()
        Specified by:
        getNamespaceURI in interface org.w3c.dom.Node
      • getPrefix

        public java.lang.String getPrefix()
        Specified by:
        getPrefix in interface org.w3c.dom.Node
      • setPrefix

        public void setPrefix​(java.lang.String prefix)
                       throws org.w3c.dom.DOMException
        Specified by:
        setPrefix in interface org.w3c.dom.Node
        Throws:
        org.w3c.dom.DOMException
      • getLocalName

        public java.lang.String getLocalName()
        Specified by:
        getLocalName in interface org.w3c.dom.Node
      • hasAttributes

        public boolean hasAttributes()
        Specified by:
        hasAttributes in interface org.w3c.dom.Node
      • isBodyStream

        public boolean isBodyStream()
      • getBaseURI

        public java.lang.String getBaseURI()
        DOM Level 3 stubs
        Specified by:
        getBaseURI in interface org.w3c.dom.Node
      • getXmlStandalone

        public boolean getXmlStandalone()
        Specified by:
        getXmlStandalone in interface org.w3c.dom.Document
      • setUserData

        public java.lang.Object setUserData​(java.lang.String key,
                                            java.lang.Object data,
                                            org.w3c.dom.UserDataHandler handler)
        Specified by:
        setUserData in interface org.w3c.dom.Node
      • setDocumentURI

        public void setDocumentURI​(java.lang.String documentURI)
        Specified by:
        setDocumentURI in interface org.w3c.dom.Document
      • setXmlStandalone

        public void setXmlStandalone​(boolean xmlStandalone)
        Specified by:
        setXmlStandalone in interface org.w3c.dom.Document
      • renameNode

        public org.w3c.dom.Node renameNode​(org.w3c.dom.Node n,
                                           java.lang.String namespaceURI,
                                           java.lang.String qualifiedName)
        Specified by:
        renameNode in interface org.w3c.dom.Document
      • getInputEncoding

        public java.lang.String getInputEncoding()
        Specified by:
        getInputEncoding in interface org.w3c.dom.Document
      • getXmlEncoding

        public java.lang.String getXmlEncoding()
        Specified by:
        getXmlEncoding in interface org.w3c.dom.Document
      • setTextContent

        public void setTextContent​(java.lang.String textContent)
        Specified by:
        setTextContent in interface org.w3c.dom.Node
      • isSameNode

        public boolean isSameNode​(org.w3c.dom.Node other)
        Specified by:
        isSameNode in interface org.w3c.dom.Node
      • getDocumentURI

        public java.lang.String getDocumentURI()
        Specified by:
        getDocumentURI in interface org.w3c.dom.Document
      • getFeature

        public java.lang.Object getFeature​(java.lang.String feature,
                                           java.lang.String version)
        Specified by:
        getFeature in interface org.w3c.dom.Node
      • isDefaultNamespace

        public boolean isDefaultNamespace​(java.lang.String namespaceURI)
        Specified by:
        isDefaultNamespace in interface org.w3c.dom.Node
      • lookupPrefix

        public java.lang.String lookupPrefix​(java.lang.String namespaceURI)
        Specified by:
        lookupPrefix in interface org.w3c.dom.Node
      • isEqualNode

        public boolean isEqualNode​(org.w3c.dom.Node arg)
        Specified by:
        isEqualNode in interface org.w3c.dom.Node
      • setXmlVersion

        public void setXmlVersion​(java.lang.String xmlVersion)
        Specified by:
        setXmlVersion in interface org.w3c.dom.Document
      • getXmlVersion

        public java.lang.String getXmlVersion()
        Specified by:
        getXmlVersion in interface org.w3c.dom.Document
      • getUserData

        public java.lang.Object getUserData​(java.lang.String key)
        Specified by:
        getUserData in interface org.w3c.dom.Node
      • getTextContent

        public java.lang.String getTextContent()
        Specified by:
        getTextContent in interface org.w3c.dom.Node
      • normalizeDocument

        public void normalizeDocument()
        Specified by:
        normalizeDocument in interface org.w3c.dom.Document
      • lookupNamespaceURI

        public java.lang.String lookupNamespaceURI​(java.lang.String prefix)
        Specified by:
        lookupNamespaceURI in interface org.w3c.dom.Node
      • getDomConfig

        public org.w3c.dom.DOMConfiguration getDomConfig()
        Specified by:
        getDomConfig in interface org.w3c.dom.Document
      • compareDocumentPosition

        public short compareDocumentPosition​(org.w3c.dom.Node other)
        Specified by:
        compareDocumentPosition in interface org.w3c.dom.Node