## org.apache.axis
Class SOAPPart

    java.lang.Object
      |
      +--javax.xml.soap.SOAPPart
            |
            +--org.apache.axis.SOAPPart

All Implemented Interfaces:
  Part, java.io.Serializable

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)
See Also:
  Serialized Form

Field Summary
`protected static org.apache.commons.logging.Log` `log`

Constructor Summary
`SOAPPart(Message parent, java.lang.Object initialContents, boolean isBodyStream)` Do not call this directly! Should only be called by Message.

Method Summary
`void` `addMimeHeader(java.lang.String header, java.lang.String value)` Add the specified MIME header, as per JAXM.
`java.util.Iterator` `getAllMimeHeaders()` Retrieves all the headers for this `SOAPPart` object as an iterator over the `MimeHeader` objects.
`byte[]` `getAsBytes()` Get the contents of this Part (not the headers!), as a byte array.
`SOAPEnvelope` `getAsSOAPEnvelope()` Get the contents of this Part (not the MIME headers!), as a SOAPEnvelope.
`java.lang.String` `getAsString()` Get the contents of this Part (not the headers!), as a String.
`Source` `getContent()` Returns the content of the SOAPEnvelope as a JAXP `Source` object.
`java.lang.String` `getContentId()` Content ID.
`java.lang.String` `getContentIdRef()` Content ID.
`int` `getContentLength()` Get the content length for this SOAPPart.
`java.lang.String` `getContentLocation()` Content location.
`java.lang.String` `getContentType()` Content type is always "text/xml" for SOAPParts.
`java.lang.Object` `getCurrentMessage()` Get the current message, in whatever form it happens to be right now.
`SOAPEnvelope` `getEnvelope()` Gets the `SOAPEnvelope` object associated with this `SOAPPart` object.
`java.util.Iterator` `getMatchingMimeHeaders(java.lang.String[] match)` Get all headers that match
`Message` `getMessage()` Get the Message for this Part.
`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`.
`java.util.Iterator` `getNonMatchingMimeHeaders(java.lang.String[] match)` Get all headers that do not match
`int` `getSize()` Get the total size in bytes, including headers, of this Part.
`void` `removeAllMimeHeaders()` Removes all the `MimeHeader` objects for this `SOAPEnvelope` object.
`void` `removeMimeHeader(java.lang.String header)` Removes all MIME headers that match the given name.
`void` `setContent(Source source)` Sets the content of the `SOAPEnvelope` object with the data from the given `Source` object.
`void` `setContentId(java.lang.String newCid)` Sets Content-Id of this part.
`void` `setContentLocation(java.lang.String loc)` Set content location.
`void` `setMessage(Message msg)` Set the Message for this Part.
`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.
`void` `setSOAPEnvelope(SOAPEnvelope env)` This set the SOAP Envelope for this part.
`void` `writeTo(java.io.Writer writer)` Write the contents to the specified writer.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### log

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

Constructor Detail

### SOAPPart

    public SOAPPart(Message parent,
                    java.lang.Object initialContents,
                    boolean isBodyStream)

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

Method Detail

### getMessage

    public Message getMessage()

  Get 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.

### getContentType

    public java.lang.String getContentType()

  Content type is always "text/xml" for SOAPParts.

  Specified by:
    `getContentType` in interface `Part`

### getContentLength

    public int getContentLength()

  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.

### 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?

### getSize

    public int getSize()

  Get the total size in bytes, including headers, of this Part. TODO: For now, since we aren't actually doing MIME yet, this is the same as getContentLength(). Soon it will be different.

### writeTo

    public void writeTo(java.io.Writer writer)
                 throws java.io.IOException

  Write the contents to the specified writer.

    `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.

### 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.

    `AxisFault`

### 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.

    `AxisFault`

### 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.

    `AxisFault`

### 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` - a `String` giving the header name
    `value` - a `String` giving the value to be set or added

### getContentLocation

    public java.lang.String getContentLocation()

  Content location.

  Specified by:
    `getContentLocation` in interface `Part`
  Overrides:
    `getContentLocation` in class `SOAPPart`
  Returns:
    a `String` giving the value of the MIME header whose name is "Content-Location"
  See Also:
    `setContentLocation(java.lang.String)`

### setContentLocation

    public void setContentLocation(java.lang.String loc)

  Set content location.

  Specified by:
    `setContentLocation` in interface `Part`
  Overrides:
    `setContentLocation` in class `SOAPPart`
  Parameters:
    `loc` - a `String` giving the value of the MIME header "Content-Location"
  See Also:
    `getContentLocation()`

### 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

### getContentId

    public java.lang.String getContentId()

  Content ID.

  Specified by:
    `getContentId` in interface `Part`
  Overrides:
    `getContentId` in class `SOAPPart`
  Returns:
    a `String` giving the value of the MIME header named "Content-Id"
  See Also:
    `setContentId(java.lang.String)`

### 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` - a `String` array with the name(s) of the MIME headers to be returned
  Returns:
    all of the MIME headers that match one of the names in the given array, returned as an `Iterator` object

### 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` - a `String` array with the name(s) of the MIME headers not to be returned
  Returns:
    all of the MIME headers in this `SOAPPart` object except those that match one of the names in the given array. The nonmatching MIME headers are returned as an `Iterator` object.

### setContent

    public void setContent(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()`

### getContent

    public Source getContent()
                      throws SOAPException

  Returns the content of the SOAPEnvelope as a JAXP `Source` object.

  Specified by:
    `getContent` in class `SOAPPart`
  Returns:
    the content as a `javax.xml.transform.Source` object
  Throws:
    `SOAPException` - if the implementation cannot convert the specified `Source` object
  See Also:
    `setContent(javax.xml.transform.Source)`

### 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

Copyright © 2003 Apache Web Services Project. All Rights Reserved.