## org.apache.axis
Class Message

    java.lang.Object
      javax.xml.soap.SOAPMessage
          org.apache.axis.Message

All Implemented Interfaces:
  java.io.Serializable

public class Message
extends SOAPMessage
implements java.io.Serializable

A complete SOAP (and/or XML-RPC, eventually) message. Includes both the root part (as a SOAPPart), and zero or more MIME attachments (as AttachmentParts).

Eventually should be refactored to generalize SOAPPart for multiple protocols (XML-RPC?).

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

Field Summary
`static java.lang.String` `CONTENT_TYPE_MTOM` Content Type for MTOM/XOP
`static java.lang.String` `DEFAULT_ATTACHMNET_IMPL` Default Attachments Implementation class.
`protected static org.apache.commons.logging.Log` `log` The `Log` that this class uses for logging all messages.
`static java.lang.String` `MIME_APPLICATION_DIME` DIME parts defined for messages.
`static java.lang.String` `MIME_MULTIPART_RELATED` MIME parts defined for messages.
`static java.lang.String` `MIME_UNKNOWN` Look at the input stream to find the headers to decide the mime type.
`static java.lang.String` `REQUEST` Message is a request.
`static java.lang.String` `RESPONSE` Message is a a response.

Fields inherited from class javax.xml.soap.SOAPMessage
`CHARACTER_SET_ENCODING, WRITE_XML_DECLARATION`

Constructor Summary
`Message(java.lang.Object initialContents)` Construct a Message.
`Message(java.lang.Object initialContents, boolean bodyInStream)` Construct a Message, using the provided initialContents as the contents of the Message's SOAPPart.
`Message(java.lang.Object initialContents, boolean bodyInStream, MimeHeaders headers)` Construct a Message, using the provided initialContents as the contents of the Message's SOAPPart.
`Message(java.lang.Object initialContents, boolean bodyInStream, java.lang.String contentType, java.lang.String contentLocation)` Construct a Message, using the provided initialContents as the contents of the Message's SOAPPart.
`Message(java.lang.Object initialContents, MimeHeaders headers)` Construct a Message, using the provided initialContents as the contents of the Message's SOAPPart.

Method Summary
`void` `addAttachmentPart(AttachmentPart attachmentpart)` Adds the given `AttachmentPart` object to this `SOAPMessage` object.
`int` `countAttachments()` Gets a count of the number of attachments in this message.
`AttachmentPart` `createAttachmentPart()` Creates a new empty `AttachmentPart` object.
`void` `dispose()` Dispose of attachments.
`static java.lang.String` `getAttachmentImplClassName()` Returns the name of the class prividing Attachment Implementation.
`java.util.Iterator` `getAttachments()` Retrieves all the `AttachmentPart` objects that are part of this `SOAPMessage` object.
`java.util.Iterator` `getAttachments(MimeHeaders headers)` Retrieves all the `AttachmentPart` objects that have header entries that match the specified headers.
`Attachments` `getAttachmentsImpl()` Get the Attachments of this Message.
`java.lang.String` `getContentDescription()` Retrieves a description of this `SOAPMessage` object's content.
`long` `getContentLength()` Get the content length, including both soap and any attachments.
`java.lang.String` `getContentType(SOAPConstants sc)` Get the content type of the attachments.
`MessageContext` `getMessageContext()` Get the context associated with this message.
`java.lang.String` `getMessageType()` Get the message type.
`MimeHeaders` `getMimeHeaders()` Returns all the transport-specific MIME headers for this `SOAPMessage` object in a transport-independent fashion.
`java.lang.Object` `getProperty(java.lang.String property)` Retrieves value of the specified property.
`SOAPBody` `getSOAPBody()` Gets the SOAP Body contained in this `SOAPMessage` object.
`SOAPEnvelope` `getSOAPEnvelope()` Get this message's SOAPPart as a SOAPEnvelope.
`SOAPHeader` `getSOAPHeader()` Gets the SOAP Header contained in this `SOAPMessage` object.
`SOAPPart` `getSOAPPart()` Get this message's SOAPPart.
`byte[]` `getSOAPPartAsBytes()` Get a byte array representation of this message's SOAPPart.
`java.lang.String` `getSOAPPartAsString()` Get a string representation of this message's SOAPPart.
`void` `removeAllAttachments()` Removes all `AttachmentPart` objects that have been added to this `SOAPMessage` object.
`void` `saveChanges()` Updates this `SOAPMessage` object with all the changes that have been made to it.
`boolean` `saveRequired()` Indicates whether this `SOAPMessage` object has had the method `saveChanges` called on it.
`void` `setContentDescription(java.lang.String description)` Sets the description of this `SOAPMessage` object's content with the given description.
`void` `setMessageContext(MessageContext msgContext)` Set the context associated with this message.
`void` `setMessageType(java.lang.String messageType)` Set the message type.
`void` `setProperty(java.lang.String property, java.lang.Object value)` Associates the specified value with the specified property.
`void` `writeTo(java.io.OutputStream os)` Writes this `SOAPMessage` object to the given output stream.

