You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ve...@apache.org on 2005/06/03 16:54:43 UTC
svn commit: r179806 [2/3] - in
/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml:
namespace/ soap/
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPElement.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPElement.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPElement.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPElement.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,288 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+import java.util.Iterator;
+
+/**
+ * An object representing the contents in a
+ * <code>SOAPBody</code> object, the contents in a <code>SOAPHeader</code>
+ * object, the content that can follow the <code>SOAPBody</code> object in a
+ * <code>SOAPEnvelope</code> object, or what can follow the detail element
+ * in a <code>SOAPFault</code> object. It is
+ * the base class for all of the classes that represent the SOAP objects as
+ * defined in the SOAP specification.
+ */
+public interface SOAPElement extends Node, org.w3c.dom.Element {
+
+ /**
+ * Creates a new <code>SOAPElement</code> object initialized with the
+ * given <code>Name</code> object and adds the new element to this
+ * <code>SOAPElement</code> object.
+ * @param name a <code>Name</code> object with the XML name for the
+ * new element
+ * @return the new <code>SOAPElement</code> object that was created
+ * @throws SOAPException if there is an error in creating the
+ * <code>SOAPElement</code> object
+ */
+ public abstract SOAPElement addChildElement(Name name) throws SOAPException;
+
+ /**
+ * Creates a new <code>SOAPElement</code> object initialized with the
+ * given <code>String</code> object and adds the new element to this
+ * <code>SOAPElement</code> object.
+ * @param localName a <code>String</code> giving the local name for
+ * the element
+ * @return the new <code>SOAPElement</code> object that was created
+ * @throws SOAPException if there is an error in creating the
+ * <code>SOAPElement</code> object
+ */
+ public abstract SOAPElement addChildElement(String localName)
+ throws SOAPException;
+
+ /**
+ * Creates a new <code>SOAPElement</code> object initialized with the
+ * specified local name and prefix and adds the new element to this
+ * <code>SOAPElement</code> object.
+ * @param localName a <code>String</code> giving the local name for
+ * the new element
+ * @param prefix a <code>String</code> giving the namespace prefix for
+ * the new element
+ * @return the new <code>SOAPElement</code> object that was created
+ * @throws SOAPException if there is an error in creating the
+ * <code>SOAPElement</code> object
+ */
+ public abstract SOAPElement addChildElement(String localName, String prefix)
+ throws SOAPException;
+
+ /**
+ * Creates a new <code>SOAPElement</code> object initialized with the
+ * specified local name, prefix, and URI and adds the new element to this
+ * <code>SOAPElement</code> object.
+ * @param localName a <code>String</code> giving the local name for
+ * the new element
+ * @param prefix a <code>String</code> giving the namespace prefix for
+ * the new element
+ * @param uri a <code>String</code> giving the URI of the namespace
+ * to which the new element belongs
+ * @return the new <code>SOAPElement</code> object that was created
+ * @throws SOAPException if there is an error in creating the
+ * <code>SOAPElement</code> object
+ */
+ public abstract SOAPElement addChildElement(
+ String localName, String prefix, String uri) throws SOAPException;
+
+ /**
+ * Add a <code>SOAPElement</code> as a child of this
+ * <code>SOAPElement</code> instance. The <code>SOAPElement</code>
+ * is expected to be created by a
+ * <code>SOAPElementFactory</code>. Callers should not rely on the
+ * element instance being added as is into the XML
+ * tree. Implementations could end up copying the content
+ * of the <code>SOAPElement</code> passed into an instance of
+ * a different <code>SOAPElement</code> implementation. For
+ * instance if <code>addChildElement()</code> is called on a
+ * <code>SOAPHeader</code>, <code>element</code> will be copied
+ * into an instance of a <code>SOAPHeaderElement</code>.
+ *
+ * <P>The fragment rooted in <code>element</code> is either added
+ * as a whole or not at all, if there was an error.
+ *
+ * <P>The fragment rooted in <code>element</code> cannot contain
+ * elements named "Envelope", "Header" or "Body" and in the SOAP
+ * namespace. Any namespace prefixes present in the fragment
+ * should be fully resolved using appropriate namespace
+ * declarations within the fragment itself.
+ * @param element the <code>SOAPElement</code> to be added as a
+ * new child
+ * @return an instance representing the new SOAP element that was
+ * actually added to the tree.
+ * @throws SOAPException if there was an error in adding this
+ * element as a child
+ */
+ public abstract SOAPElement addChildElement(SOAPElement element)
+ throws SOAPException;
+
+ /**
+ * Creates a new <code>Text</code> object initialized with the given
+ * <code>String</code> and adds it to this <code>SOAPElement</code> object.
+ * @param text a <code>String</code> object with the textual content to be added
+ * @return the <code>SOAPElement</code> object into which
+ * the new <code>Text</code> object was inserted
+ * @throws SOAPException if there is an error in creating the
+ * new <code>Text</code> object
+ */
+ public abstract SOAPElement addTextNode(String text) throws SOAPException;
+
+ /**
+ * Adds an attribute with the specified name and value to this
+ * <code>SOAPElement</code> object.
+ * <p>
+ * @param name a <code>Name</code> object with the name of the attribute
+ * @param value a <code>String</code> giving the value of the attribute
+ * @return the <code>SOAPElement</code> object into which the attribute was
+ * inserted
+ * @throws SOAPException if there is an error in creating the
+ * Attribute
+ */
+ public abstract SOAPElement addAttribute(Name name, String value)
+ throws SOAPException;
+
+ /**
+ * Adds a namespace declaration with the specified prefix and URI to this
+ * <code>SOAPElement</code> object.
+ * <p>
+ * @param prefix a <code>String</code> giving the prefix of the namespace
+ * @param uri a <CODE>String</CODE> giving
+ * the prefix of the namespace
+ * @return the <code>SOAPElement</code> object into which this
+ * namespace declaration was inserted.
+ * @throws SOAPException if there is an error in creating the
+ * namespace
+ */
+ public abstract SOAPElement addNamespaceDeclaration(
+ String prefix, String uri) throws SOAPException;
+
+ /**
+ * Returns the value of the attribute with the specified
+ * name.
+ * @param name a <CODE>Name</CODE> object with
+ * the name of the attribute
+ * @return a <CODE>String</CODE> giving the value of the
+ * specified attribute
+ */
+ public abstract String getAttributeValue(Name name);
+
+ /**
+ * Returns an iterator over all of the attribute names in
+ * this <CODE>SOAPElement</CODE> object. The iterator can be
+ * used to get the attribute names, which can then be passed to
+ * the method <CODE>getAttributeValue</CODE> to retrieve the
+ * value of each attribute.
+ * @return an iterator over the names of the attributes
+ */
+ public abstract Iterator getAllAttributes();
+
+ /**
+ * Returns the URI of the namespace that has the given
+ * prefix.
+ *
+ * @param prefix a <CODE>String</CODE> giving
+ * the prefix of the namespace for which to search
+ * @return a <CODE>String</CODE> with the uri of the namespace
+ * that has the given prefix
+ */
+ public abstract String getNamespaceURI(String prefix);
+
+ /**
+ * Returns an iterator of namespace prefixes. The iterator
+ * can be used to get the namespace prefixes, which can then be
+ * passed to the method <CODE>getNamespaceURI</CODE> to retrieve
+ * the URI of each namespace.
+ * @return an iterator over the namespace prefixes in this
+ * <CODE>SOAPElement</CODE> object
+ */
+ public abstract Iterator getNamespacePrefixes();
+
+ /**
+ * Returns the name of this <CODE>SOAPElement</CODE>
+ * object.
+ * @return a <CODE>Name</CODE> object with the name of this
+ * <CODE>SOAPElement</CODE> object
+ */
+ public abstract Name getElementName();
+
+ /**
+ * Removes the attribute with the specified name.
+ * @param name the <CODE>Name</CODE> object with
+ * the name of the attribute to be removed
+ * @return <CODE>true</CODE> if the attribute was removed
+ * successfully; <CODE>false</CODE> if it was not
+ */
+ public abstract boolean removeAttribute(Name name);
+
+ /**
+ * Removes the namespace declaration corresponding to the
+ * given prefix.
+ * @param prefix a <CODE>String</CODE> giving
+ * the prefix for which to search
+ * @return <CODE>true</CODE> if the namespace declaration was
+ * removed successfully; <CODE>false</CODE> if it was
+ * not
+ */
+ public abstract boolean removeNamespaceDeclaration(String prefix);
+
+ /**
+ * Returns an iterator over all the immediate content of
+ * this element. This includes <CODE>Text</CODE> objects as well
+ * as <CODE>SOAPElement</CODE> objects.
+ * @return an iterator with the content of this <CODE>
+ * SOAPElement</CODE> object
+ */
+ public abstract Iterator getChildElements();
+
+ /**
+ * Returns an iterator over all the child elements with the
+ * specified name.
+ * @param name a <CODE>Name</CODE> object with
+ * the name of the child elements to be returned
+ * @return an <CODE>Iterator</CODE> object over all the elements
+ * in this <CODE>SOAPElement</CODE> object with the
+ * specified name
+ */
+ public abstract Iterator getChildElements(Name name);
+
+ /**
+ * Sets the encoding style for this <CODE>SOAPElement</CODE>
+ * object to one specified.
+ * @param encodingStyle a <CODE>String</CODE>
+ * giving the encoding style
+ * @throws java.lang.IllegalArgumentException if
+ * there was a problem in the encoding style being set.
+ * @see #getEncodingStyle() getEncodingStyle()
+ */
+ public abstract void setEncodingStyle(String encodingStyle)
+ throws SOAPException;
+
+ /**
+ * Returns the encoding style for this <CODE>
+ * SOAPElement</CODE> object.
+ * @return a <CODE>String</CODE> giving the encoding style
+ * @see #setEncodingStyle(java.lang.String) setEncodingStyle(java.lang.String)
+ */
+ public abstract String getEncodingStyle();
+
+ /**
+ * Detaches all children of this <code>SOAPElement</code>.
+ * <p>
+ * This method is useful for rolling back the construction of partially
+ * completed <code>SOAPHeaders</code> and <code>SOAPBodys</code> in
+ * reparation for sending a fault when an error condition is detected. It is
+ * also useful for recycling portions of a document within a SOAP message.
+ */
+ public abstract void removeContents();
+
+ /**
+ * Returns an <code>Iterator</code> over the namespace prefix
+ * <code>String</code>s visible to this element. The prefixes returned by
+ * this iterator can be passed to the method <code>getNamespaceURI()</code>
+ * to retrieve the URI of each namespace.
+ *
+ * @return an iterator over the namespace prefixes are within scope of this
+ * <code>SOAPElement</code> object
+ */
+ public abstract Iterator getVisibleNamespacePrefixes();
+}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPElementFactory.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPElementFactory.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPElementFactory.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPElementFactory.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+/**
+ * <P><CODE>SOAPElementFactory</CODE> is a factory for XML
+ * fragments that will eventually end up in the SOAP part. These
+ * fragments can be inserted as children of the <CODE>
+ * SOAPHeader</CODE> or <CODE>SOAPBody</CODE> or <CODE>
+ * SOAPEnvelope</CODE>.</P>
+ *
+ * <P>Elements created using this factory do not have the
+ * properties of an element that lives inside a SOAP header
+ * document. These elements are copied into the XML document tree
+ * when they are inserted.</P>
+ * @deprecated - Use javax.xml.soap.SOAPFactory for creating SOAPElements.
+ * @see SOAPFactory SOAPFactory
+ */
+public class SOAPElementFactory {
+
+ /**
+ * Create a new <code>SOAPElementFactory from a <code>SOAPFactory</code>.
+ *
+ * @param soapfactory the <code>SOAPFactory</code> to use
+ */
+ private SOAPElementFactory(SOAPFactory soapfactory) {
+ sf = soapfactory;
+ }
+
+ /**
+ * Create a <CODE>SOAPElement</CODE> object initialized with
+ * the given <CODE>Name</CODE> object.
+ * @param name a <CODE>Name</CODE> object with
+ * the XML name for the new element
+ * @return the new <CODE>SOAPElement</CODE> object that was
+ * created
+ * @throws SOAPException if there is an error in
+ * creating the <CODE>SOAPElement</CODE> object
+ * @deprecated Use javax.xml.soap.SOAPFactory.createElement(javax.xml.soap.Name) instead
+ * @see SOAPFactory#createElement(javax.xml.soap.Name) SOAPFactory.createElement(javax.xml.soap.Name)
+ */
+ public SOAPElement create(Name name) throws SOAPException {
+ return sf.createElement(name);
+ }
+
+ /**
+ * Create a <CODE>SOAPElement</CODE> object initialized with
+ * the given local name.
+ * @param localName a <CODE>String</CODE> giving
+ * the local name for the new element
+ * @return the new <CODE>SOAPElement</CODE> object that was
+ * created
+ * @throws SOAPException if there is an error in
+ * creating the <CODE>SOAPElement</CODE> object
+ * @deprecated Use javax.xml.soap.SOAPFactory.createElement(String localName) instead
+ * @see SOAPFactory#createElement(java.lang.String) SOAPFactory.createElement(java.lang.String)
+ */
+ public SOAPElement create(String localName) throws SOAPException {
+ return sf.createElement(localName);
+ }
+
+ /**
+ * Create a new <CODE>SOAPElement</CODE> object with the
+ * given local name, prefix and uri.
+ * @param localName a <CODE>String</CODE> giving
+ * the local name for the new element
+ * @param prefix the prefix for this <CODE>
+ * SOAPElement</CODE>
+ * @param uri a <CODE>String</CODE> giving the
+ * URI of the namespace to which the new element
+ * belongs
+ * @return the new <CODE>SOAPElement</CODE> object that was
+ * created
+ * @throws SOAPException if there is an error in
+ * creating the <CODE>SOAPElement</CODE> object
+ * @deprecated Use javax.xml.soap.SOAPFactory.createElement(String localName, String prefix, String uri) instead
+ * @see SOAPFactory#createElement(java.lang.String, java.lang.String, java.lang.String) SOAPFactory.createElement(java.lang.String, java.lang.String, java.lang.String)
+ */
+ public SOAPElement create(String localName, String prefix, String uri)
+ throws SOAPException {
+ return sf.createElement(localName, prefix, uri);
+ }
+
+ /**
+ * Creates a new instance of <CODE>SOAPElementFactory</CODE>.
+ *
+ * @return a new instance of a <CODE>
+ * SOAPElementFactory</CODE>
+ * @throws SOAPException if there was an error creating
+ * the default <CODE>SOAPElementFactory
+ */
+ public static SOAPElementFactory newInstance() throws SOAPException {
+
+ try {
+ return new SOAPElementFactory(SOAPFactory.newInstance());
+ } catch (Exception exception) {
+ throw new SOAPException("Unable to create SOAP Element Factory: "
+ + exception.getMessage());
+ }
+ }
+
+ private SOAPFactory sf;
+}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPEnvelope.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPEnvelope.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPEnvelope.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPEnvelope.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,191 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+/**
+ * The container for the SOAPHeader and SOAPBody portions of a
+ * <CODE>SOAPPart</CODE> object. By default, a <CODE>
+ * SOAPMessage</CODE> object is created with a <CODE>
+ * SOAPPart</CODE> object that has a <CODE>SOAPEnvelope</CODE>
+ * object. The <CODE>SOAPEnvelope</CODE> object by default has an
+ * empty <CODE>SOAPBody</CODE> object and an empty <CODE>
+ * SOAPHeader</CODE> object. The <CODE>SOAPBody</CODE> object is
+ * required, and the <CODE>SOAPHeader</CODE> object, though
+ * optional, is used in the majority of cases. If the <CODE>
+ * SOAPHeader</CODE> object is not needed, it can be deleted,
+ * which is shown later.</P>
+ *
+ * <P>A client can access the <CODE>SOAPHeader</CODE> and <CODE>
+ * SOAPBody</CODE> objects by calling the methods <CODE>
+ * SOAPEnvelope.getHeader</CODE> and <CODE>
+ * SOAPEnvelope.getBody</CODE>. The following lines of code use
+ * these two methods after starting with the <CODE>
+ * SOAPMessage</CODE> object <I>message</I> to get the <CODE>
+ * SOAPPart</CODE> object <I>sp</I>, which is then used to get the
+ * <CODE>SOAPEnvelope</CODE> object <I>se</I>.</P>
+ * <PRE>
+ * SOAPPart sp = message.getSOAPPart();
+ * SOAPEnvelope se = sp.getEnvelope();
+ * SOAPHeader sh = se.getHeader();
+ * SOAPBody sb = se.getBody();
+ * </PRE>
+ *
+ * <P>It is possible to change the body or header of a <CODE>
+ * SOAPEnvelope</CODE> object by retrieving the current one,
+ * deleting it, and then adding a new body or header. The <CODE>
+ * javax.xml.soap.Node</CODE> method <CODE>detachNode</CODE>
+ * detaches the XML element (node) on which it is called. For
+ * example, the following line of code deletes the <CODE>
+ * SOAPBody</CODE> object that is retrieved by the method <CODE>
+ * getBody</CODE>.</P>
+ * <PRE>
+ * se.getBody().detachNode();
+ * </PRE>
+ * To create a <CODE>SOAPHeader</CODE> object to replace the one
+ * that was removed, a client uses the method <CODE>
+ * SOAPEnvelope.addHeader</CODE>, which creates a new header and
+ * adds it to the <CODE>SOAPEnvelope</CODE> object. Similarly, the
+ * method <CODE>addBody</CODE> creates a new <CODE>SOAPBody</CODE>
+ * object and adds it to the <CODE>SOAPEnvelope</CODE> object. The
+ * following code fragment retrieves the current header, removes
+ * it, and adds a new one. Then it retrieves the current body,
+ * removes it, and adds a new one.
+ * <PRE>
+ * SOAPPart sp = message.getSOAPPart();
+ * SOAPEnvelope se = sp.getEnvelope();
+ * se.getHeader().detachNode();
+ * SOAPHeader sh = se.addHeader();
+ * se.getBody().detachNode();
+ * SOAPBody sb = se.addBody();
+ * </PRE>
+ * It is an error to add a <CODE>SOAPBody</CODE> or <CODE>
+ * SOAPHeader</CODE> object if one already exists.
+ *
+ * <P>The <CODE>SOAPEnvelope</CODE> interface provides three
+ * methods for creating <CODE>Name</CODE> objects. One method
+ * creates <CODE>Name</CODE> objects with a local name, a
+ * namespace prefix, and a namesapce URI. The second method
+ * creates <CODE>Name</CODE> objects with a local name and a
+ * namespace prefix, and the third creates <CODE>Name</CODE>
+ * objects with just a local name. The following line of code, in
+ * which <I>se</I> is a <CODE>SOAPEnvelope</CODE> object, creates
+ * a new <CODE>Name</CODE> object with all three.</P>
+ * <PRE>
+ * Name name = se.createName("GetLastTradePrice", "WOMBAT",
+ * "http://www.wombat.org/trader");
+ * </PRE>
+ */
+public interface SOAPEnvelope extends SOAPElement {
+
+ /**
+ * Creates a new <CODE>Name</CODE> object initialized with the
+ * given local name, namespace prefix, and namespace URI.
+ *
+ * <P>This factory method creates <CODE>Name</CODE> objects
+ * for use in the SOAP/XML document.
+ * @param localName a <CODE>String</CODE> giving
+ * the local name
+ * @param prefix a <CODE>String</CODE> giving
+ * the prefix of the namespace
+ * @param uri a <CODE>String</CODE> giving the
+ * URI of the namespace
+ * @return a <CODE>Name</CODE> object initialized with the given
+ * local name, namespace prefix, and namespace URI
+ * @throws SOAPException if there is a SOAP error
+ */
+ public abstract Name createName(String localName, String prefix, String uri)
+ throws SOAPException;
+
+ /**
+ * Creates a new <CODE>Name</CODE> object initialized with the
+ * given local name.
+ *
+ * <P>This factory method creates <CODE>Name</CODE> objects
+ * for use in the SOAP/XML document.
+ *
+ * @param localName a <CODE>String</CODE> giving
+ * the local name
+ * @return a <CODE>Name</CODE> object initialized with the given
+ * local name
+ * @throws SOAPException if there is a SOAP error
+ */
+ public abstract Name createName(String localName) throws SOAPException;
+
+ /**
+ * Returns the <CODE>SOAPHeader</CODE> object for this <CODE>
+ * SOAPEnvelope</CODE> object.
+ *
+ * <P>A new <CODE>SOAPMessage</CODE> object is by default
+ * created with a <CODE>SOAPEnvelope</CODE> object that
+ * contains an empty <CODE>SOAPHeader</CODE> object. As a
+ * result, the method <CODE>getHeader</CODE> will always
+ * return a <CODE>SOAPHeader</CODE> object unless the header
+ * has been removed and a new one has not been added.
+ * @return the <CODE>SOAPHeader</CODE> object or <CODE>
+ * null</CODE> if there is none
+ * @throws SOAPException if there is a problem
+ * obtaining the <CODE>SOAPHeader</CODE> object
+ */
+ public abstract SOAPHeader getHeader() throws SOAPException;
+
+ /**
+ * Returns the <CODE>SOAPBody</CODE> object associated with
+ * this <CODE>SOAPEnvelope</CODE> object.
+ *
+ * <P>A new <CODE>SOAPMessage</CODE> object is by default
+ * created with a <CODE>SOAPEnvelope</CODE> object that
+ * contains an empty <CODE>SOAPBody</CODE> object. As a
+ * result, the method <CODE>getBody</CODE> will always return
+ * a <CODE>SOAPBody</CODE> object unless the body has been
+ * removed and a new one has not been added.
+ * @return the <CODE>SOAPBody</CODE> object for this <CODE>
+ * SOAPEnvelope</CODE> object or <CODE>null</CODE> if there
+ * is none
+ * @throws SOAPException if there is a problem
+ * obtaining the <CODE>SOAPBody</CODE> object
+ */
+ public abstract SOAPBody getBody() throws SOAPException;
+
+ /**
+ * Creates a <CODE>SOAPHeader</CODE> object and sets it as the
+ * <CODE>SOAPHeader</CODE> object for this <CODE>
+ * SOAPEnvelope</CODE> object.
+ *
+ * <P>It is illegal to add a header when the envelope already
+ * contains a header. Therefore, this method should be called
+ * only after the existing header has been removed.
+ * @return the new <CODE>SOAPHeader</CODE> object
+ * @throws SOAPException if this <CODE>
+ * SOAPEnvelope</CODE> object already contains a valid
+ * <CODE>SOAPHeader</CODE> object
+ */
+ public abstract SOAPHeader addHeader() throws SOAPException;
+
+ /**
+ * Creates a <CODE>SOAPBody</CODE> object and sets it as the
+ * <CODE>SOAPBody</CODE> object for this <CODE>
+ * SOAPEnvelope</CODE> object.
+ *
+ * <P>It is illegal to add a body when the envelope already
+ * contains a body. Therefore, this method should be called
+ * only after the existing body has been removed.
+ * @return the new <CODE>SOAPBody</CODE> object
+ * @throws SOAPException if this <CODE>
+ * SOAPEnvelope</CODE> object already contains a valid
+ * <CODE>SOAPBody</CODE> object
+ */
+ public abstract SOAPBody addBody() throws SOAPException;
+}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPException.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPException.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPException.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPException.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+/**
+ * An exception that signals that a SOAP exception has
+ * occurred. A <CODE>SOAPException</CODE> object may contain a
+ * <CODE>String</CODE> that gives the reason for the exception, an
+ * embedded <CODE>Throwable</CODE> object, or both. This class
+ * provides methods for retrieving reason messages and for
+ * retrieving the embedded <CODE>Throwable</CODE> object.</P>
+ *
+ * <P>Typical reasons for throwing a <CODE>SOAPException</CODE>
+ * object are problems such as difficulty setting a header, not
+ * being able to send a message, and not being able to get a
+ * connection with the provider. Reasons for embedding a <CODE>
+ * Throwable</CODE> object include problems such as input/output
+ * errors or a parsing problem, such as an error in parsing a
+ * header.
+ */
+public class SOAPException extends Exception {
+
+ /**
+ * Constructs a <CODE>SOAPException</CODE> object with no
+ * reason or embedded <CODE>Throwable</CODE> object.
+ */
+ public SOAPException() {
+ cause = null;
+ }
+
+ /**
+ * Constructs a <CODE>SOAPException</CODE> object with the
+ * given <CODE>String</CODE> as the reason for the exception
+ * being thrown.
+ * @param reason a description of what caused
+ * the exception
+ */
+ public SOAPException(String reason) {
+
+ super(reason);
+
+ cause = null;
+ }
+
+ /**
+ * Constructs a <CODE>SOAPException</CODE> object with the
+ * given <CODE>String</CODE> as the reason for the exception
+ * being thrown and the given <CODE>Throwable</CODE> object as
+ * an embedded exception.
+ * @param reason a description of what caused
+ * the exception
+ * @param cause a <CODE>Throwable</CODE> object
+ * that is to be embedded in this <CODE>SOAPException</CODE>
+ * object
+ */
+ public SOAPException(String reason, Throwable cause) {
+
+ super(reason);
+
+ initCause(cause);
+ }
+
+ /**
+ * Constructs a <CODE>SOAPException</CODE> object
+ * initialized with the given <CODE>Throwable</CODE>
+ * object.
+ * @param cause a <CODE>Throwable</CODE> object
+ * that is to be embedded in this <CODE>SOAPException</CODE>
+ * object
+ */
+ public SOAPException(Throwable cause) {
+
+ super(cause.toString());
+
+ initCause(cause);
+ }
+
+ /**
+ * Returns the detail message for this <CODE>
+ * SOAPException</CODE> object.
+ *
+ * <P>If there is an embedded <CODE>Throwable</CODE> object,
+ * and if the <CODE>SOAPException</CODE> object has no detail
+ * message of its own, this method will return the detail
+ * message from the embedded <CODE>Throwable</CODE>
+ * object.</P>
+ * @return the error or warning message for this <CODE>
+ * SOAPException</CODE> or, if it has none, the message of
+ * the embedded <CODE>Throwable</CODE> object, if there is
+ * one
+ */
+ public String getMessage() {
+
+ String s = super.getMessage();
+
+ if ((s == null) && (cause != null)) {
+ return cause.getMessage();
+ } else {
+ return s;
+ }
+ }
+
+ /**
+ * Returns the <CODE>Throwable</CODE> object embedded in
+ * this <CODE>SOAPException</CODE> if there is one. Otherwise,
+ * this method returns <CODE>null</CODE>.
+ * @return the embedded <CODE>Throwable</CODE> object or <CODE>
+ * null</CODE> if there is none
+ */
+ public Throwable getCause() {
+ return cause;
+ }
+
+ /**
+ * Initializes the <CODE>cause</CODE> field of this <CODE>
+ * SOAPException</CODE> object with the given <CODE>
+ * Throwable</CODE> object.
+ *
+ * <P>This method can be called at most once. It is generally
+ * called from within the constructor or immediately after the
+ * constructor has returned a new <CODE>SOAPException</CODE>
+ * object. If this <CODE>SOAPException</CODE> object was
+ * created with the constructor {@link #SOAPException(java.lang.Throwable) SOAPException(java.lang.Throwable)}
+ * or {@link #SOAPException(java.lang.String, java.lang.Throwable) SOAPException(java.lang.String, java.lang.Throwable)}, meaning
+ * that its <CODE>cause</CODE> field already has a value, this
+ * method cannot be called even once.
+ *
+ * @param cause the <CODE>Throwable</CODE>
+ * object that caused this <CODE>SOAPException</CODE> object
+ * to be thrown. The value of this parameter is saved for
+ * later retrieval by the <A href=
+ * "../../../javax/xml/soap/SOAPException.html#getCause()">
+ * <CODE>getCause()</CODE></A> method. A <TT>null</TT> value
+ * is permitted and indicates that the cause is nonexistent
+ * or unknown.
+ * @return a reference to this <CODE>SOAPException</CODE>
+ * instance
+ * @throws java.lang.IllegalArgumentException if
+ * <CODE>cause</CODE> is this <CODE>Throwable</CODE> object.
+ * (A <CODE>Throwable</CODE> object cannot be its own
+ * cause.)
+ * @throws java.lang.IllegalStateException if this <CODE>
+ * SOAPException</CODE> object was created with {@link #SOAPException(java.lang.Throwable) SOAPException(java.lang.Throwable)}
+ * or {@link #SOAPException(java.lang.String, java.lang.Throwable) SOAPException(java.lang.String, java.lang.Throwable)}, or this
+ * method has already been called on this <CODE>
+ * SOAPException</CODE> object
+ */
+ public synchronized Throwable initCause(Throwable cause) {
+
+ if (this.cause != null) {
+ throw new IllegalStateException("Can't override cause");
+ }
+
+ if (cause == this) {
+ throw new IllegalArgumentException("Self-causation not permitted");
+ } else {
+ this.cause = cause;
+
+ return this;
+ }
+ }
+
+ private Throwable cause;
+}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFactory.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFactory.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFactory.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFactory.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,147 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+/**
+ * <code>SOAPFactory</code> is a factory for creating various objects
+ * that exist in the SOAP XML tree.
+ *
+ * <code>SOAPFactory</code> can be
+ * used to create XML fragments that will eventually end up in the
+ * SOAP part. These fragments can be inserted as children of the
+ * <code>SOAPHeaderElement</code> or <code>SOAPBodyElement</code> or
+ * <code>SOAPEnvelope</code>.
+ *
+ * <code>SOAPFactory</code> also has methods to create
+ * <code>javax.xml.soap.Detail</code> objects as well as
+ * <code>java.xml.soap.Name</code> objects.
+ *
+ */
+public abstract class SOAPFactory {
+
+ public SOAPFactory() {}
+
+ /**
+ * Create a <code>SOAPElement</code> object initialized with the
+ * given <code>Name</code> object.
+ *
+ * @param name a <code>Name</code> object with the XML name for
+ * the new element
+ * @return the new <code>SOAPElement</code> object that was
+ * created
+ * @throws SOAPException if there is an error in creating the
+ * <code>SOAPElement</code> object
+ */
+ public abstract SOAPElement createElement(Name name) throws SOAPException;
+
+ /**
+ * Create a <code>SOAPElement</code> object initialized with the
+ * given local name.
+ *
+ * @param localName a <code>String</code> giving the local name for
+ * the new element
+ * @return the new <code>SOAPElement</code> object that was
+ * created
+ * @throws SOAPException if there is an error in creating the
+ * <code>SOAPElement</code> object
+ */
+ public abstract SOAPElement createElement(String localName) throws SOAPException;
+
+ /**
+ * Create a new <code>SOAPElement</code> object with the given
+ * local name, prefix and uri.
+ *
+ * @param localName a <code>String</code> giving the local name
+ * for the new element
+ * @param prefix the prefix for this <code>SOAPElement</code>
+ * @param uri a <code>String</code> giving the URI of the
+ * namespace to which the new element belongs
+ * @return the new <code>SOAPElement</code> object that was
+ * created
+ * @throws SOAPException if there is an error in creating the
+ * <code>SOAPElement</code> object
+ */
+ public abstract SOAPElement createElement(String localName, String prefix, String uri)
+ throws SOAPException;
+
+ /**
+ * Creates a new <code>Detail</code> object which serves as a container
+ * for <code>DetailEntry</code> objects.
+ * <p>
+ * This factory method creates <code>Detail</code> objects for use in
+ * situations where it is not practical to use the <code>SOAPFault</code>
+ * abstraction.
+ *
+ * @return a <code>Detail</code> object
+ * @throws SOAPException if there is a SOAP error
+ */
+ public abstract Detail createDetail() throws SOAPException;
+
+ /**
+ * Creates a new <code>Name</code> object initialized with the
+ * given local name, namespace prefix, and namespace URI.
+ * <p>
+ * This factory method creates <code>Name</code> objects for use in
+ * situations where it is not practical to use the <code>SOAPEnvelope</code>
+ * abstraction.
+ *
+ * @param localName a <code>String</code> giving the local name
+ * @param prefix a <code>String</code> giving the prefix of the namespace
+ * @param uri a <code>String</code> giving the URI of the namespace
+ * @return a <code>Name</code> object initialized with the given
+ * local name, namespace prefix, and namespace URI
+ * @throws SOAPException if there is a SOAP error
+ */
+ public abstract Name createName(String localName, String prefix, String uri)
+ throws SOAPException;
+
+ /**
+ * Creates a new <code>Name</code> object initialized with the
+ * given local name.
+ * <p>
+ * This factory method creates <code>Name</code> objects for use in
+ * situations where it is not practical to use the <code>SOAPEnvelope</code>
+ * abstraction.
+ *
+ * @param localName a <code>String</code> giving the local name
+ * @return a <code>Name</code> object initialized with the given
+ * local name
+ * @throws SOAPException if there is a SOAP error
+ */
+ public abstract Name createName(String localName) throws SOAPException;
+
+ /**
+ * Creates a new instance of <code>SOAPFactory</code>.
+ *
+ * @return a new instance of a <code>SOAPFactory</code>
+ * @throws SOAPException if there was an error creating the
+ * default <code>SOAPFactory</code>
+ */
+ public static SOAPFactory newInstance() throws SOAPException {
+
+ try {
+ return (SOAPFactory) FactoryFinder.find(SF_PROPERTY, DEFAULT_SF);
+ } catch (Exception exception) {
+ throw new SOAPException("Unable to create SOAP Factory: "
+ + exception.getMessage());
+ }
+ }
+
+ private static final String SF_PROPERTY = "javax.xml.soap.SOAPFactory";
+
+ private static final String DEFAULT_SF =
+ "org.apache.axis.saaj.SOAPFactoryImpl";
+}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFault.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFault.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFault.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFault.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,203 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+import java.util.Locale;
+
+/**
+ * An element in the <CODE>SOAPBody</CODE> object that contains
+ * error and/or status information. This information may relate to
+ * errors in the <CODE>SOAPMessage</CODE> object or to problems
+ * that are not related to the content in the message itself.
+ * Problems not related to the message itself are generally errors
+ * in processing, such as the inability to communicate with an
+ * upstream server.
+ * <P>
+ * The <CODE>SOAPFault</CODE> interface provides methods for
+ * retrieving the information contained in a <CODE>
+ * SOAPFault</CODE> object and for setting the fault code, the
+ * fault actor, and a string describing the fault. A fault code is
+ * one of the codes defined in the SOAP 1.1 specification that
+ * describe the fault. An actor is an intermediate recipient to
+ * whom a message was routed. The message path may include one or
+ * more actors, or, if no actors are specified, the message goes
+ * only to the default actor, which is the final intended
+ * recipient.
+ */
+public interface SOAPFault extends SOAPBodyElement {
+
+ /**
+ * Sets this <CODE>SOAPFault</CODE> object with the given
+ * fault code.
+ *
+ * <P>Fault codes, which given information about the fault,
+ * are defined in the SOAP 1.1 specification.</P>
+ * @param faultCode a <CODE>String</CODE> giving
+ * the fault code to be set; must be one of the fault codes
+ * defined in the SOAP 1.1 specification
+ * @throws SOAPException if there was an error in
+ * adding the <CODE>faultCode</CODE> to the underlying XML
+ * tree.
+ * @see #getFaultCode() getFaultCode()
+ */
+ public abstract void setFaultCode(String faultCode) throws SOAPException;
+
+ /**
+ * Gets the fault code for this <CODE>SOAPFault</CODE>
+ * object.
+ * @return a <CODE>String</CODE> with the fault code
+ * @see #setFaultCode(java.lang.String) setFaultCode(java.lang.String)
+ */
+ public abstract String getFaultCode();
+
+ /**
+ * Sets this <CODE>SOAPFault</CODE> object with the given
+ * fault actor.
+ *
+ * <P>The fault actor is the recipient in the message path who
+ * caused the fault to happen.</P>
+ * @param faultActor a <CODE>String</CODE>
+ * identifying the actor that caused this <CODE>
+ * SOAPFault</CODE> object
+ * @throws SOAPException if there was an error in
+ * adding the <CODE>faultActor</CODE> to the underlying XML
+ * tree.
+ * @see #getFaultActor() getFaultActor()
+ */
+ public abstract void setFaultActor(String faultActor) throws SOAPException;
+
+ /**
+ * Gets the fault actor for this <CODE>SOAPFault</CODE>
+ * object.
+ * @return a <CODE>String</CODE> giving the actor in the message
+ * path that caused this <CODE>SOAPFault</CODE> object
+ * @see #setFaultActor(java.lang.String) setFaultActor(java.lang.String)
+ */
+ public abstract String getFaultActor();
+
+ /**
+ * Sets the fault string for this <CODE>SOAPFault</CODE>
+ * object to the given string.
+ *
+ * @param faultString a <CODE>String</CODE>
+ * giving an explanation of the fault
+ * @throws SOAPException if there was an error in
+ * adding the <CODE>faultString</CODE> to the underlying XML
+ * tree.
+ * @see #getFaultString() getFaultString()
+ */
+ public abstract void setFaultString(String faultString)
+ throws SOAPException;
+
+ /**
+ * Gets the fault string for this <CODE>SOAPFault</CODE>
+ * object.
+ * @return a <CODE>String</CODE> giving an explanation of the
+ * fault
+ */
+ public abstract String getFaultString();
+
+ /**
+ * Returns the detail element for this <CODE>SOAPFault</CODE>
+ * object.
+ *
+ * <P>A <CODE>Detail</CODE> object carries
+ * application-specific error information related to <CODE>
+ * SOAPBodyElement</CODE> objects.</P>
+ * @return a <CODE>Detail</CODE> object with
+ * application-specific error information
+ */
+ public abstract Detail getDetail();
+
+ /**
+ * Creates a <CODE>Detail</CODE> object and sets it as the
+ * <CODE>Detail</CODE> object for this <CODE>SOAPFault</CODE>
+ * object.
+ *
+ * <P>It is illegal to add a detail when the fault already
+ * contains a detail. Therefore, this method should be called
+ * only after the existing detail has been removed.</P>
+ * @return the new <CODE>Detail</CODE> object
+ * @throws SOAPException if this
+ * <CODE>SOAPFault</CODE> object already contains a valid
+ * <CODE>Detail</CODE> object
+ */
+ public abstract Detail addDetail() throws SOAPException;
+
+ /**
+ * Sets this <code>SOAPFault</code> object with the given fault code.
+ *
+ * Fault codes, which give information about the fault, are defined in the
+ * SOAP 1.1 specification. A fault code is mandatory and must be of type
+ * <code>QName</code>. This method provides a convenient way to set a fault
+ * code. For example,
+ *
+ * <pre>
+ SOAPEnvelope se = ...;
+ // Create a qualified name in the SOAP namespace with a localName
+ // of "Client". Note that prefix parameter is optional and is null
+ // here which causes the implementation to use an appropriate prefix.
+ Name qname = se.createName("Client", null,
+ SOAPConstants.URI_NS_SOAP_ENVELOPE);
+ SOAPFault fault = ...;
+ fault.setFaultCode(qname);
+ *
+ * It is preferable to use this method over setFaultCode(String).
+ *
+ * @param name a <code>Name</code> object giving the fault code to be set.
+ * It must be namespace qualified.
+ * @throws SOAPException if there was an error in adding the
+ * <code>faultcode</code> element to the underlying XML tree
+ */
+ public abstract void setFaultCode(Name name) throws SOAPException;
+
+ /**
+ * Gets the mandatory SOAP 1.1 fault code for this <code>SOAPFault</code>
+ * object as a SAAJ <code>Name</code> object. The SOAP 1.1 specification
+ * requires the value of the "faultcode" element to be of type QName. This
+ * method returns the content of the element as a QName in the form of a
+ * SAAJ <code>Name</code> object. This method should be used instead of the
+ * <code>getFaultCode()</code> method since it allows applications to easily
+ * access the namespace name without additional parsing.
+ * <p>
+ * In the future, a QName object version of this method may also be added.
+ * @return a <code>Name</code> representing the faultcode
+ */
+ public abstract Name getFaultCodeAsName();
+
+ /**
+ * Sets the fault string for this <code>SOAPFault</code> object to the given
+ * string and localized to the given locale.
+ *
+ * @param faultString a <code>String</code> giving an explanation of
+ * the fault
+ * @param locale a <code>Locale</code> object indicating the
+ * native language of the <code>faultString</code>
+ * @throws SOAPException if there was an error in adding the
+ * <code>faultString</code> to the underlying XML tree
+ */
+ public abstract void setFaultString(String faultString, Locale locale) throws SOAPException;
+
+ /**
+ * Returns the optional detail element for this <code>SOAPFault</code>
+ * object.
+ *
+ * @return a <code>Locale</code> object indicating the native language of
+ * the fault string or <code>null</code> if no locale was
+ * specified
+ */
+ public abstract Locale getFaultStringLocale();
+}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFaultElement.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFaultElement.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFaultElement.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPFaultElement.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+/**
+ * A representation of the contents in
+ * a <code>SOAPFault</code> object. The <code>Detail</code> interface
+ * is a <code>SOAPFaultElement</code> object that has been defined.
+ * <p>
+ * Content is added to a <code>SOAPFaultElement</code> using the
+ * <code>SOAPElement</code> method <code>addTextNode</code>.
+ */
+public interface SOAPFaultElement extends SOAPElement {}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPHeader.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPHeader.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPHeader.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPHeader.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+import java.util.Iterator;
+
+/**
+ * <P>A representation of the SOAP header element. A SOAP header
+ * element consists of XML data that affects the way the
+ * application-specific content is processed by the message
+ * provider. For example, transaction semantics, authentication
+ * information, and so on, can be specified as the content of a
+ * <CODE>SOAPHeader</CODE> object.</P>
+ *
+ * <P>A <CODE>SOAPEnvelope</CODE> object contains an empty <CODE>
+ * SOAPHeader</CODE> object by default. If the <CODE>
+ * SOAPHeader</CODE> object, which is optional, is not needed, it
+ * can be retrieved and deleted with the following line of code.
+ * The variable <I>se</I> is a <CODE>SOAPEnvelope</CODE>
+ * object.</P>
+ * <PRE>
+ * se.getHeader().detachNode();
+ * </PRE>
+ * A <CODE>SOAPHeader</CODE> object is created with the <CODE>
+ * SOAPEnvelope</CODE> method <CODE>addHeader</CODE>. This method,
+ * which creates a new header and adds it to the envelope, may be
+ * called only after the existing header has been removed.
+ * <PRE>
+ * se.getHeader().detachNode();
+ * SOAPHeader sh = se.addHeader();
+ * </PRE>
+ *
+ * <P>A <CODE>SOAPHeader</CODE> object can have only <CODE>
+ * SOAPHeaderElement</CODE> objects as its immediate children. The
+ * method <CODE>addHeaderElement</CODE> creates a new <CODE>
+ * HeaderElement</CODE> object and adds it to the <CODE>
+ * SOAPHeader</CODE> object. In the following line of code, the
+ * argument to the method <CODE>addHeaderElement</CODE> is a
+ * <CODE>Name</CODE> object that is the name for the new <CODE>
+ * HeaderElement</CODE> object.</P>
+ * <PRE>
+ * SOAPHeaderElement shElement = sh.addHeaderElement(name);
+ * </PRE>
+ * @see SOAPHeaderElement SOAPHeaderElement
+ */
+public interface SOAPHeader extends SOAPElement {
+
+ /**
+ * Creates a new <CODE>SOAPHeaderElement</CODE> object
+ * initialized with the specified name and adds it to this
+ * <CODE>SOAPHeader</CODE> object.
+ * @param name a <CODE>Name</CODE> object with
+ * the name of the new <CODE>SOAPHeaderElement</CODE>
+ * object
+ * @return the new <CODE>SOAPHeaderElement</CODE> object that
+ * was inserted into this <CODE>SOAPHeader</CODE>
+ * object
+ * @throws SOAPException if a SOAP error occurs
+ */
+ public abstract SOAPHeaderElement addHeaderElement(Name name)
+ throws SOAPException;
+
+ /**
+ * Returns a list of all the <CODE>SOAPHeaderElement</CODE>
+ * objects in this <CODE>SOAPHeader</CODE> object that have the
+ * the specified actor. An actor is a global attribute that
+ * indicates the intermediate parties to whom the message should
+ * be sent. An actor receives the message and then sends it to
+ * the next actor. The default actor is the ultimate intended
+ * recipient for the message, so if no actor attribute is
+ * included in a <CODE>SOAPHeader</CODE> object, the message is
+ * sent to its ultimate destination.
+ * @param actor a <CODE>String</CODE> giving the
+ * URI of the actor for which to search
+ * @return an <CODE>Iterator</CODE> object over all the <CODE>
+ * SOAPHeaderElement</CODE> objects that contain the
+ * specified actor
+ * @see #extractHeaderElements(java.lang.String) extractHeaderElements(java.lang.String)
+ */
+ public abstract Iterator examineHeaderElements(String actor);
+
+ /**
+ * Returns a list of all the <CODE>SOAPHeaderElement</CODE>
+ * objects in this <CODE>SOAPHeader</CODE> object that have
+ * the the specified actor and detaches them from this <CODE>
+ * SOAPHeader</CODE> object.
+ *
+ * <P>This method allows an actor to process only the parts of
+ * the <CODE>SOAPHeader</CODE> object that apply to it and to
+ * remove them before passing the message on to the next
+ * actor.
+ * @param actor a <CODE>String</CODE> giving the
+ * URI of the actor for which to search
+ * @return an <CODE>Iterator</CODE> object over all the <CODE>
+ * SOAPHeaderElement</CODE> objects that contain the
+ * specified actor
+ * @see #examineHeaderElements(java.lang.String) examineHeaderElements(java.lang.String)
+ */
+ public abstract Iterator extractHeaderElements(String actor);
+
+ /**
+ * Returns an <code>Iterator</code> over all the
+ * <code>SOAPHeaderElement</code> objects in this <code>SOAPHeader</code>
+ * object that have the specified actor and that have a MustUnderstand
+ * attribute whose value is equivalent to <code>true</code>.
+ *
+ * @param actor a <code>String</code> giving the URI of the actor for which
+ * to search
+ * @return an <code>Iterator</code> object over all the
+ * <code>SOAPHeaderElement</code> objects that contain the
+ * specified actor and are marked as MustUnderstand
+ */
+ public abstract Iterator examineMustUnderstandHeaderElements(String actor);
+
+ /**
+ * Returns an <code>Iterator</code> over all the
+ * <code>SOAPHeaderElement</code> objects in this <code>SOAPHeader</code>
+ * object.
+ *
+ * @return an <code>Iterator</code> object over all the
+ * <code>SOAPHeaderElement</code> objects contained by this
+ * <code>SOAPHeader</code>
+ */
+ public abstract Iterator examineAllHeaderElements();
+
+ /**
+ * Returns an <code>Iterator</code> over all the
+ * <code>SOAPHeaderElement</code> objects in this <code>SOAPHeader </code>
+ * object and detaches them from this <code>SOAPHeader</code> object.
+ *
+ * @return an <code>Iterator</code> object over all the
+ * <code>SOAPHeaderElement</code> objects contained by this
+ * <code>SOAPHeader</code>
+ */
+ public abstract Iterator extractAllHeaderElements();
+}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPHeaderElement.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPHeaderElement.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPHeaderElement.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPHeaderElement.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+/**
+ * <P>An object representing the contents in the SOAP header part
+ * of the SOAP envelope. The immediate children of a <CODE>
+ * SOAPHeader</CODE> object can be represented only as <CODE>
+ * SOAPHeaderElement</CODE> objects.</P>
+ *
+ * <P>A <CODE>SOAPHeaderElement</CODE> object can have other
+ * <CODE>SOAPElement</CODE> objects as its children.</P>
+ */
+public interface SOAPHeaderElement extends SOAPElement {
+
+ /**
+ * Sets the actor associated with this <CODE>
+ * SOAPHeaderElement</CODE> object to the specified actor. The
+ * default value of an actor is: <CODE>
+ * SOAPConstants.URI_SOAP_ACTOR_NEXT</CODE>
+ * @param actorURI a <CODE>String</CODE> giving
+ * the URI of the actor to set
+ * @see #getActor() getActor()
+ * @throws java.lang.IllegalArgumentException if
+ * there is a problem in setting the actor.
+ */
+ public abstract void setActor(String actorURI);
+
+ /**
+ * Returns the uri of the actor associated with this <CODE>
+ * SOAPHeaderElement</CODE> object.
+ * @return a <CODE>String</CODE> giving the URI of the
+ * actor
+ * @see #setActor(java.lang.String) setActor(java.lang.String)
+ */
+ public abstract String getActor();
+
+ /**
+ * Sets the mustUnderstand attribute for this <CODE>
+ * SOAPHeaderElement</CODE> object to be on or off.
+ *
+ * <P>If the mustUnderstand attribute is on, the actor who
+ * receives the <CODE>SOAPHeaderElement</CODE> must process it
+ * correctly. This ensures, for example, that if the <CODE>
+ * SOAPHeaderElement</CODE> object modifies the message, that
+ * the message is being modified correctly.</P>
+ * @param mustUnderstand <CODE>true</CODE> to
+ * set the mustUnderstand attribute on; <CODE>false</CODE>
+ * to turn if off
+ * @throws java.lang.IllegalArgumentException if
+ * there is a problem in setting the actor.
+ * @see #getMustUnderstand() getMustUnderstand()
+ */
+ public abstract void setMustUnderstand(boolean mustUnderstand);
+
+ /**
+ * Returns whether the mustUnderstand attribute for this
+ * <CODE>SOAPHeaderElement</CODE> object is turned on.
+ * @return <CODE>true</CODE> if the mustUnderstand attribute of
+ * this <CODE>SOAPHeaderElement</CODE> object is turned on;
+ * <CODE>false</CODE> otherwise
+ */
+ public abstract boolean getMustUnderstand();
+}
Added: webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPMessage.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPMessage.java?rev=179806&view=auto
==============================================================================
--- webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPMessage.java (added)
+++ webservices/axis/trunk/archive/java/scratch/ashu_jaya_venkat/saaj/src/javax/xml/soap/SOAPMessage.java Fri Jun 3 07:54:42 2005
@@ -0,0 +1,378 @@
+/*
+ * Copyright 2001-2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.xml.soap;
+
+//import javax.activation.DataHandler;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Iterator;
+
+/**
+ * <P>The root class for all SOAP messages. As transmitted on the
+ * "wire", a SOAP message is an XML document or a MIME message
+ * whose first body part is an XML/SOAP document.</P>
+ *
+ * <P>A <CODE>SOAPMessage</CODE> object consists of a SOAP part
+ * and optionally one or more attachment parts. The SOAP part for
+ * a <CODE>SOAPMessage</CODE> object is a <CODE>SOAPPart</CODE>
+ * object, which contains information used for message routing and
+ * identification, and which can contain application-specific
+ * content. All data in the SOAP Part of a message must be in XML
+ * format.</P>
+ *
+ * <P>A new <CODE>SOAPMessage</CODE> object contains the following
+ * by default:</P>
+ *
+ * <UL>
+ * <LI>A <CODE>SOAPPart</CODE> object</LI>
+ *
+ * <LI>A <CODE>SOAPEnvelope</CODE> object</LI>
+ *
+ * <LI>A <CODE>SOAPBody</CODE> object</LI>
+ *
+ * <LI>A <CODE>SOAPHeader</CODE> object</LI>
+ * </UL>
+ * The SOAP part of a message can be retrieved by calling the
+ * method <CODE>SOAPMessage.getSOAPPart()</CODE>. The <CODE>
+ * SOAPEnvelope</CODE> object is retrieved from the <CODE>
+ * SOAPPart</CODE> object, and the <CODE>SOAPEnvelope</CODE>
+ * object is used to retrieve the <CODE>SOAPBody</CODE> and <CODE>
+ * SOAPHeader</CODE> objects.
+ * <PRE>
+ * SOAPPart sp = message.getSOAPPart();
+ * SOAPEnvelope se = sp.getEnvelope();
+ * SOAPBody sb = se.getBody();
+ * SOAPHeader sh = se.getHeader();
+ * </PRE>
+ *
+ * <P>In addition to the mandatory <CODE>SOAPPart</CODE> object, a
+ * <CODE>SOAPMessage</CODE> object may contain zero or more <CODE>
+ * AttachmentPart</CODE> objects, each of which contains
+ * application-specific data. The <CODE>SOAPMessage</CODE>
+ * interface provides methods for creating <CODE>
+ * AttachmentPart</CODE> objects and also for adding them to a
+ * <CODE>SOAPMessage</CODE> object. A party that has received a
+ * <CODE>SOAPMessage</CODE> object can examine its contents by
+ * retrieving individual attachment parts.</P>
+ *
+ * <P>Unlike the rest of a SOAP message, an attachment is not
+ * required to be in XML format and can therefore be anything from
+ * simple text to an image file. Consequently, any message content
+ * that is not in XML format must be in an <CODE>
+ * AttachmentPart</CODE> object.</P>
+ *
+ * <P>A <CODE>MessageFactory</CODE> object creates new <CODE>
+ * SOAPMessage</CODE> objects. If the <CODE>MessageFactory</CODE>
+ * object was initialized with a messaging Profile, it produces
+ * <CODE>SOAPMessage</CODE> objects that conform to that Profile.
+ * For example, a <CODE>SOAPMessage</CODE> object created by a
+ * <CODE>MessageFactory</CODE> object initialized with the ebXML
+ * Profile will have the appropriate ebXML headers.</P>
+ * @see MessageFactory MessageFactory
+ * @see AttachmentPart AttachmentPart
+ */
+public abstract class SOAPMessage {
+
+ public SOAPMessage() {}
+
+ /**
+ * Retrieves a description of this <CODE>SOAPMessage</CODE>
+ * object's content.
+ * @return a <CODE>String</CODE> describing the content of this
+ * message or <CODE>null</CODE> if no description has been
+ * set
+ * @see #setContentDescription(java.lang.String) setContentDescription(java.lang.String)
+ */
+ public abstract String getContentDescription();
+
+ /**
+ * Sets the description of this <CODE>SOAPMessage</CODE>
+ * object's content with the given description.
+ * @param description a <CODE>String</CODE>
+ * describing the content of this message
+ * @see #getContentDescription() getContentDescription()
+ */
+ public abstract void setContentDescription(String description);
+
+ /**
+ * Gets the SOAP part of this <CODE>SOAPMessage</CODE> object.
+ *
+ *
+ * <P>If a <CODE>SOAPMessage</CODE> object contains one or
+ * more attachments, the SOAP Part must be the first MIME body
+ * part in the message.</P>
+ * @return the <CODE>SOAPPart</CODE> object for this <CODE>
+ * SOAPMessage</CODE> object
+ */
+ public abstract SOAPPart getSOAPPart();
+
+ /**
+ * Removes all <CODE>AttachmentPart</CODE> objects that have
+ * been added to this <CODE>SOAPMessage</CODE> object.
+ *
+ * <P>This method does not touch the SOAP part.</P>
+ */
+ public abstract void removeAllAttachments();
+
+ /**
+ * Gets a count of the number of attachments in this
+ * message. This count does not include the SOAP part.
+ * @return the number of <CODE>AttachmentPart</CODE> objects
+ * that are part of this <CODE>SOAPMessage</CODE>
+ * object
+ */
+ public abstract int countAttachments();
+
+ /**
+ * Retrieves all the <CODE>AttachmentPart</CODE> objects
+ * that are part of this <CODE>SOAPMessage</CODE> object.
+ * @return an iterator over all the attachments in this
+ * message
+ */
+ public abstract Iterator getAttachments();
+
+ /**
+ * Retrieves all the <CODE>AttachmentPart</CODE> objects
+ * that have header entries that match the specified headers.
+ * Note that a returned attachment could have headers in
+ * addition to those specified.
+ * @param headers a <CODE>MimeHeaders</CODE>
+ * object containing the MIME headers for which to
+ * search
+ * @return an iterator over all attachments that have a header
+ * that matches one of the given headers
+ */
+ public abstract Iterator getAttachments(MimeHeaders headers);
+
+ /**
+ * Adds the given <CODE>AttachmentPart</CODE> object to this
+ * <CODE>SOAPMessage</CODE> object. An <CODE>
+ * AttachmentPart</CODE> object must be created before it can be
+ * added to a message.
+ * @param attachmentpart an <CODE>
+ * AttachmentPart</CODE> object that is to become part of
+ * this <CODE>SOAPMessage</CODE> object
+ * @throws java.lang.IllegalArgumentException
+ */
+ public abstract void addAttachmentPart(AttachmentPart attachmentpart);
+
+ /**
+ * Creates a new empty <CODE>AttachmentPart</CODE> object.
+ * Note that the method <CODE>addAttachmentPart</CODE> must be
+ * called with this new <CODE>AttachmentPart</CODE> object as
+ * the parameter in order for it to become an attachment to this
+ * <CODE>SOAPMessage</CODE> object.
+ * @return a new <CODE>AttachmentPart</CODE> object that can be
+ * populated and added to this <CODE>SOAPMessage</CODE>
+ * object
+ */
+ public abstract AttachmentPart createAttachmentPart();
+
+ /**
+ * Creates an <CODE>AttachmentPart</CODE> object and
+ * populates it using the given <CODE>DataHandler</CODE>
+ * object.
+ * @param datahandler the <CODE>
+ * javax.activation.DataHandler</CODE> object that will
+ * generate the content for this <CODE>SOAPMessage</CODE>
+ * object
+ * @return a new <CODE>AttachmentPart</CODE> object that
+ * contains data generated by the given <CODE>
+ * DataHandler</CODE> object
+ * @throws java.lang.IllegalArgumentException if
+ * there was a problem with the specified <CODE>
+ * DataHandler</CODE> object
+ * @see DataHandler DataHandler
+ * @see javax.activation.DataContentHandler DataContentHandler
+ */
+ /*public AttachmentPart createAttachmentPart(DataHandler datahandler) {
+
+ AttachmentPart attachmentpart = createAttachmentPart();
+
+ attachmentpart.setDataHandler(datahandler);
+
+ return attachmentpart;
+ }*/
+
+ /**
+ * Returns all the transport-specific MIME headers for this
+ * <CODE>SOAPMessage</CODE> object in a transport-independent
+ * fashion.
+ * @return a <CODE>MimeHeaders</CODE> object containing the
+ * <CODE>MimeHeader</CODE> objects
+ */
+ public abstract MimeHeaders getMimeHeaders();
+
+ /**
+ * Creates an <CODE>AttachmentPart</CODE> object and
+ * populates it with the specified data of the specified content
+ * type.
+ * @param content an <CODE>Object</CODE>
+ * containing the content for this <CODE>SOAPMessage</CODE>
+ * object
+ * @param contentType a <CODE>String</CODE>
+ * object giving the type of content; examples are
+ * "text/xml", "text/plain", and "image/jpeg"
+ * @return a new <CODE>AttachmentPart</CODE> object that
+ * contains the given data
+ * @throws java.lang.IllegalArgumentException if the contentType does not match the type of the content
+ * object, or if there was no <CODE>
+ * DataContentHandler</CODE> object for the given content
+ * object
+ * @see DataHandler DataHandler
+ * @see javax.activation.DataContentHandler DataContentHandler
+ */
+ public AttachmentPart createAttachmentPart(Object content,
+ String contentType) {
+
+ AttachmentPart attachmentpart = createAttachmentPart();
+
+ attachmentpart.setContent(content, contentType);
+
+ return attachmentpart;
+ }
+
+ /**
+ * Updates this <CODE>SOAPMessage</CODE> 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 <CODE>ProviderConnection.send</CODE>, <CODE>
+ * SOAPConnection.call</CODE>, or <CODE>
+ * SOAPMessage.writeTo</CODE>. However, if changes are made to
+ * a message that was received or to one that has already been
+ * sent, the method <CODE>saveChanges</CODE> needs to be
+ * called explicitly in order to save the changes. The method
+ * <CODE>saveChanges</CODE> 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 <CODE>saveChanges</CODE> has been
+ * called.
+ *
+ * <P>In addition, this method marks the point at which the
+ * data from all constituent <CODE>AttachmentPart</CODE>
+ * objects are pulled into the message.</P>
+ * @throws SOAPException if there
+ * was a problem saving changes to this message.
+ */
+ public abstract void saveChanges() throws SOAPException;
+
+ /**
+ * Indicates whether this <CODE>SOAPMessage</CODE> object
+ * has had the method <CODE>saveChanges</CODE> called on
+ * it.
+ * @return <CODE>true</CODE> if <CODE>saveChanges</CODE> has
+ * been called on this message at least once; <CODE>
+ * false</CODE> otherwise.
+ */
+ public abstract boolean saveRequired();
+
+ /**
+ * Writes this <CODE>SOAPMessage</CODE> object to the given
+ * output stream. The externalization format is as defined by
+ * the SOAP 1.1 with Attachments specification.
+ *
+ * <P>If there are no attachments, just an XML stream is
+ * written out. For those messages that have attachments,
+ * <CODE>writeTo</CODE> writes a MIME-encoded byte stream.</P>
+ * @param out the <CODE>OutputStream</CODE>
+ * object to which this <CODE>SOAPMessage</CODE> object will
+ * be written
+ * @throws SOAPException if there was a problem in
+ * externalizing this SOAP message
+ * @throws IOException if an I/O error
+ * occurs
+ */
+ public abstract void writeTo(OutputStream out)
+ throws SOAPException, IOException;
+
+ /**
+ * Gets the SOAP Body contained in this <code>SOAPMessage</code> object.
+ *
+ * @return the <code>SOAPBody</code> object contained by this
+ * <code>SOAPMessage</code> object
+ * @throws SOAPException if the SOAP Body does not exist or cannot be
+ * retrieved
+ */
+ public SOAPBody getSOAPBody() throws SOAPException {
+ throw new UnsupportedOperationException("getSOAPBody must be overridden in subclasses of SOAPMessage");
+ }
+
+ /**
+ * Gets the SOAP Header contained in this <code>SOAPMessage</code> object.
+ *
+ * @return the <code>SOAPHeader</code> object contained by this
+ * <code>SOAPMessage</code> object
+ * @throws SOAPException if the SOAP Header does not exist or cannot be
+ * retrieved
+ */
+ public SOAPHeader getSOAPHeader() throws SOAPException {
+ throw new UnsupportedOperationException("getSOAPHeader must be overridden in subclasses of SOAPMessage");
+ }
+
+ /**
+ * Associates the specified value with the specified property. If there was
+ * already a value associated with this property, the old value is replaced.
+ * <p>
+ * The valid property names include <code>WRITE_XML_DECLARATION</code> and
+ * <code>CHARACTER_SET_ENCODING</code>. 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.
+ * <p>
+ * Setting the property <code>WRITE_XML_DECLARATION</code> to
+ * <code>"true"</code> will cause an XML Declaration to be written out at
+ * the start of the SOAP message. The default value of "false" suppresses
+ * this declaration.
+ * <p>
+ * The property <code>CHARACTER_SET_ENCODING</code> defaults to the value
+ * <code>"utf-8"</code> which causes the SOAP message to be encoded using
+ * UTF-8. Setting <code>CHARACTER_SET_ENCODING</code> to
+ * <code>"utf-16"</code> causes the SOAP message to be encoded using UTF-16.
+ * <p>
+ * Some implementations may allow encodings in addition to UTF-8 and UTF-16.
+ * Refer to your vendor's documentation for details.
+ *
+ * @param property the property with which the specified value is to be
+ * associated
+ * @param value the value to be associated with the specified property
+ * @throws SOAPException if the property name is not recognized
+ */
+ public void setProperty(String property, Object value)
+ throws SOAPException {
+ throw new UnsupportedOperationException("setProperty must be overridden in subclasses of SOAPMessage");
+ }
+
+ /**
+ * Retrieves value of the specified property.
+ *
+ * @param property the name of the property to retrieve
+ * @return the value of the property or <code>null</code> if no such
+ * property exists
+ * @throws SOAPException if the property name is not recognized
+ */
+ public Object getProperty(String property) throws SOAPException {
+ throw new UnsupportedOperationException("getProperty must be overridden in subclasses of SOAPMessage");
+ }
+
+ /** Specifies the character type encoding for the SOAP Message. */
+ public static final String CHARACTER_SET_ENCODING
+ = "javax.xml.soap.character-set-encoding";
+
+ /** Specifies whether the SOAP Message should contain an XML declaration. */
+ public static final String WRITE_XML_DECLARATION
+ = "javax.xml.soap.write-xml-declaration";
+}