001 /* 002 * Copyright 2001-2004 The Apache Software Foundation. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package javax.xml.soap; 017 018 import java.util.Locale; 019 020 /** 021 * An element in the <CODE>SOAPBody</CODE> object that contains 022 * error and/or status information. This information may relate to 023 * errors in the <CODE>SOAPMessage</CODE> object or to problems 024 * that are not related to the content in the message itself. 025 * Problems not related to the message itself are generally errors 026 * in processing, such as the inability to communicate with an 027 * upstream server. 028 * <P> 029 * The <CODE>SOAPFault</CODE> interface provides methods for 030 * retrieving the information contained in a <CODE> 031 * SOAPFault</CODE> object and for setting the fault code, the 032 * fault actor, and a string describing the fault. A fault code is 033 * one of the codes defined in the SOAP 1.1 specification that 034 * describe the fault. An actor is an intermediate recipient to 035 * whom a message was routed. The message path may include one or 036 * more actors, or, if no actors are specified, the message goes 037 * only to the default actor, which is the final intended 038 * recipient. 039 */ 040 public interface SOAPFault extends SOAPBodyElement { 041 042 /** 043 * Sets this <CODE>SOAPFault</CODE> object with the given 044 * fault code. 045 * 046 * <P>Fault codes, which given information about the fault, 047 * are defined in the SOAP 1.1 specification.</P> 048 * @param faultCode a <CODE>String</CODE> giving 049 * the fault code to be set; must be one of the fault codes 050 * defined in the SOAP 1.1 specification 051 * @throws SOAPException if there was an error in 052 * adding the <CODE>faultCode</CODE> to the underlying XML 053 * tree. 054 * @see #getFaultCode() getFaultCode() 055 */ 056 public abstract void setFaultCode(String faultCode) throws SOAPException; 057 058 /** 059 * Gets the fault code for this <CODE>SOAPFault</CODE> 060 * object. 061 * @return a <CODE>String</CODE> with the fault code 062 * @see #setFaultCode(java.lang.String) setFaultCode(java.lang.String) 063 */ 064 public abstract String getFaultCode(); 065 066 /** 067 * Sets this <CODE>SOAPFault</CODE> object with the given 068 * fault actor. 069 * 070 * <P>The fault actor is the recipient in the message path who 071 * caused the fault to happen.</P> 072 * @param faultActor a <CODE>String</CODE> 073 * identifying the actor that caused this <CODE> 074 * SOAPFault</CODE> object 075 * @throws SOAPException if there was an error in 076 * adding the <CODE>faultActor</CODE> to the underlying XML 077 * tree. 078 * @see #getFaultActor() getFaultActor() 079 */ 080 public abstract void setFaultActor(String faultActor) throws SOAPException; 081 082 /** 083 * Gets the fault actor for this <CODE>SOAPFault</CODE> 084 * object. 085 * @return a <CODE>String</CODE> giving the actor in the message 086 * path that caused this <CODE>SOAPFault</CODE> object 087 * @see #setFaultActor(java.lang.String) setFaultActor(java.lang.String) 088 */ 089 public abstract String getFaultActor(); 090 091 /** 092 * Sets the fault string for this <CODE>SOAPFault</CODE> 093 * object to the given string. 094 * 095 * @param faultString a <CODE>String</CODE> 096 * giving an explanation of the fault 097 * @throws SOAPException if there was an error in 098 * adding the <CODE>faultString</CODE> to the underlying XML 099 * tree. 100 * @see #getFaultString() getFaultString() 101 */ 102 public abstract void setFaultString(String faultString) 103 throws SOAPException; 104 105 /** 106 * Gets the fault string for this <CODE>SOAPFault</CODE> 107 * object. 108 * @return a <CODE>String</CODE> giving an explanation of the 109 * fault 110 */ 111 public abstract String getFaultString(); 112 113 /** 114 * Returns the detail element for this <CODE>SOAPFault</CODE> 115 * object. 116 * 117 * <P>A <CODE>Detail</CODE> object carries 118 * application-specific error information related to <CODE> 119 * SOAPBodyElement</CODE> objects.</P> 120 * @return a <CODE>Detail</CODE> object with 121 * application-specific error information 122 */ 123 public abstract Detail getDetail(); 124 125 /** 126 * Creates a <CODE>Detail</CODE> object and sets it as the 127 * <CODE>Detail</CODE> object for this <CODE>SOAPFault</CODE> 128 * object. 129 * 130 * <P>It is illegal to add a detail when the fault already 131 * contains a detail. Therefore, this method should be called 132 * only after the existing detail has been removed.</P> 133 * @return the new <CODE>Detail</CODE> object 134 * @throws SOAPException if this 135 * <CODE>SOAPFault</CODE> object already contains a valid 136 * <CODE>Detail</CODE> object 137 */ 138 public abstract Detail addDetail() throws SOAPException; 139 140 /** 141 * Sets this <code>SOAPFault</code> object with the given fault code. 142 * 143 * Fault codes, which give information about the fault, are defined in the 144 * SOAP 1.1 specification. A fault code is mandatory and must be of type 145 * <code>QName</code>. This method provides a convenient way to set a fault 146 * code. For example, 147 * 148 * <pre> 149 SOAPEnvelope se = ...; 150 // Create a qualified name in the SOAP namespace with a localName 151 // of "Client". Note that prefix parameter is optional and is null 152 // here which causes the implementation to use an appropriate prefix. 153 Name qname = se.createName("Client", null, 154 SOAPConstants.URI_NS_SOAP_ENVELOPE); 155 SOAPFault fault = ...; 156 fault.setFaultCode(qname); 157 * 158 * It is preferable to use this method over setFaultCode(String). 159 * 160 * @param name a <code>Name</code> object giving the fault code to be set. 161 * It must be namespace qualified. 162 * @throws SOAPException if there was an error in adding the 163 * <code>faultcode</code> element to the underlying XML tree 164 */ 165 public abstract void setFaultCode(Name name) throws SOAPException; 166 167 /** 168 * Gets the mandatory SOAP 1.1 fault code for this <code>SOAPFault</code> 169 * object as a SAAJ <code>Name</code> object. The SOAP 1.1 specification 170 * requires the value of the "faultcode" element to be of type QName. This 171 * method returns the content of the element as a QName in the form of a 172 * SAAJ <code>Name</code> object. This method should be used instead of the 173 * <code>getFaultCode()</code> method since it allows applications to easily 174 * access the namespace name without additional parsing. 175 * <p> 176 * In the future, a QName object version of this method may also be added. 177 * @return a <code>Name</code> representing the faultcode 178 */ 179 public abstract Name getFaultCodeAsName(); 180 181 /** 182 * Sets the fault string for this <code>SOAPFault</code> object to the given 183 * string and localized to the given locale. 184 * 185 * @param faultString a <code>String</code> giving an explanation of 186 * the fault 187 * @param locale a <code>Locale</code> object indicating the 188 * native language of the <code>faultString</code> 189 * @throws SOAPException if there was an error in adding the 190 * <code>faultString</code> to the underlying XML tree 191 */ 192 public abstract void setFaultString(String faultString, Locale locale) throws SOAPException; 193 194 /** 195 * Returns the optional detail element for this <code>SOAPFault</code> 196 * object. 197 * 198 * @return a <code>Locale</code> object indicating the native language of 199 * the fault string or <code>null</code> if no locale was 200 * specified 201 */ 202 public abstract Locale getFaultStringLocale(); 203 }