Methods inherited from class javax.xml.soap.SOAPMessage
`createAttachmentPart, createAttachmentPart`

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

  The `Log` that this class uses for logging all messages.

### REQUEST

    public static final java.lang.String REQUEST

  Message is a request.

  See Also:
    Constant Field Values

### RESPONSE

    public static final java.lang.String RESPONSE

  Message is a a response.

  See Also:
    Constant Field Values

### MIME_MULTIPART_RELATED

    public static final java.lang.String MIME_MULTIPART_RELATED

  MIME parts defined for messages.

  See Also:
    Constant Field Values

### MIME_APPLICATION_DIME

    public static final java.lang.String MIME_APPLICATION_DIME

  DIME parts defined for messages.

  See Also:
    Constant Field Values

### CONTENT_TYPE_MTOM

    public static final java.lang.String CONTENT_TYPE_MTOM

  Content Type for MTOM/XOP

  See Also:
    Constant Field Values

### DEFAULT_ATTACHMNET_IMPL

    public static final java.lang.String DEFAULT_ATTACHMNET_IMPL

  Default Attachments Implementation class.

  See Also:
    Constant Field Values

### MIME_UNKNOWN

    public static final java.lang.String MIME_UNKNOWN

  Look at the input stream to find the headers to decide the mime type.

  See Also:
    Constant Field Values

Constructor Detail

### Message

    public Message(java.lang.Object initialContents,
                   boolean bodyInStream)

  Construct a Message, using the provided initialContents as the contents of the Message's SOAPPart.

  Eventually, genericize this to return the RootPart instead, which will have some kind of EnvelopeFactory to enable support for things other than SOAP. But that all will come later, with lots of additional refactoring.

Parameters:
  `initialContents` - may be String, byte[], InputStream, SOAPEnvelope, or AxisFault.
  `bodyInStream` - is true if initialContents is an InputStream containing just the SOAP body (no SOAP-ENV).

### Message

    public Message(java.lang.Object initialContents,
                   boolean bodyInStream,
                   MimeHeaders headers)

  Construct a Message, using the provided initialContents as the contents of the Message's SOAPPart.

  Eventually, genericize this to return the RootPart instead, which will have some kind of EnvelopeFactory to enable support for things other than SOAP. But that all will come later, with lots of additional refactoring.

Parameters:
  `initialContents` - may be String, byte[], InputStream, SOAPEnvelope, or AxisFault.
  `bodyInStream` - is true if initialContents is an InputStream containing just the SOAP body (no SOAP-ENV).
  `headers` - Mime Headers.

### Message

    public Message(java.lang.Object initialContents,
                   MimeHeaders headers)

  Construct a Message, using the provided initialContents as the contents of the Message's SOAPPart.

  Eventually, genericize this to return the RootPart instead, which will have some kind of EnvelopeFactory to enable support for things other than SOAP. But that all will come later, with lots of additional refactoring.

Parameters:
  `initialContents` - may be String, byte[], InputStream, SOAPEnvelope, or AxisFault.
  `headers` - Mime Headers.

### Message

    public Message(java.lang.Object initialContents,
                   boolean bodyInStream,
                   java.lang.String contentType,
                   java.lang.String contentLocation)

  Construct a Message, using the provided initialContents as the contents of the Message's SOAPPart.

  Eventually, genericize this to return the RootPart instead, which will have some kind of EnvelopeFactory to enable support for things other than SOAP. But that all will come later, with lots of additional refactoring.

Parameters:
  `initialContents` - may be String, byte[], InputStream, SOAPEnvelope, or AxisFault
  `bodyInStream` - is true if initialContents is an InputStream containing just the SOAP body (no SOAP-ENV)
  `contentType` - this if the contentType has been already determined (as in the case of servlets)
  `contentLocation` - the location of the content

### Message

    public Message(java.lang.Object initialContents)

  Construct a Message. An overload of Message(Object, boolean), defaulting bodyInStream to false.

Parameters:
  `initialContents` - may be String, byte[], InputStream, SOAPEnvelope, or AxisFault

Method Detail

