diff -r 000000000000 -r 373ffda63c9a src/share/jaxws_classes/javax/xml/soap/MessageFactory.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/jaxws_classes/javax/xml/soap/MessageFactory.java Wed Apr 27 01:27:09 2016 +0800
@@ -0,0 +1,200 @@
+/*
+ * Copyright (c) 2004, 2013, 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;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * A factory for creating SOAPMessage
objects.
+ *
+ * A SAAJ client can create a MessageFactory
object
+ * using the method newInstance
, as shown in the following
+ * lines of code.
+ *
+ * MessageFactory mf = MessageFactory.newInstance(); + * MessageFactory mf12 = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL); + *+ *
+ * All MessageFactory
objects, regardless of how they are
+ * created, will produce SOAPMessage
objects that
+ * have the following elements by default:
+ *
SOAPPart
object
+ * SOAPEnvelope
object
+ * SOAPBody
object
+ * SOAPHeader
object
+ * 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()
createMessage(MimeHeaders, java.io.InputStream)
-- message has
+ * content from the InputStream
object and headers from the
+ * MimeHeaders
object MessageFactory
object that is an instance
+ * of the default implementation (SOAP 1.1),
+ *
+ * This method uses the following ordered lookup procedure to determine the MessageFactory implementation class to load:
+ * MessageFactory
+ *
+ * @exception SOAPException if there was an error in creating the
+ * default implementation of the
+ * MessageFactory
.
+ * @see SAAJMetaFactory
+ */
+
+ public static MessageFactory newInstance() throws SOAPException {
+
+
+ try {
+ MessageFactory factory = (MessageFactory) FactoryFinder.find(
+ MESSAGE_FACTORY_PROPERTY,
+ DEFAULT_MESSAGE_FACTORY,
+ false);
+
+ if (factory != null) {
+ return factory;
+ }
+ return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
+
+ } catch (Exception ex) {
+ throw new SOAPException(
+ "Unable to create message factory for SOAP: "
+ +ex.getMessage());
+ }
+
+ }
+
+ /**
+ * Creates a new MessageFactory
object that is an instance
+ * of the specified implementation. May be a dynamic message factory,
+ * a SOAP 1.1 message factory, or a SOAP 1.2 message factory. A dynamic
+ * message factory creates messages based on the MIME headers specified
+ * as arguments to the createMessage
method.
+ *
+ * This method uses the SAAJMetaFactory to locate the implementation class
+ * and create the MessageFactory instance.
+ *
+ * @return a new instance of a MessageFactory
+ *
+ * @param protocol a string constant representing the class of the
+ * specified message factory implementation. May be
+ * either DYNAMIC_SOAP_PROTOCOL
,
+ * DEFAULT_SOAP_PROTOCOL
(which is the same
+ * as) SOAP_1_1_PROTOCOL
, or
+ * SOAP_1_2_PROTOCOL
.
+ *
+ * @exception SOAPException if there was an error in creating the
+ * specified implementation of MessageFactory
.
+ * @see SAAJMetaFactory
+ * @since SAAJ 1.3
+ */
+ public static MessageFactory newInstance(String protocol) throws SOAPException {
+ return SAAJMetaFactory.getInstance().newMessageFactory(protocol);
+ }
+
+ /**
+ * 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.
+ *
+ * @return a new SOAPMessage
object
+ * @exception SOAPException if a SOAP error occurs
+ * @exception UnsupportedOperationException if the protocol of this
+ * MessageFactory
instance is DYNAMIC_SOAP_PROTOCOL
+ */
+ public abstract SOAPMessage createMessage()
+ throws SOAPException;
+
+ /**
+ * Internalizes the contents of the given InputStream
object into a
+ * new SOAPMessage
object and returns the SOAPMessage
+ * object.
+ *
+ * @param in the InputStream
object that contains the data
+ * for a message
+ * @param headers the transport-specific headers passed to the
+ * message in a transport-independent fashion for creation of the
+ * message
+ * @return a new SOAPMessage
object containing the data from
+ * the given InputStream
object
+ *
+ * @exception IOException if there is a problem in reading data from
+ * the input stream
+ *
+ * @exception SOAPException may be thrown if the message is invalid
+ *
+ * @exception IllegalArgumentException if the MessageFactory
+ * requires one or more MIME headers to be present in the
+ * headers
parameter and they are missing.
+ * MessageFactory
implementations for
+ * SOAP_1_1_PROTOCOL
or
+ * SOAP_1_2_PROTOCOL
must not throw
+ * IllegalArgumentException
for this reason.
+ */
+ public abstract SOAPMessage createMessage(MimeHeaders headers,
+ InputStream in)
+ throws IOException, SOAPException;
+}