src/share/jaxws_classes/javax/xml/soap/SOAPElement.java

Thu, 31 Aug 2017 15:18:52 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:18:52 +0800
changeset 637
9c07ef4934dd
parent 368
0989ad8c0860
parent 0
373ffda63c9a
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Oracle in the LICENSE file that accompanied this code.
    10  *
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14  * version 2 for more details (a copy is included in the LICENSE file that
    15  * accompanied this code).
    16  *
    17  * You should have received a copy of the GNU General Public License version
    18  * 2 along with this work; if not, write to the Free Software Foundation,
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20  *
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    22  * or visit www.oracle.com if you need additional information or have any
    23  * questions.
    24  */
    26 package javax.xml.soap;
    28 import java.util.Iterator;
    30 import javax.xml.namespace.QName;
    32 /**
    33  * An object representing an element of a SOAP message that is allowed but not
    34  * specifically prescribed by a SOAP specification. This interface serves as the
    35  * base interface for those objects that are specifically prescribed by a SOAP
    36  * specification.
    37  * <p>
    38  * Methods in this interface that are required to return SAAJ specific objects
    39  * may "silently" replace nodes in the tree as required to successfully return
    40  * objects of the correct type. See {@link #getChildElements()} and
    41  * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
    42  * for details.
    43  */
    44 public interface SOAPElement extends Node, org.w3c.dom.Element {
    46     /**
    47      * Creates a new <code>SOAPElement</code> object initialized with the
    48      * given <code>Name</code> object and adds the new element to this
    49      * <code>SOAPElement</code> object.
    50      * <P>
    51      * This method may be deprecated in a future release of SAAJ in favor of
    52      * addChildElement(javax.xml.namespace.QName)
    53      *
    54      * @param name a <code>Name</code> object with the XML name for the
    55      *        new element
    56      *
    57      * @return the new <code>SOAPElement</code> object that was created
    58      * @exception SOAPException if there is an error in creating the
    59      *                          <code>SOAPElement</code> object
    60      * @see SOAPElement#addChildElement(javax.xml.namespace.QName)
    61      */
    62     public SOAPElement addChildElement(Name name) throws SOAPException;
    64     /**
    65      * Creates a new <code>SOAPElement</code> object initialized with the given
    66      * <code>QName</code> object and adds the new element to this <code>SOAPElement</code>
    67      *  object. The  <i>namespace</i>, <i>localname</i> and <i>prefix</i> of the new
    68      * <code>SOAPElement</code> are all taken  from the <code>qname</code> argument.
    69      *
    70      * @param qname a <code>QName</code> object with the XML name for the
    71      *        new element
    72      *
    73      * @return the new <code>SOAPElement</code> object that was created
    74      * @exception SOAPException if there is an error in creating the
    75      *                          <code>SOAPElement</code> object
    76      * @see SOAPElement#addChildElement(Name)
    77      * @since SAAJ 1.3
    78      */
    79     public SOAPElement addChildElement(QName qname) throws SOAPException;
    81     /**
    82      * Creates a new <code>SOAPElement</code> object initialized with the
    83      * specified local name and adds the new element to this
    84      * <code>SOAPElement</code> object.
    85      * The new  <code>SOAPElement</code> inherits any in-scope default namespace.
    86      *
    87      * @param localName a <code>String</code> giving the local name for
    88      *          the element
    89      * @return the new <code>SOAPElement</code> object that was created
    90      * @exception SOAPException if there is an error in creating the
    91      *                          <code>SOAPElement</code> object
    92      */
    93     public SOAPElement addChildElement(String localName) throws SOAPException;
    95     /**
    96      * Creates a new <code>SOAPElement</code> object initialized with the
    97      * specified local name and prefix and adds the new element to this
    98      * <code>SOAPElement</code> object.
    99      *
   100      * @param localName a <code>String</code> giving the local name for
   101      *        the new element
   102      * @param prefix a <code>String</code> giving the namespace prefix for
   103      *        the new element
   104      *
   105      * @return the new <code>SOAPElement</code> object that was created
   106      * @exception SOAPException if the <code>prefix</code> is not valid in the
   107      *         context of this <code>SOAPElement</code> or  if there is an error in creating the
   108      *                          <code>SOAPElement</code> object
   109      */
   110     public SOAPElement addChildElement(String localName, String prefix)
   111         throws SOAPException;
   113     /**
   114      * Creates a new <code>SOAPElement</code> object initialized with the
   115      * specified local name, prefix, and URI and adds the new element to this
   116      * <code>SOAPElement</code> object.
   117      *
   118      * @param localName a <code>String</code> giving the local name for
   119      *        the new element
   120      * @param prefix a <code>String</code> giving the namespace prefix for
   121      *        the new element
   122      * @param uri a <code>String</code> giving the URI of the namespace
   123      *        to which the new element belongs
   124      *
   125      * @return the new <code>SOAPElement</code> object that was created
   126      * @exception SOAPException if there is an error in creating the
   127      *                          <code>SOAPElement</code> object
   128      */
   129     public SOAPElement addChildElement(String localName, String prefix,
   130                                        String uri)
   131         throws SOAPException;
   133     /**
   134      * Add a <code>SOAPElement</code> as a child of this
   135      * <code>SOAPElement</code> instance. The <code>SOAPElement</code>
   136      * is expected to be created by a
   137      * <code>SOAPFactory</code>. Callers should not rely on the
   138      * element instance being added as is into the XML
   139      * tree. Implementations could end up copying the content
   140      * of the <code>SOAPElement</code> passed into an instance of
   141      * a different <code>SOAPElement</code> implementation. For
   142      * instance if <code>addChildElement()</code> is called on a
   143      * <code>SOAPHeader</code>, <code>element</code> will be copied
   144      * into an instance of a <code>SOAPHeaderElement</code>.
   145      *
   146      * <P>The fragment rooted in <code>element</code> is either added
   147      * as a whole or not at all, if there was an error.
   148      *
   149      * <P>The fragment rooted in <code>element</code> cannot contain
   150      * elements named "Envelope", "Header" or "Body" and in the SOAP
   151      * namespace. Any namespace prefixes present in the fragment
   152      * should be fully resolved using appropriate namespace
   153      * declarations within the fragment itself.
   154      *
   155      * @param element the <code>SOAPElement</code> to be added as a
   156      *                new child
   157      *
   158      * @exception SOAPException if there was an error in adding this
   159      *                          element as a child
   160      *
   161      * @return an instance representing the new SOAP element that was
   162      *         actually added to the tree.
   163      */
   164     public SOAPElement addChildElement(SOAPElement element)
   165         throws SOAPException;
   167     /**
   168      * Detaches all children of this <code>SOAPElement</code>.
   169      * <p>
   170      * This method is useful for rolling back the construction of partially
   171      * completed <code>SOAPHeaders</code> and <code>SOAPBodys</code> in
   172      * preparation for sending a fault when an error condition is detected. It
   173      * is also useful for recycling portions of a document within a SOAP
   174      * message.
   175      *
   176      * @since SAAJ 1.2
   177      */
   178     public abstract void removeContents();
   180     /**
   181      * Creates a new <code>Text</code> object initialized with the given
   182      * <code>String</code> and adds it to this <code>SOAPElement</code> object.
   183      *
   184      * @param text a <code>String</code> object with the textual content to be added
   185      *
   186      * @return the <code>SOAPElement</code> object into which
   187      *         the new <code>Text</code> object was inserted
   188      * @exception SOAPException if there is an error in creating the
   189      *                    new <code>Text</code> object or if it is not legal to
   190      *                      attach it as a child to this
   191      *                      <code>SOAPElement</code>
   192      */
   193     public SOAPElement addTextNode(String text) throws SOAPException;
   195     /**
   196      * Adds an attribute with the specified name and value to this
   197      * <code>SOAPElement</code> object.
   198      *
   199      * @param name a <code>Name</code> object with the name of the attribute
   200      * @param value a <code>String</code> giving the value of the attribute
   201      * @return the <code>SOAPElement</code> object into which the attribute was
   202      *         inserted
   203      *
   204      * @exception SOAPException if there is an error in creating the
   205      *                          Attribute, or it is invalid to set
   206                                 an attribute with <code>Name</code>
   207                                  <code>name</code> on this SOAPElement.
   208      * @see SOAPElement#addAttribute(javax.xml.namespace.QName, String)
   209      */
   210     public SOAPElement addAttribute(Name name, String value)
   211         throws SOAPException;
   213     /**
   214      * Adds an attribute with the specified name and value to this
   215      * <code>SOAPElement</code> object.
   216      *
   217      * @param qname a <code>QName</code> object with the name of the attribute
   218      * @param value a <code>String</code> giving the value of the attribute
   219      * @return the <code>SOAPElement</code> object into which the attribute was
   220      *         inserted
   221      *
   222      * @exception SOAPException if there is an error in creating the
   223      *                          Attribute, or it is invalid to set
   224                                 an attribute with <code>QName</code>
   225                                 <code>qname</code> on this SOAPElement.
   226      * @see SOAPElement#addAttribute(Name, String)
   227      * @since SAAJ 1.3
   228      */
   229     public SOAPElement addAttribute(QName qname, String value)
   230         throws SOAPException;
   232     /**
   233      * Adds a namespace declaration with the specified prefix and URI to this
   234      * <code>SOAPElement</code> object.
   235      *
   236      * @param prefix a <code>String</code> giving the prefix of the namespace
   237      * @param uri a <code>String</code> giving the uri of the namespace
   238      * @return the <code>SOAPElement</code> object into which this
   239      *          namespace declaration was inserted.
   240      *
   241      * @exception SOAPException if there is an error in creating the
   242      *                          namespace
   243      */
   244     public SOAPElement addNamespaceDeclaration(String prefix, String uri)
   245         throws SOAPException;
   247     /**
   248      * Returns the value of the attribute with the specified name.
   249      *
   250      * @param name a <code>Name</code> object with the name of the attribute
   251      * @return a <code>String</code> giving the value of the specified
   252      *         attribute, Null if there is no such attribute
   253      * @see SOAPElement#getAttributeValue(javax.xml.namespace.QName)
   254      */
   255     public String getAttributeValue(Name name);
   257     /**
   258      * Returns the value of the attribute with the specified qname.
   259      *
   260      * @param qname a <code>QName</code> object with the qname of the attribute
   261      * @return a <code>String</code> giving the value of the specified
   262      *         attribute, Null if there is no such attribute
   263      * @see SOAPElement#getAttributeValue(Name)
   264      * @since SAAJ 1.3
   265      */
   266     public String getAttributeValue(QName qname);
   268     /**
   269      * Returns an <code>Iterator</code> over all of the attribute
   270      * <code>Name</code> objects in this
   271      * <code>SOAPElement</code> object. The iterator can be used to get
   272      * the attribute names, which can then be passed to the method
   273      * <code>getAttributeValue</code> to retrieve the value of each
   274      * attribute.
   275      *
   276      * @see SOAPElement#getAllAttributesAsQNames()
   277      * @return an iterator over the names of the attributes
   278      */
   279     public Iterator getAllAttributes();
   281     /**
   282      * Returns an <code>Iterator</code> over all of the attributes
   283      * in this <code>SOAPElement</code>  as <code>QName</code> objects.
   284      * The iterator can be used to get the attribute QName, which can then
   285      * be passed to the method <code>getAttributeValue</code> to retrieve
   286      * the value of each attribute.
   287      *
   288      * @return an iterator over the QNames of the attributes
   289      * @see SOAPElement#getAllAttributes()
   290      * @since SAAJ 1.3
   291      */
   292     public Iterator getAllAttributesAsQNames();
   295     /**
   296      * Returns the URI of the namespace that has the given prefix.
   297      *
   298      * @param prefix a <code>String</code> giving the prefix of the namespace
   299      *        for which to search
   300      * @return a <code>String</code> with the uri of the namespace that has
   301      *        the given prefix
   302      */
   303     public String getNamespaceURI(String prefix);
   305     /**
   306      * Returns an <code>Iterator</code> over the namespace prefix
   307      * <code>String</code>s declared by this element. The prefixes returned by
   308      * this iterator can be passed to the method
   309      * <code>getNamespaceURI</code> to retrieve the URI of each namespace.
   310      *
   311      * @return an iterator over the namespace prefixes in this
   312      *         <code>SOAPElement</code> object
   313      */
   314     public Iterator getNamespacePrefixes();
   316     /**
   317      * Returns an <code>Iterator</code> over the namespace prefix
   318      * <code>String</code>s visible to this element. The prefixes returned by
   319      * this iterator can be passed to the method
   320      * <code>getNamespaceURI</code> to retrieve the URI of each namespace.
   321      *
   322      * @return an iterator over the namespace prefixes are within scope of this
   323      *         <code>SOAPElement</code> object
   324      *
   325      * @since SAAJ 1.2
   326      */
   327     public Iterator getVisibleNamespacePrefixes();
   329     /**
   330      * Creates a <code>QName</code> whose namespace URI is the one associated
   331      * with the parameter, <code>prefix</code>, in the context of this
   332      * <code>SOAPElement</code>. The remaining elements of the new
   333      * <code>QName</code> are taken directly from the parameters,
   334      * <code>localName</code> and <code>prefix</code>.
   335      *
   336      * @param localName
   337      *          a <code>String</code> containing the local part of the name.
   338      * @param prefix
   339      *          a <code>String</code> containing the prefix for the name.
   340      *
   341      * @return a <code>QName</code> with the specified <code>localName</code>
   342      *          and <code>prefix</code>, and with a namespace that is associated
   343      *          with the <code>prefix</code> in the context of this
   344      *          <code>SOAPElement</code>. This namespace will be the same as
   345      *          the one that would be returned by
   346      *          <code>{@link #getNamespaceURI(String)}</code> if it were given
   347      *          <code>prefix</code> as it's parameter.
   348      *
   349      * @exception SOAPException if the <code>QName</code> cannot be created.
   350      *
   351      * @since SAAJ 1.3
   352      */
   353     public QName createQName(String localName, String prefix)
   354         throws SOAPException;
   355     /**
   356      * Returns the name of this <code>SOAPElement</code> object.
   357      *
   358      * @return a <code>Name</code> object with the name of this
   359      *         <code>SOAPElement</code> object
   360      */
   361     public Name getElementName();
   363     /**
   364      * Returns the qname of this <code>SOAPElement</code> object.
   365      *
   366      * @return a <code>QName</code> object with the qname of this
   367      *         <code>SOAPElement</code> object
   368      * @see SOAPElement#getElementName()
   369      * @since SAAJ 1.3
   370      */
   371     public QName getElementQName();
   373     /**
   374     * Changes the name of this <code>Element</code> to <code>newName</code> if
   375     * possible. SOAP Defined elements such as SOAPEnvelope, SOAPHeader, SOAPBody
   376     * etc. cannot have their names changed using this method. Any attempt to do
   377     * so will result in a  SOAPException being thrown.
   378     *<P>
   379     * Callers should not rely on the element instance being renamed as is.
   380     * Implementations could end up copying the content of the
   381     * <code>SOAPElement</code> to a renamed instance.
   382     *
   383     * @param newName the new name for the <code>Element</code>.
   384     *
   385     * @exception SOAPException if changing the name of this <code>Element</code>
   386     *                          is not allowed.
   387     * @return The renamed Node
   388     *
   389     * @since SAAJ 1.3
   390     */
   391    public SOAPElement setElementQName(QName newName) throws SOAPException;
   393    /**
   394      * Removes the attribute with the specified name.
   395      *
   396      * @param name the <code>Name</code> object with the name of the
   397      *        attribute to be removed
   398      * @return <code>true</code> if the attribute was
   399      *         removed successfully; <code>false</code> if it was not
   400      * @see SOAPElement#removeAttribute(javax.xml.namespace.QName)
   401      */
   402     public boolean removeAttribute(Name name);
   404     /**
   405      * Removes the attribute with the specified qname.
   406      *
   407      * @param qname the <code>QName</code> object with the qname of the
   408      *        attribute to be removed
   409      * @return <code>true</code> if the attribute was
   410      *         removed successfully; <code>false</code> if it was not
   411      * @see SOAPElement#removeAttribute(Name)
   412      * @since SAAJ 1.3
   413      */
   414     public boolean removeAttribute(QName qname);
   416     /**
   417      * Removes the namespace declaration corresponding to the given prefix.
   418      *
   419      * @param prefix a <code>String</code> giving the prefix for which
   420      *        to search
   421      * @return <code>true</code> if the namespace declaration was
   422      *         removed successfully; <code>false</code> if it was not
   423      */
   424     public boolean removeNamespaceDeclaration(String prefix);
   426     /**
   427      * Returns an <code>Iterator</code> over all the immediate child
   428      * {@link Node}s of this element. This includes <code>javax.xml.soap.Text</code>
   429      * objects as well as <code>SOAPElement</code> objects.
   430      * <p>
   431      * Calling this method may cause child <code>Element</code>,
   432      * <code>SOAPElement</code> and <code>org.w3c.dom.Text</code> nodes to be
   433      * replaced by <code>SOAPElement</code>, <code>SOAPHeaderElement</code>,
   434      * <code>SOAPBodyElement</code> or <code>javax.xml.soap.Text</code> nodes as
   435      * appropriate for the type of this parent node. As a result the calling
   436      * application must treat any existing references to these child nodes that
   437      * have been obtained through DOM APIs as invalid and either discard them or
   438      * refresh them with the values returned by this <code>Iterator</code>. This
   439      * behavior can be avoided by calling the equivalent DOM APIs. See
   440      * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
   441      * for more details.
   442      *
   443      * @return an iterator with the content of this <code>SOAPElement</code>
   444      *         object
   445      */
   446     public Iterator getChildElements();
   448     /**
   449      * Returns an <code>Iterator</code> over all the immediate child
   450      * {@link Node}s of this element with the specified name. All of these
   451      * children will be <code>SOAPElement</code> nodes.
   452      * <p>
   453      * Calling this method may cause child <code>Element</code>,
   454      * <code>SOAPElement</code> and <code>org.w3c.dom.Text</code> nodes to be
   455      * replaced by <code>SOAPElement</code>, <code>SOAPHeaderElement</code>,
   456      * <code>SOAPBodyElement</code> or <code>javax.xml.soap.Text</code> nodes as
   457      * appropriate for the type of this parent node. As a result the calling
   458      * application must treat any existing references to these child nodes that
   459      * have been obtained through DOM APIs as invalid and either discard them or
   460      * refresh them with the values returned by this <code>Iterator</code>. This
   461      * behavior can be avoided by calling the equivalent DOM APIs. See
   462      * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
   463      * for more details.
   464      *
   465      * @param name a <code>Name</code> object with the name of the child
   466      *        elements to be returned
   467      *
   468      * @return an <code>Iterator</code> object over all the elements
   469      *         in this <code>SOAPElement</code> object with the
   470      *         specified name
   471      * @see SOAPElement#getChildElements(javax.xml.namespace.QName)
   472      */
   473     public Iterator getChildElements(Name name);
   475     /**
   476      * Returns an <code>Iterator</code> over all the immediate child
   477      * {@link Node}s of this element with the specified qname. All of these
   478      * children will be <code>SOAPElement</code> nodes.
   479      * <p>
   480      * Calling this method may cause child <code>Element</code>,
   481      * <code>SOAPElement</code> and <code>org.w3c.dom.Text</code> nodes to be
   482      * replaced by <code>SOAPElement</code>, <code>SOAPHeaderElement</code>,
   483      * <code>SOAPBodyElement</code> or <code>javax.xml.soap.Text</code> nodes as
   484      * appropriate for the type of this parent node. As a result the calling
   485      * application must treat any existing references to these child nodes that
   486      * have been obtained through DOM APIs as invalid and either discard them or
   487      * refresh them with the values returned by this <code>Iterator</code>. This
   488      * behavior can be avoided by calling the equivalent DOM APIs. See
   489      * {@link <a HREF="package-summary.html#package_description">javax.xml.soap<a>}
   490      * for more details.
   491      *
   492      * @param qname a <code>QName</code> object with the qname of the child
   493      *        elements to be returned
   494      *
   495      * @return an <code>Iterator</code> object over all the elements
   496      *         in this <code>SOAPElement</code> object with the
   497      *         specified qname
   498      * @see SOAPElement#getChildElements(Name)
   499      * @since SAAJ 1.3
   500      */
   501     public Iterator getChildElements(QName qname);
   503     /**
   504      * Sets the encoding style for this <code>SOAPElement</code> object
   505      * to one specified.
   506      *
   507      * @param encodingStyle a <code>String</code> giving the encoding style
   508      *
   509      * @exception IllegalArgumentException if there was a problem in the
   510      *            encoding style being set.
   511      * @exception SOAPException if setting the encodingStyle is invalid for this SOAPElement.
   512      * @see #getEncodingStyle
   513      */
   514     public void setEncodingStyle(String encodingStyle)
   515         throws SOAPException;
   516     /**
   517      * Returns the encoding style for this <code>SOAPElement</code> object.
   518      *
   519      * @return a <code>String</code> giving the encoding style
   520      *
   521      * @see #setEncodingStyle
   522      */
   523     public String getEncodingStyle();
   524 }

mercurial