Hello,

    There are several factory methods added into the Envelope.java.

    Patch file name: patch_Envelope.txt.
    Author: Jerry Boetje
    Content:
------------------------------------------------------------------------
---
/net/bigbang/vol/vol1/homes/yzhao/xml-soap/java/src/org/apache/soap/Envelope
.java
Sun Jun 17 02:59:14 2001
+++ Envelope.java       Mon Jun 18 15:23:30 2001
@@ -1,341 +1,394 @@
-/*
- * The Apache Software License, Version 1.1
- *
- *
- * Copyright (c) 2000 The Apache Software Foundation.  All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- *    if any, must include the following acknowledgment:
- *       "This product includes software developed by the
- *        Apache Software Foundation (http://www.apache.org/)."
- *    Alternately, this acknowledgment may appear in the software itself,
- *    if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "SOAP" and "Apache Software Foundation" must
- *    not be used to endorse or promote products derived from this
- *    software without prior written permission. For written
- *    permission, please contact [EMAIL PROTECTED]
- *
- * 5. Products derived from this software may not be called "Apache",
- *    nor may "Apache" appear in their name, without prior written
- *    permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 2000, International
- * Business Machines, Inc., http://www.apache.org.  For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.soap;
-
-import java.io.*;
-import java.util.*;
-import org.w3c.dom.*;
-import org.apache.soap.util.*;
-import org.apache.soap.util.xml.*;
-import org.apache.soap.encoding.*;
-import org.apache.soap.rpc.SOAPContext;
-
-/**
- * An <code>Envelope</code> object represents the contents and semantics
- * of an <code>&lt;SOAP-ENV:Envelope&gt;</code> element.
- *
- * @author Matthew J. Duftler ([EMAIL PROTECTED])
- * @author Sanjiva Weerawarana ([EMAIL PROTECTED])
- */
-public class Envelope
-{
-  private Header           header          = null;
-  private Body             body            = null;
-  private Vector           envelopeEntries = null;
-  private AttributeHandler attrHandler     = new AttributeHandler();
-
-  public Envelope()
-  {
-    // Declare the "SOAP-ENV" namespace.
-    declareNamespace(Constants.NS_PRE_SOAP_ENV,
-                     Constants.NS_URI_SOAP_ENV);
-
-    // Declare the "xsi" namespace.
-    declareNamespace(Constants.NS_PRE_SCHEMA_XSI,
-                     Constants.NS_URI_CURRENT_SCHEMA_XSI);
-
-    // Declare the "xsd" namespace.
-    declareNamespace(Constants.NS_PRE_SCHEMA_XSD,
-                     Constants.NS_URI_CURRENT_SCHEMA_XSD);
-  }
-
-  public void setAttribute(QName attrQName, String value)
-  {
-    attrHandler.setAttribute(attrQName, value);
-  }
-
-  public String getAttribute(QName attrQName)
-  {
-    return attrHandler.getAttribute(attrQName);
-  }
-
-  public void removeAttribute(QName attrQName)
-  {
-    attrHandler.removeAttribute(attrQName);
-  }
-
-  public void declareNamespace(String nsPrefix, String namespaceURI)
-  {
-    attrHandler.declareNamespace(nsPrefix, namespaceURI);
-  }
-
-  public void setHeader(Header header)
-  {
-    this.header = header;
-  }
-
-  public Header getHeader()
-  {
-    return header;
-  }
-
-  public void setBody(Body body)
-  {
-    this.body = body;
-  }
-
-  public Body getBody()
-  {
-    return body;
-  }
-
-  public void setEnvelopeEntries(Vector envelopeEntries)
-  {
-    this.envelopeEntries = envelopeEntries;
-  }
-
-  public Vector getEnvelopeEntries()
-  {
-    return envelopeEntries;
-  }
-
-  /**
-   * Supported for backward compatibility.
-   *
-   * @see #marshall(java.io.Writer,
org.apache.soap.util.xml.XMLJavaMappingRegistry,
org.apache.soap.rpc.SOAPContext)
-   */
-  public void marshall(Writer sink, XMLJavaMappingRegistry xjmr)
-    throws IllegalArgumentException, IOException {
-    marshall(sink, xjmr, new SOAPContext());
-  }
-
-  public void marshall(Writer sink, XMLJavaMappingRegistry xjmr,
-                       SOAPContext ctx)
-    throws IllegalArgumentException, IOException
-  {
-    // Initialize the namespace stack.
-    NSStack nsStack = new NSStack();
-
-    attrHandler.populateNSStack(nsStack);
-
-    Header header          = getHeader();
-    Body   body            = getBody();
-    Vector envelopeEntries = getEnvelopeEntries();
-    String declEncStyle    = getAttribute(new QName(
-      Constants.NS_URI_SOAP_ENV, Constants.ATTR_ENCODING_STYLE));
-
-    // Determine the prefix associated with the NS_URI_SOAP_ENV namespace
URI.
-    String soapEnvNSPrefix = attrHandler.getUniquePrefixFromURI(
-      Constants.NS_URI_SOAP_ENV, Constants.NS_PRE_SOAP_ENV, nsStack);
-
-    // Write XML declaration
-    sink.write(Constants.XML_DECL);
-
-    sink.write('<' + soapEnvNSPrefix + ':' + Constants.ELEM_ENVELOPE);
-
-    // Serialize any envelope attributes.
-    attrHandler.marshall(sink, ctx);
-
-    sink.write('>' + StringUtils.lineSeparator);
-
-    // If there is a header, serialize it.
-    if (header != null)
-    {
-      header.marshall(sink, nsStack, xjmr, ctx);
-    }
-
-    // There must always be a <SOAP-ENV:Body>.
-    if (body != null)
-    {
-      body.marshall(declEncStyle, sink, nsStack, xjmr, ctx);
-    }
-    else
-    {
-      throw new IllegalArgumentException("An '" +
Constants.Q_ELEM_ENVELOPE +
-                                         "' must contain a: '" +
-                                         Constants.Q_ELEM_BODY + "'.");
-    }
-
-    // Serialize any envelope entries (in addition to <SOAP-ENV:Body>).
-    if (envelopeEntries != null)
-    {
-      for (Enumeration e = envelopeEntries.elements();
e.hasMoreElements();)
-      {
-        Element envelopeEntryEl = (Element)e.nextElement();
-
-        Utils.marshallNode(envelopeEntryEl, sink);
-
-        sink.write(StringUtils.lineSeparator);
-      }
-    }
-
-    sink.write("</" + soapEnvNSPrefix + ':' + Constants.ELEM_ENVELOPE +
-               '>' + StringUtils.lineSeparator);
-  }
-
-  /**
-   * Supported for backward compatibility.
-   *
-   * @see #unmarshall(org.w3c.dom.Node, org.apache.soap.rpc.SOAPContext)
-   */
-  public static Envelope unmarshall(Node src)
-    throws IllegalArgumentException {
-      return unmarshall(src, new SOAPContext());
-  }
-
-  public static Envelope unmarshall(Node src, SOAPContext ctx)
-    throws IllegalArgumentException
-  {
-    Element  root = (Element)src;
-    Envelope env  = new Envelope();
-
-    if (Constants.Q_ELEM_ENVELOPE.matches(root))
-    {
-      // Deserialize any envelope attributes.
-      env.attrHandler = AttributeHandler.unmarshall(root, ctx);
-
-      // Examine the subelements of the envelope.
-      Element headerEl = null;
-      Element bodyEl   = null;
-      Element tempEl   = DOMUtils.getFirstChildElement(root);
-
-      if (Constants.Q_ELEM_HEADER.matches(tempEl))
-      {
-        headerEl = tempEl;
-        tempEl = DOMUtils.getNextSiblingElement(tempEl);
-      }
-
-      if (Constants.Q_ELEM_BODY.matches(tempEl))
-      {
-        bodyEl = tempEl;
-        tempEl = DOMUtils.getNextSiblingElement(tempEl);
-      }
-
-      // Deserialize any header entries.
-      if (headerEl != null)
-      {
-        Header header = Header.unmarshall(headerEl, ctx);
-
-        env.setHeader(header);
-      }
-
-      // Deserialize any body entries.
-      if (bodyEl != null)
-      {
-        Body body = Body.unmarshall(bodyEl, ctx);
-
-        env.setBody(body);
-      }
-      else
-      {
-        throw new IllegalArgumentException("An '" +
Constants.Q_ELEM_ENVELOPE +
-                                           "' element must contain a: '"
+
-                                           Constants.Q_ELEM_BODY +
-                                           "' element.");
-      }
-
-      // Deserialize any envelope entries (in addition to
<SOAP-ENV:Body>).
-      if (tempEl != null)
-      {
-        Vector envelopeEntries = new Vector();
-
-        while (tempEl != null)
-        {
-          envelopeEntries.addElement(tempEl);
-          tempEl = DOMUtils.getNextSiblingElement(tempEl);
-        }
-
-        env.setEnvelopeEntries(envelopeEntries);
-      }
-    }
-    else
-    {
-      String localName = root.getLocalName();
-
-      if (localName != null && localName.equals(Constants.ELEM_ENVELOPE))
-      {
-        throw new
IllegalArgumentException(Constants.ERR_MSG_VERSION_MISMATCH);
-      }
-      else
-      {
-        throw new IllegalArgumentException("Root element of a SOAP
message " +
-                                           "must be: '" +
-                                           Constants.Q_ELEM_ENVELOPE +
"'.");
-      }
-    }
-
-    return env;
-  }
-
-  public String toString()
-  {
-    StringWriter sw = new StringWriter();
-    PrintWriter pw = new PrintWriter(sw);
-
-    pw.print("[Attributes=" + attrHandler + "] " +
-             "[Header=" + header + "] " +
-             "[Body=" + body + "] " +
-             "[EnvelopeEntries=");
-
-    if (envelopeEntries != null)
-    {
-      pw.println();
-
-      for (int i = 0; i < envelopeEntries.size(); i++)
-      {
-        pw.println("[(" + i + ")=" +
-
DOM2Writer.nodeToString((Element)envelopeEntries.elementAt(i)) +
-             "]");
-      }
-    }
-
-    pw.print("]");
-
-    return sw.toString();
-  }
-}
+/*

+ * The Apache Software License, Version 1.1

+ *

+ *

+ * Copyright (c) 2000 The Apache Software Foundation.  All rights

+ * reserved.

+ *

+ * Redistribution and use in source and binary forms, with or without

+ * modification, are permitted provided that the following conditions

+ * are met:

+ *

+ * 1. Redistributions of source code must retain the above copyright

+ *    notice, this list of conditions and the following disclaimer.

+ *

+ * 2. Redistributions in binary form must reproduce the above copyright

+ *    notice, this list of conditions and the following disclaimer in

+ *    the documentation and/or other materials provided with the

+ *    distribution.

+ *

+ * 3. The end-user documentation included with the redistribution,

+ *    if any, must include the following acknowledgment:

+ *       "This product includes software developed by the

+ *        Apache Software Foundation (http://www.apache.org/)."

+ *    Alternately, this acknowledgment may appear in the software itself,

+ *    if and wherever such third-party acknowledgments normally appear.

+ *

+ * 4. The names "SOAP" and "Apache Software Foundation" must

+ *    not be used to endorse or promote products derived from this

+ *    software without prior written permission. For written

+ *    permission, please contact [EMAIL PROTECTED]

+ *

+ * 5. Products derived from this software may not be called "Apache",

+ *    nor may "Apache" appear in their name, without prior written

+ *    permission of the Apache Software Foundation.

+ *

+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED

+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES

+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR

+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF

+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND

+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

+ * SUCH DAMAGE.

+ * ====================================================================

+ *

+ * This software consists of voluntary contributions made by many

+ * individuals on behalf of the Apache Software Foundation and was

+ * originally based on software copyright (c) 2000, International

+ * Business Machines, Inc., http://www.apache.org.  For more

+ * information on the Apache Software Foundation, please see

+ * <http://www.apache.org/>.

+ */