### getAttachmentImplClassName

    public static java.lang.String getAttachmentImplClassName()

  Returns the name of the class prividing Attachment Implementation.

  Returns:
    class name

### getMessageType

    public java.lang.String getMessageType()

  Get the message type.

  Returns:
    the message type `String`

### setMessageType

    public void setMessageType(java.lang.String messageType)

  Set the message type.

  Parameters:
    `messageType` - the message type `String`

### getMessageContext

    public MessageContext getMessageContext()

  Get the context associated with this message.

  Returns:
    the message context for this message

### setMessageContext

    public void setMessageContext(MessageContext msgContext)

  Set the context associated with this message.

  Parameters:
    `msgContext` - the message context for this message

### getSOAPPart

    public SOAPPart getSOAPPart()

  Get this message's SOAPPart.

  Eventually, this should be generalized beyond just SOAP, but it's hard to know how to do that without necessitating a lot of casts in client code. Refactoring keeps getting easier anyhow.

  Specified by:
    `getSOAPPart` in class `SOAPMessage`
  Returns:
    the soap part of this message

### getSOAPPartAsString

    public java.lang.String getSOAPPartAsString()
                                         throws AxisFault

  Get a string representation of this message's SOAPPart.

  Returns:
    the soap part of this message as a `String`
  Throws:
    `AxisFault` - if the stringification failed

### getSOAPPartAsBytes

    public byte[] getSOAPPartAsBytes()
                              throws AxisFault

  Get a byte array representation of this message's SOAPPart.

  Returns:
    the soap part of this message as a `byte[]`
  Throws:
    `AxisFault` - if creating the byte[] failed

### getSOAPEnvelope

    public SOAPEnvelope getSOAPEnvelope()
                                 throws AxisFault

  Get this message's SOAPPart as a SOAPEnvelope.

  Returns:
    a SOAPEnvelope containing this message's SOAPPart
  Throws:
    `AxisFault` - if this failed

### getAttachmentsImpl

    public Attachments getAttachmentsImpl()

  Get the Attachments of this Message.

  If this returns null, then NO ATTACHMENT SUPPORT EXISTS in this configuration of Axis, and no attachment operations may be performed.

  Returns:
    the `Attachments` if attachments are supported, null otherwise

### getContentType

    public java.lang.String getContentType(SOAPConstants sc)
                                    throws AxisFault

  Get the content type of the attachments.

  Parameters:
    `sc` - provides the default content type
  Returns:
    a `String` giving the content type of the attachment
  Throws:
    `AxisFault` - if there was an error deducing the content type from this message

### getContentLength

    public long getContentLength()
                          throws AxisFault

  Get the content length, including both soap and any attachments.

  Returns:
    the total length of this message in bytes
  Throws:
    `AxisFault` - if there was a problem that prevented the length being calculated

### writeTo

    public void writeTo(java.io.OutputStream os)
                 throws SOAPException,
                        java.io.IOException

  Writes this `SOAPMessage` object to the given output stream. The externalization format is as defined by the SOAP 1.1 with Attachments specification.

  If there are no attachments, just an XML stream is written out. For those messages that have attachments, `writeTo` writes a MIME-encoded byte stream.

  Specified by:
    `writeTo` in class `SOAPMessage`
  Parameters:
    `os` - the `OutputStream` object to which this `SOAPMessage` object will be written
  Throws:
    `SOAPException` - if there was a problem in externalizing this SOAP message
    `java.io.IOException` - if an I/O error occurs

### getSOAPBody

    public SOAPBody getSOAPBody()
                         throws SOAPException

  Description copied from class: `SOAPMessage`
  Gets the SOAP Body contained in this `SOAPMessage` object.

  Overrides:
    `getSOAPBody` in class `SOAPMessage`
  Returns:
    the `SOAPBody` object contained by this `SOAPMessage` object
  Throws:
    `SOAPException` - if the SOAP Body does not exist or cannot be retrieved

### getSOAPHeader

    public SOAPHeader getSOAPHeader()
                             throws SOAPException

  Description copied from class: `SOAPMessage`
  Gets the SOAP Header contained in this `SOAPMessage` object.

  Overrides:
    `getSOAPHeader` in class `SOAPMessage`
  Returns:
    the `SOAPHeader` object contained by this `SOAPMessage` object
  Throws:
    `SOAPException` - if the SOAP Header does not exist or cannot be retrieved

### setProperty

    public void setProperty(java.lang.String property,
                            java.lang.Object value)
                     throws SOAPException

  Description copied from class: `SOAPMessage`
  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.

  Overrides:
    `setProperty` in class `SOAPMessage`
  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

