Package org.apache.xmlbeans.impl.soap

## Class MessageFactory

- java.lang.Object
- - org.apache.xmlbeans.impl.soap.MessageFactory

-     public abstract class MessageFactory
      extends Object

  A factory for creating `SOAPMessage` objects.

  A JAXM client performs the following steps to create a message.

  - Creates a `MessageFactory` object from a `ProviderConnection` object (`con` in the following line of code). The `String` passed to the `createMessageFactory` method is the name of of a messaging profile, which must be the URL for the schema.

              MessageFactory mf = con.createMessageFactory(schemaURL);

  - Calls the method `createMessage` on the `MessageFactory` object. All messages produced by this `MessageFactory` object will have the header information appropriate for the messaging profile that was specified when the `MessageFactory` object was created.

              SOAPMessage m = mf.createMessage();

  It is also possible to create a `MessageFactory` object using the method `newInstance`, as shown in the following line of code.

            MessageFactory mf = MessageFactory.newInstance();

  A standalone client (a client that is not running in a container) can use the `newInstance` method to create a `MessageFactory` object.

  All `MessageFactory` objects, regardless of how they are created, will produce `SOAPMessage` objects that have the following elements by default:

  - A `SOAPPart` object
  - A `SOAPEnvelope` object
  - A `SOAPBody` object
  - A `SOAPHeader` object
  If a `MessageFactory` object was created using a `ProviderConnection` object, which means that it was initialized with a specified profile, it will produce messages that also come prepopulated with additional entries in the `SOAPHeader` object and the `SOAPBody` object. The content of a new `SOAPMessage` object depends on which of the two `MessageFactory` methods is used to create it.
  - `createMessage()` -- message has no content
    This is the method clients would normally use to create a request message.
  - `createMessage(MimeHeaders, java.io.InputStream)` -- message has content from the `InputStream` object and headers from the `MimeHeaders` object
    This method can be used internally by a service implementation to create a message that is a response to a request.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `MessageFactory()` | Create a new MessageFactory.

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract SOAPMessage` | `createMessage()` | Creates a new `SOAPMessage` object with the default `SOAPPart`, `SOAPEnvelope`, `SOAPBody`, and `SOAPHeader` objects.
    `abstract SOAPMessage` | `createMessage​(MimeHeaders mimeheaders, InputStream inputstream)` | Internalizes the contents of the given `InputStream` object into a new `SOAPMessage` object and returns the `SOAPMessage` object.
    `static MessageFactory` | `newInstance()` | Creates a new `MessageFactory` object that is an instance of the default implementation.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### MessageFactory

          public MessageFactory()

      Create a new MessageFactory.

  - ### Method Detail

    - #### newInstance

          public static MessageFactory newInstance()
                                            throws SOAPException

      Creates a new `MessageFactory` object that is an instance of the default implementation.
      Returns:
        a new `MessageFactory` object
      Throws:
        `SOAPException` - if there was an error in creating the default implementation of the `MessageFactory`

    - #### createMessage

          public abstract SOAPMessage createMessage()
                                             throws SOAPException

      Creates a new `SOAPMessage` object with the default `SOAPPart`, `SOAPEnvelope`, `SOAPBody`, and `SOAPHeader` objects. Profile-specific message factories can choose to prepopulate the `SOAPMessage` object with profile-specific headers.

      Content can be added to this message's `SOAPPart` object, and the message can be sent "as is" when a message containing only a SOAP part is sufficient. Otherwise, the `SOAPMessage` object needs to create one or more `AttachmentPart` objects and add them to itself. Any content that is not in XML format must be in an `AttachmentPart` object.

      Returns:
        a new `SOAPMessage` object
      Throws:
        `SOAPException` - if a SOAP error occurs

    - #### createMessage

          public abstract SOAPMessage createMessage​(MimeHeaders mimeheaders,
                                                    InputStream inputstream)
                                             throws IOException,
                                                    SOAPException

      Internalizes the contents of the given `InputStream` object into a new `SOAPMessage` object and returns the `SOAPMessage` object.
      Parameters:
        `mimeheaders` - the transport-specific headers passed to the message in a transport-independent fashion for creation of the message
        `inputstream` - the `InputStream` object that contains the data for a message
      Returns:
        a new `SOAPMessage` object containing the data from the given `InputStream` object
      Throws:
        `IOException` - if there is a problem in reading data from the input stream
        `SOAPException` - if the message is invalid