+

+package org.apache.soap;

+

+import java.io.*;

+import java.util.*;

+import org.w3c.dom.*;

+import org.apache.soap.util.*;

+import org.apache.soap.util.xml.*;

+import org.apache.soap.encoding.*;

+import org.apache.soap.rpc.SOAPContext;

+

+/**

+ * An <code>Envelope</code> object represents the contents and semantics

+ * of an <code>&lt;SOAP-ENV:Envelope&gt;</code> element.

+ *

+ * @author Matthew J. Duftler ([EMAIL PROTECTED])

+ * @author Sanjiva Weerawarana ([EMAIL PROTECTED])

+ */

+public class Envelope

+{

+  private Header           header          = null;

+  private Body             body            = null;

+  private Vector           envelopeEntries = null;

+  private AttributeHandler attrHandler     = new AttributeHandler();

+

+  public Envelope()

+  {

+    // Declare the "SOAP-ENV" namespace.

+    declareNamespace(Constants.NS_PRE_SOAP_ENV,

+                     Constants.NS_URI_SOAP_ENV);

+

+    // Declare the "xsi" namespace.

+    declareNamespace(Constants.NS_PRE_SCHEMA_XSI,

+                     Constants.NS_URI_CURRENT_SCHEMA_XSI);

+

+    // Declare the "xsd" namespace.

+    declareNamespace(Constants.NS_PRE_SCHEMA_XSD,

+                     Constants.NS_URI_CURRENT_SCHEMA_XSD);

+  }

+

+  public void setAttribute(QName attrQName, String value)

+  {

+    attrHandler.setAttribute(attrQName, value);

+  }

+

+  public String getAttribute(QName attrQName)

+  {

+    return attrHandler.getAttribute(attrQName);

+  }

+

+  public void removeAttribute(QName attrQName)

+  {

+    attrHandler.removeAttribute(attrQName);

+  }

+

+  public void declareNamespace(String nsPrefix, String namespaceURI)

+  {

+    attrHandler.declareNamespace(nsPrefix, namespaceURI);

+  }

+

+  public void setHeader(Header header)

+  {

+    this.header = header;

+  }

+

+  public Header getHeader()

+  {

+    return header;

+  }

+

+  public void setBody(Body body)

+  {

+    this.body = body;

+  }

+

+  public Body getBody()

+  {

+    return body;

+  }

+

+  public void setEnvelopeEntries(Vector envelopeEntries)

+  {

+    this.envelopeEntries = envelopeEntries;

+  }

+

+  public Vector getEnvelopeEntries()

+  {

+    return envelopeEntries;

+  }

+

+  /**

+   * Supported for backward compatibility.

+   *

+   * @see #marshall(java.io.Writer,
org.apache.soap.util.xml.XMLJavaMappingRegistry,
org.apache.soap.rpc.SOAPContext)

+   */

+  public void marshall(Writer sink, XMLJavaMappingRegistry xjmr)

+    throws IllegalArgumentException, IOException {

+    marshall(sink, xjmr, new SOAPContext());

+  }

+

+  public void marshall(Writer sink, XMLJavaMappingRegistry xjmr,

+                       SOAPContext ctx)

+    throws IllegalArgumentException, IOException

+  {

+    // Initialize the namespace stack.

+    NSStack nsStack = new NSStack();

+

+    attrHandler.populateNSStack(nsStack);

+

+    Header header          = getHeader();

+    Body   body            = getBody();

+    Vector envelopeEntries = getEnvelopeEntries();

+    String declEncStyle    = getAttribute(new QName(

+      Constants.NS_URI_SOAP_ENV, Constants.ATTR_ENCODING_STYLE));

+

+    // Determine the prefix associated with the NS_URI_SOAP_ENV namespace
URI.

+    String soapEnvNSPrefix = attrHandler.getUniquePrefixFromURI(

+      Constants.NS_URI_SOAP_ENV, Constants.NS_PRE_SOAP_ENV, nsStack);

+

+    // Write XML declaration

+    sink.write(Constants.XML_DECL);

+

+    sink.write('<' + soapEnvNSPrefix + ':' + Constants.ELEM_ENVELOPE);

+

+    // Serialize any envelope attributes.

+    attrHandler.marshall(sink, ctx);

+

+    sink.write('>' + StringUtils.lineSeparator);

+

+    // If there is a header, serialize it.

+    if (header != null)

+    {

+      header.marshall(sink, nsStack, xjmr, ctx);

+    }

+

+    // There must always be a <SOAP-ENV:Body>.

+    if (body != null)

+    {

+      body.marshall(declEncStyle, sink, nsStack, xjmr, ctx);

+    }

+    else

+    {

+      throw new IllegalArgumentException("An '" +
Constants.Q_ELEM_ENVELOPE +

+                                         "' must contain a: '" +

+                                         Constants.Q_ELEM_BODY + "'.");

+    }

+

+    // Serialize any envelope entries (in addition to <SOAP-ENV:Body>).

+    if (envelopeEntries != null)

+    {

+      for (Enumeration e = envelopeEntries.elements();
e.hasMoreElements();)

+      {

+        Element envelopeEntryEl = (Element)e.nextElement();

+

+        Utils.marshallNode(envelopeEntryEl, sink);

+

+        sink.write(StringUtils.lineSeparator);

+      }

+    }

+

+    sink.write("</" + soapEnvNSPrefix + ':' + Constants.ELEM_ENVELOPE +

+               '>' + StringUtils.lineSeparator);

+  }

+

+  /**

+   * Factory method for producing the AttributeHandler part of a SOAP
envekope.

+   * May be overridden by subclasses of Envelope that desire to have

+   * specialized types of AttributeHandler.

+   * @return Returns a new instance of an AttributeHandler or a

+   * specialized subclass of AttributeHander. The default

+   * returns an instance of AttributeHandler.

+   */

+  public AttributeHandler createAttributeHandler() {

+      return new AttributeHandler();

+  }

+

+  /**

+   * Factory method for producing the Body part of a SOAP envelope.

+   * May be overridden by subclasses of Envelope that desire to have

+   * specialized types of Body.

+   * @return Returns an instance of Body or a specialized subclass

+   * of Body. The default returns an instance of Body.

+   */

+  public Body createBody() {

+      return new Body();

+  }

+

+  /**

+   * Factory method for producing the Header part of a SOAP envelope.

+   * May be overridden by subclasses of Envelope that desire to have

+   * specialized types of Header.

+   * @return Returns an instance of Header or a specialized subclass of

+   * Header. The default returns an instance of Header.

+   */

+  public Header createHeader() {

+      return new Header();

+  }

+

+  /**

+   * Supported for backward compatibility.

+   *

+   * @see #unmarshall(org.w3c.dom.Node, org.apache.soap.rpc.SOAPContext)

+   */

+  public static Envelope unmarshall(Node src)

+    throws IllegalArgumentException {

+      return unmarshall(src, new SOAPContext());

+  }

+

+  public static Envelope unmarshall(Node src, SOAPContext ctx)

+    throws IllegalArgumentException {

+    Envelope env = new Envelope();

+    env.doUnmarshall(src, ctx);

+    return env;

+  }

+

+  /** The method unmarshalls a SOAP Envelope part into a specific
instance

+   * of Envelope. Most often used when the application requires a

+   * specialized version of a SOAP Envelope.

+   * @param src

+   * @param ctx

+   * @throws IllegalArgumentException

+   * @return Returns the instance of Envelope or specialized subclass of
Envelope.

+   */

+  public Envelope doUnmarshall(Node src, SOAPContext ctx)

+    throws IllegalArgumentException {

+    Element  root = (Element)src;

+

+    if (Constants.Q_ELEM_ENVELOPE.matches(root))

+    {

+      // Deserialize any envelope attributes.

+      //env.attrHandler = AttributeHandler.unmarshall(root, ctx);

+        attrHandler = createAttributeHandler();

+        attrHandler.doUnmarshall(root, ctx);

+

+      // Examine the subelements of the envelope.

+      Element headerEl = null;

+      Element bodyEl   = null;

+      Element tempEl   = DOMUtils.getFirstChildElement(root);

+

+      if (Constants.Q_ELEM_HEADER.matches(tempEl))

+      {

+        headerEl = tempEl;

+        tempEl = DOMUtils.getNextSiblingElement(tempEl);

+      }

+

+      if (Constants.Q_ELEM_BODY.matches(tempEl))

+      {

+        bodyEl = tempEl;

+        tempEl = DOMUtils.getNextSiblingElement(tempEl);

+      }

+

+      // Deserialize any header entries.

+      if (headerEl != null)

+      {

+        //Header header = Header.unmarshall(headerEl, ctx);

+          Header header = createHeader();

+          header.doUnmarshall(headerEl, ctx);

+

+        this.setHeader(header);

+      }

+

+      // Deserialize any body entries.

+      if (bodyEl != null)

+      {

+        //Body body = Body.unmarshall(bodyEl, ctx);

+          Body body = createBody();

+          body.doUnmarshall(bodyEl, ctx);

+

+        this.setBody(body);

+      }

+      else

+      {

+        throw new IllegalArgumentException("An '" +
Constants.Q_ELEM_ENVELOPE +

+                                           "' element must contain a: '"
+

+                                           Constants.Q_ELEM_BODY +

+                                           "' element.");

+      }

+

+      // Deserialize any envelope entries (in addition to
<SOAP-ENV:Body>).

+      if (tempEl != null)

+      {

+        Vector envelopeEntries = new Vector();

+

+        while (tempEl != null)

+        {

+          envelopeEntries.addElement(tempEl);

+          tempEl = DOMUtils.getNextSiblingElement(tempEl);

+        }

+

+        this.setEnvelopeEntries(envelopeEntries);

+      }

+    }

+    else

+    {

+      String localName = root.getLocalName();

+

+      if (localName != null && localName.equals(Constants.ELEM_ENVELOPE))

+      {

+        throw new
IllegalArgumentException(Constants.ERR_MSG_VERSION_MISMATCH);

+      }

+      else

+      {

+        throw new IllegalArgumentException("Root element of a SOAP
message " +

+                                           "must be: '" +

+                                           Constants.Q_ELEM_ENVELOPE +
"'.");

+      }

+    }

+

+    return this;

+  }

+

+  public String toString()

+  {

+    StringWriter sw = new StringWriter();

+    PrintWriter pw = new PrintWriter(sw);

+

+    pw.print("[Attributes=" + attrHandler + "] " +

+             "[Header=" + header + "] " +

+             "[Body=" + body + "] " +

+             "[EnvelopeEntries=");

+

+    if (envelopeEntries != null)

+    {

+      pw.println();

+

+      for (int i = 0; i < envelopeEntries.size(); i++)

+      {

+        pw.println("[(" + i + ")=" +

+
DOM2Writer.nodeToString((Element)envelopeEntries.elementAt(i)) +

+             "]");

+      }

+    }

+

+    pw.print("]");

+

+    return sw.toString();

+  }

+}


------------------------------------------------------------------------

Thanks,
Ying

Reply via email to