### getProperty

    public java.lang.Object getProperty(java.lang.String property)
                                 throws SOAPException

  Description copied from class: `SOAPMessage`
  Retrieves value of the specified property.

  Overrides:
    `getProperty` in class `SOAPMessage`
  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

### getContentDescription

    public java.lang.String getContentDescription()

  Retrieves a description of this `SOAPMessage` object's content.

  Specified by:
    `getContentDescription` in class `SOAPMessage`
  Returns:
    a `String` describing the content of this message or `null` if no description has been set
  See Also:
    `setContentDescription(java.lang.String)`

### setContentDescription

    public void setContentDescription(java.lang.String description)

  Sets the description of this `SOAPMessage` object's content with the given description.

  Specified by:
    `setContentDescription` in class `SOAPMessage`
  Parameters:
    `description` - a `String` describing the content of this message
  See Also:
    `getContentDescription()`

### saveChanges

    public void saveChanges()
                     throws SOAPException

  Updates this `SOAPMessage` object with all the changes that have been made to it. This method is called automatically when a message is sent or written to by the methods `ProviderConnection.send`, `SOAPConnection.call`, or `SOAPMessage.writeTo`. However, if changes are made to a message that was received or to one that has already been sent, the method `saveChanges` needs to be called explicitly in order to save the changes. The method `saveChanges` also generates any changes that can be read back (for example, a MessageId in profiles that support a message id). All MIME headers in a message that is created for sending purposes are guaranteed to have valid values only after `saveChanges` has been called.

  In addition, this method marks the point at which the data from all constituent `AttachmentPart` objects are pulled into the message.

  Specified by:
    `saveChanges` in class `SOAPMessage`
  Throws:
    `SOAPException` - if there was a problem saving changes to this message.

### saveRequired

    public boolean saveRequired()

  Indicates whether this `SOAPMessage` object has had the method `saveChanges` called on it.

  Specified by:
    `saveRequired` in class `SOAPMessage`
  Returns:
    `true` if `saveChanges` has been called on this message at least once; `false` otherwise.

### getMimeHeaders

    public MimeHeaders getMimeHeaders()

  Returns all the transport-specific MIME headers for this `SOAPMessage` object in a transport-independent fashion.

  Specified by:
    `getMimeHeaders` in class `SOAPMessage`
  Returns:
    a `MimeHeaders` object containing the `MimeHeader` objects

### removeAllAttachments

    public void removeAllAttachments()

  Removes all `AttachmentPart` objects that have been added to this `SOAPMessage` object.

  This method does not touch the SOAP part.

  Specified by:
    `removeAllAttachments` in class `SOAPMessage`

### countAttachments

    public int countAttachments()

  Gets a count of the number of attachments in this message. This count does not include the SOAP part.

  Specified by:
    `countAttachments` in class `SOAPMessage`
  Returns:
    the number of `AttachmentPart` objects that are part of this `SOAPMessage` object

### getAttachments

    public java.util.Iterator getAttachments()

  Retrieves all the `AttachmentPart` objects that are part of this `SOAPMessage` object.

  Specified by:
    `getAttachments` in class `SOAPMessage`
  Returns:
    an iterator over all the attachments in this message

### getAttachments

    public java.util.Iterator getAttachments(MimeHeaders headers)

  Retrieves all the `AttachmentPart` objects that have header entries that match the specified headers. Note that a returned attachment could have headers in addition to those specified.

  Specified by:
    `getAttachments` in class `SOAPMessage`
  Parameters:
    `headers` - a `MimeHeaders` object containing the MIME headers for which to search
  Returns:
    an iterator over all attachments that have a header that matches one of the given headers

### addAttachmentPart

    public void addAttachmentPart(AttachmentPart attachmentpart)

  Adds the given `AttachmentPart` object to this `SOAPMessage` object. An `AttachmentPart` object must be created before it can be added to a message.

  Specified by:
    `addAttachmentPart` in class `SOAPMessage`
  Parameters:
    `attachmentpart` - an `AttachmentPart` object that is to become part of this `SOAPMessage` object
  Throws:
    `java.lang.IllegalArgumentException`

### createAttachmentPart

    public AttachmentPart createAttachmentPart()

  Creates a new empty `AttachmentPart` object. Note that the method `addAttachmentPart` must be called with this new `AttachmentPart` object as the parameter in order for it to become an attachment to this `SOAPMessage` object.

  Specified by:
    `createAttachmentPart` in class `SOAPMessage`
  Returns:
    a new `AttachmentPart` object that can be populated and added to this `SOAPMessage` object

### dispose

    public void dispose()

  Dispose of attachments.

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