001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements. See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership. The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with the License. You may obtain a copy of the License at
009     *
010     * http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing,
013     * software distributed under the License is distributed on an
014     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     * KIND, either express or implied. See the License for the
016     * specific language governing permissions and limitations
017     * under the License.
018     */
019    package javax.xml.soap;
020    
021    import org.w3c.dom.Document;
022    
023    import java.util.Locale;
024    
025    /**
026     * An object that represents the contents of the SOAP body element in a SOAP message. A SOAP body
027     * element consists of XML data that affects the way the application-specific content is processed.
028     * <p/>
029     * A <code>SOAPBody</code> object contains <code>SOAPBodyElement</code> objects, which have the
030     * content for the SOAP body. A <code>SOAPFault</code> object, which carries status and/or error
031     * information, is an example of a <code>SOAPBodyElement</code> object.
032     *
033     * @see SOAPFault SOAPFault
034     */
035    public interface SOAPBody extends SOAPElement {
036    
037        /**
038         * Creates a new <code>SOAPFault</code> object and adds it to this <code>SOAPBody</code>
039         * object.
040         *
041         * @return the new <code>SOAPFault</code> object
042         * @throws SOAPException if there is a SOAP error
043         */
044        public abstract SOAPFault addFault() throws SOAPException;
045    
046        /**
047         * Indicates whether a <code>SOAPFault</code> object exists in this <code>SOAPBody</code>
048         * object.
049         *
050         * @return <code>true</code> if a <code>SOAPFault</code> object exists in this
051         *         <code>SOAPBody</code> object; <code>false</code> otherwise
052         */
053        public abstract boolean hasFault();
054    
055        /**
056         * Returns the <code>SOAPFault</code> object in this <code>SOAPBody</code> object.
057         *
058         * @return the <code>SOAPFault</code> object in this <code>SOAPBody</code> object
059         */
060        public abstract SOAPFault getFault();
061    
062        /**
063         * Creates a new <code>SOAPBodyElement</code> object with the specified name and adds it to this
064         * <code>SOAPBody</code> object.
065         *
066         * @param name a <code>Name</code> object with the name for the new <code>SOAPBodyElement</code>
067         *             object
068         * @return the new <code>SOAPBodyElement</code> object
069         * @throws SOAPException if a SOAP error occurs
070         */
071        public abstract SOAPBodyElement addBodyElement(Name name)
072                throws SOAPException;
073    
074        /**
075         * Creates a new <code>SOAPFault</code> object and adds it to this <code>SOAPBody</code> object.
076         * The new <code>SOAPFault</code> will have a <code>faultcode</code> element that is set to the
077         * <code>faultCode</code> parameter and a <code>faultstring</code> set to
078         * <code>faultstring</code> and localized to <code>locale</code>.
079         *
080         * @param faultCode   a <code>Name</code> object giving the fault code to be set; must be one of
081         *                    the fault codes defined in the SOAP 1.1 specification and of type QName
082         * @param faultString a <code>String</code> giving an explanation of the fault
083         * @param locale      a <code>Locale</code> object indicating the native language of the
084         *                    <ocde>faultString</code>
085         * @return the new <code>SOAPFault</code> object
086         * @throws SOAPException if there is a SOAP error
087         */
088        public abstract SOAPFault addFault(Name faultCode,
089                                           String faultString,
090                                           Locale locale) throws SOAPException;
091    
092        /**
093         * Creates a new <code>SOAPFault</code> object and adds it to this <code>SOAPBody</code> object.
094         * The new <code>SOAPFault</code> will have a <code>faultcode</code> element that is set to the
095         * <code>faultCode</code> parameter and a <code>faultstring</code> set to
096         * <code>faultstring</code>.
097         *
098         * @param faultCode   a <code>Name</code> object giving the fault code to be set; must be one of
099         *                    the fault codes defined in the SOAP 1.1 specification and of type QName
100         * @param faultString a <code>String</code> giving an explanation of the fault
101         * @return the new <code>SOAPFault</code> object
102         * @throws SOAPException if there is a SOAP error
103         */
104        public abstract SOAPFault addFault(Name faultCode, String faultString) throws SOAPException;
105    
106        /**
107         * Adds the root node of the DOM <code>Document</code> to this <code>SOAPBody</code> object.
108         * <p/>
109         * Calling this method invalidates the <code>document</code> parameter. The client application
110         * should discard all references to this <code>Document</code> and its contents upon calling
111         * <code>addDocument</code>. The behavior of an application that continues to use such
112         * references is undefined.
113         *
114         * @param document the <code>Document</code> object whose root node will be added to this
115         *                 <code>SOAPBody</code>
116         * @return the <code>SOAPBodyElement</code> that represents the root node that was added
117         * @throws SOAPException if the <code>Document</code> cannot be added
118         */
119        public abstract SOAPBodyElement addDocument(Document document) throws SOAPException;
120    
121        public abstract SOAPBodyElement addBodyElement(javax.xml.namespace.QName qname)
122                throws SOAPException;
123    
124        public abstract SOAPFault addFault(javax.xml.namespace.QName qname,
125                                           java.lang.String s)
126                throws SOAPException;
127    
128        public abstract SOAPFault addFault(javax.xml.namespace.QName qname,
129                                           java.lang.String s,
130                                           java.util.Locale locale)
131                throws SOAPException;
132    
133        public abstract org.w3c.dom.Document extractContentAsDocument()
134                throws SOAPException;
135    }