<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_151) on Sun Jan 06 12:41:53 PST 2019 -->
<title>SOAPFault</title>
<meta name="date" content="2019-01-06">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="SOAPFault";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6,"i22":6,"i23":6,"i24":6,"i25":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../javax/xml/soap/SOAPFactory.html" title="class in javax.xml.soap"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/xml/soap/SOAPFaultElement.html" title="interface in javax.xml.soap"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/xml/soap/SOAPFault.html" target="_top">Frames</a></li>
<li><a href="SOAPFault.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">javax.xml.soap</div>
<h2 title="Interface SOAPFault" class="title">Interface SOAPFault</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd>org.w3c.dom.Element, org.w3c.dom.Node, <a href="../../../javax/xml/soap/SOAPBodyElement.html" title="interface in javax.xml.soap">SOAPBodyElement</a>, <a href="../../../javax/xml/soap/SOAPElement.html" title="interface in javax.xml.soap">SOAPElement</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">SOAPFault</span>
extends <a href="../../../javax/xml/soap/SOAPBodyElement.html" title="interface in javax.xml.soap">SOAPBodyElement</a></pre>
<div class="block">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>
 Depending on the <code>protocol</code> specified while creating the
 <code>MessageFactory</code> instance,  a <code>SOAPFault</code> has
 sub-elements as defined in the SOAP 1.1/SOAP 1.2 specification.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.w3c.dom.Node">
<!--   -->
</a>
<h3>Fields inherited from interface&nbsp;org.w3c.dom.Node</h3>
<code>ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE</code></li>
</ul>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../javax/xml/soap/Detail.html" title="interface in javax.xml.soap">Detail</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#addDetail--">addDetail</a></span>()</code>
<div class="block">Creates an optional <code>Detail</code> object and sets it as the
 <code>Detail</code> object for this <code>SOAPFault</code>
 object.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#addFaultReasonText-java.lang.String-java.util.Locale-">addFaultReasonText</a></span>(java.lang.String&nbsp;text,
                  java.util.Locale&nbsp;locale)</code>
<div class="block">Appends or replaces a Reason Text item containing the specified
 text message and an <i>xml:lang</i> derived from
 <code>locale</code>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#appendFaultSubcode-javax.xml.namespace.QName-">appendFaultSubcode</a></span>(javax.xml.namespace.QName&nbsp;subcode)</code>
<div class="block">Adds a Subcode to the end of the sequence of Subcodes contained by this
 <code>SOAPFault</code>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../javax/xml/soap/Detail.html" title="interface in javax.xml.soap">Detail</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getDetail--">getDetail</a></span>()</code>
<div class="block">Returns the optional detail element for this <code>SOAPFault</code>
 object.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultActor--">getFaultActor</a></span>()</code>
<div class="block">Gets the fault actor for this <code>SOAPFault</code> object.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultCode--">getFaultCode</a></span>()</code>
<div class="block">Gets the fault code for this <code>SOAPFault</code> object.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../javax/xml/soap/Name.html" title="interface in javax.xml.soap">Name</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultCodeAsName--">getFaultCodeAsName</a></span>()</code>
<div class="block">Gets the mandatory SOAP 1.1 fault code for this
 <code>SOAPFault</code> object as a SAAJ <code>Name</code> object.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>javax.xml.namespace.QName</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultCodeAsQName--">getFaultCodeAsQName</a></span>()</code>
<div class="block">Gets the fault code for this
 <code>SOAPFault</code> object as a <code>QName</code> object.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultNode--">getFaultNode</a></span>()</code>
<div class="block">Returns the optional Node element value for this
 <code>SOAPFault</code> object.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>java.util.Iterator&lt;java.util.Locale&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultReasonLocales--">getFaultReasonLocales</a></span>()</code>
<div class="block">Returns an <code>Iterator</code> over a distinct sequence of
 <code>Locale</code>s for which there are associated Reason Text items.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultReasonText-java.util.Locale-">getFaultReasonText</a></span>(java.util.Locale&nbsp;locale)</code>
<div class="block">Returns the Reason Text associated with the given <code>Locale</code>.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>java.util.Iterator&lt;java.lang.String&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultReasonTexts--">getFaultReasonTexts</a></span>()</code>
<div class="block">Returns an <code>Iterator</code> over a sequence of
 <code>String</code> objects containing all of the Reason Text items for
 this <code>SOAPFault</code>.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultRole--">getFaultRole</a></span>()</code>
<div class="block">Returns the optional Role element value for this
 <code>SOAPFault</code> object.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultString--">getFaultString</a></span>()</code>
<div class="block">Gets the fault string for this <code>SOAPFault</code> object.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>java.util.Locale</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultStringLocale--">getFaultStringLocale</a></span>()</code>
<div class="block">Gets the locale of the fault string for this <code>SOAPFault</code>
 object.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>java.util.Iterator&lt;javax.xml.namespace.QName&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#getFaultSubcodes--">getFaultSubcodes</a></span>()</code>
<div class="block">Gets the Subcodes for this <code>SOAPFault</code> as an iterator over
 <code>QNames</code>.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#hasDetail--">hasDetail</a></span>()</code>
<div class="block">Returns true if this <code>SOAPFault</code> has a <code>Detail</code>
 subelement and false otherwise.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#removeAllFaultSubcodes--">removeAllFaultSubcodes</a></span>()</code>
<div class="block">Removes any Subcodes that may be contained by this
 <code>SOAPFault</code>.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#setFaultActor-java.lang.String-">setFaultActor</a></span>(java.lang.String&nbsp;faultActor)</code>
<div class="block">Sets this <code>SOAPFault</code> object with the given fault actor.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-javax.xml.soap.Name-">setFaultCode</a></span>(<a href="../../../javax/xml/soap/Name.html" title="interface in javax.xml.soap">Name</a>&nbsp;faultCodeQName)</code>
<div class="block">Sets this <code>SOAPFault</code> object with the given fault code.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-javax.xml.namespace.QName-">setFaultCode</a></span>(javax.xml.namespace.QName&nbsp;faultCodeQName)</code>
<div class="block">Sets this <code>SOAPFault</code> object with the given fault code.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-java.lang.String-">setFaultCode</a></span>(java.lang.String&nbsp;faultCode)</code>
<div class="block">Sets this <code>SOAPFault</code> object with the give fault code.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#setFaultNode-java.lang.String-">setFaultNode</a></span>(java.lang.String&nbsp;uri)</code>
<div class="block">Creates or replaces any existing Node element value for
 this <code>SOAPFault</code> object.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#setFaultRole-java.lang.String-">setFaultRole</a></span>(java.lang.String&nbsp;uri)</code>
<div class="block">Creates or replaces any existing Role element value for
 this <code>SOAPFault</code> object.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#setFaultString-java.lang.String-">setFaultString</a></span>(java.lang.String&nbsp;faultString)</code>
<div class="block">Sets the fault string for this <code>SOAPFault</code> object
 to the given string.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../javax/xml/soap/SOAPFault.html#setFaultString-java.lang.String-java.util.Locale-">setFaultString</a></span>(java.lang.String&nbsp;faultString,
              java.util.Locale&nbsp;locale)</code>
<div class="block">Sets the fault string for this <code>SOAPFault</code> object
 to the given string and localized to the given locale.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.xml.soap.SOAPElement">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;javax.xml.soap.<a href="../../../javax/xml/soap/SOAPElement.html" title="interface in javax.xml.soap">SOAPElement</a></h3>
<code><a href="../../../javax/xml/soap/SOAPElement.html#addAttribute-javax.xml.soap.Name-java.lang.String-">addAttribute</a>, <a href="../../../javax/xml/soap/SOAPElement.html#addAttribute-javax.xml.namespace.QName-java.lang.String-">addAttribute</a>, <a href="../../../javax/xml/soap/SOAPElement.html#addChildElement-javax.xml.soap.Name-">addChildElement</a>, <a href="../../../javax/xml/soap/SOAPElement.html#addChildElement-javax.xml.namespace.QName-">addChildElement</a>, <a href="../../../javax/xml/soap/SOAPElement.html#addChildElement-javax.xml.soap.SOAPElement-">addChildElement</a>, <a href="../../../javax/xml/soap/SOAPElement.html#addChildElement-java.lang.String-">addChildElement</a>, <a href="../../../javax/xml/soap/SOAPElement.html#addChildElement-java.lang.String-java.lang.String-">addChildElement</a>, <a href="../../../javax/xml/soap/SOAPElement.html#addChildElement-java.lang.String-java.lang.String-java.lang.String-">addChildElement</a>, <a href="../../../javax/xml/soap/SOAPElement.html#addNamespaceDeclaration-java.lang.String-java.lang.String-">addNamespaceDeclaration</a>, <a href="../../../javax/xml/soap/SOAPElement.html#addTextNode-java.lang.String-">addTextNode</a>, <a href="../../../javax/xml/soap/SOAPElement.html#createQName-java.lang.String-java.lang.String-">createQName</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getAllAttributes--">getAllAttributes</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getAllAttributesAsQNames--">getAllAttributesAsQNames</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getAttributeValue-javax.xml.soap.Name-">getAttributeValue</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getAttributeValue-javax.xml.namespace.QName-">getAttributeValue</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getChildElements--">getChildElements</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getChildElements-javax.xml.soap.Name-">getChildElements</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getChildElements-javax.xml.namespace.QName-">getChildElements</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getElementName--">getElementName</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getElementQName--">getElementQName</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getEncodingStyle--">getEncodingStyle</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getNamespacePrefixes--">getNamespacePrefixes</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getNamespaceURI-java.lang.String-">getNamespaceURI</a>, <a href="../../../javax/xml/soap/SOAPElement.html#getVisibleNamespacePrefixes--">getVisibleNamespacePrefixes</a>, <a href="../../../javax/xml/soap/SOAPElement.html#removeAttribute-javax.xml.soap.Name-">removeAttribute</a>, <a href="../../../javax/xml/soap/SOAPElement.html#removeAttribute-javax.xml.namespace.QName-">removeAttribute</a>, <a href="../../../javax/xml/soap/SOAPElement.html#removeContents--">removeContents</a>, <a href="../../../javax/xml/soap/SOAPElement.html#removeNamespaceDeclaration-java.lang.String-">removeNamespaceDeclaration</a>, <a href="../../../javax/xml/soap/SOAPElement.html#setElementQName-javax.xml.namespace.QName-">setElementQName</a>, <a href="../../../javax/xml/soap/SOAPElement.html#setEncodingStyle-java.lang.String-">setEncodingStyle</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.javax.xml.soap.Node">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;javax.xml.soap.<a href="../../../javax/xml/soap/Node.html" title="interface in javax.xml.soap">Node</a></h3>
<code><a href="../../../javax/xml/soap/Node.html#detachNode--">detachNode</a>, <a href="../../../javax/xml/soap/Node.html#getParentElement--">getParentElement</a>, <a href="../../../javax/xml/soap/Node.html#getValue--">getValue</a>, <a href="../../../javax/xml/soap/Node.html#recycleNode--">recycleNode</a>, <a href="../../../javax/xml/soap/Node.html#setParentElement-javax.xml.soap.SOAPElement-">setParentElement</a>, <a href="../../../javax/xml/soap/Node.html#setValue-java.lang.String-">setValue</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.w3c.dom.Element">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.w3c.dom.Element</h3>
<code>getAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getSchemaTypeInfo, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS, setIdAttribute, setIdAttributeNode, setIdAttributeNS</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.w3c.dom.Node">
<!--   -->
</a>
<h3>Methods inherited from interface&nbsp;org.w3c.dom.Node</h3>
<code>appendChild, cloneNode, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="setFaultCode-javax.xml.soap.Name-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFaultCode</h4>
<pre>void&nbsp;setFaultCode(<a href="../../../javax/xml/soap/Name.html" title="interface in javax.xml.soap">Name</a>&nbsp;faultCodeQName)
           throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Sets this <code>SOAPFault</code> object with the given fault code.

 <P> 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>Name</code>. This method provides a convenient
 way to set a fault code. For example,

 <pre><code>
 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);
 </code></pre>
 It is preferable to use this method over <a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-java.lang.String-"><code>setFaultCode(String)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>faultCodeQName</code> - a <code>Name</code> object giving the fault
 code to be set. It must be namespace qualified.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in adding the
            <i>faultcode</i> element to the underlying XML tree.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.2</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#getFaultCodeAsName--"><code>getFaultCodeAsName()</code></a></dd>
</dl>
</li>
</ul>
<a name="setFaultCode-javax.xml.namespace.QName-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFaultCode</h4>
<pre>void&nbsp;setFaultCode(javax.xml.namespace.QName&nbsp;faultCodeQName)
           throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Sets this <code>SOAPFault</code> object with the given fault code.

 It is preferable to use this method over <a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-javax.xml.soap.Name-"><code>setFaultCode(Name)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>faultCodeQName</code> - a <code>QName</code> object giving the fault
 code to be set. It must be namespace qualified.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in adding the
            <code>faultcode</code> element to the underlying XML tree.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#getFaultCodeAsQName--"><code>getFaultCodeAsQName()</code></a>, 
<a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-javax.xml.soap.Name-"><code>setFaultCode(Name)</code></a>, 
<a href="../../../javax/xml/soap/SOAPFault.html#getFaultCodeAsQName--"><code>getFaultCodeAsQName()</code></a></dd>
</dl>
</li>
</ul>
<a name="setFaultCode-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFaultCode</h4>
<pre>void&nbsp;setFaultCode(java.lang.String&nbsp;faultCode)
           throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Sets this <code>SOAPFault</code> object with the give fault code.
 <P>
 Fault codes, which given information about the fault, are defined in
 the SOAP 1.1 specification. This element is mandatory in SOAP 1.1.
 Because the fault code is required to be a QName it is preferable to
 use the <a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-javax.xml.soap.Name-"><code>setFaultCode(Name)</code></a> form of this method.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>faultCode</code> - a <code>String</code> giving the fault code to be set.
         It must be of the form "prefix:localName" where the prefix has
         been defined in a namespace declaration.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in adding the
            <code>faultCode</code> to the underlying XML tree.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-javax.xml.soap.Name-"><code>setFaultCode(Name)</code></a>, 
<a href="../../../javax/xml/soap/SOAPFault.html#getFaultCode--"><code>getFaultCode()</code></a>, 
<a href="../../../javax/xml/soap/SOAPElement.html#addNamespaceDeclaration-java.lang.String-java.lang.String-"><code>SOAPElement.addNamespaceDeclaration(java.lang.String, java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="getFaultCodeAsName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultCodeAsName</h4>
<pre><a href="../../../javax/xml/soap/Name.html" title="interface in javax.xml.soap">Name</a>&nbsp;getFaultCodeAsName()</pre>
<div class="block">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 Name 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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>Name</code> representing the faultcode</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.2</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-javax.xml.soap.Name-"><code>setFaultCode(Name)</code></a></dd>
</dl>
</li>
</ul>
<a name="getFaultCodeAsQName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultCodeAsQName</h4>
<pre>javax.xml.namespace.QName&nbsp;getFaultCodeAsQName()</pre>
<div class="block">Gets the fault code for this
 <code>SOAPFault</code> object as a <code>QName</code> object.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>QName</code> representing the faultcode</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-javax.xml.namespace.QName-"><code>setFaultCode(QName)</code></a></dd>
</dl>
</li>
</ul>
<a name="getFaultSubcodes--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultSubcodes</h4>
<pre>java.util.Iterator&lt;javax.xml.namespace.QName&gt;&nbsp;getFaultSubcodes()</pre>
<div class="block">Gets the Subcodes for this <code>SOAPFault</code> as an iterator over
 <code>QNames</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an <code>Iterator</code> that accesses a sequence of
      <code>QNames</code>. This <code>Iterator</code> should not support
      the optional <code>remove</code> method. The order in which the
      Subcodes are returned reflects the hierarchy of Subcodes present
      in the fault from top to bottom.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Subcode.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="removeAllFaultSubcodes--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeAllFaultSubcodes</h4>
<pre>void&nbsp;removeAllFaultSubcodes()</pre>
<div class="block">Removes any Subcodes that may be contained by this
 <code>SOAPFault</code>. Subsequent calls to
 <code>getFaultSubcodes</code> will return an empty iterator until a call
 to <code>appendFaultSubcode</code> is made.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Subcode.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="appendFaultSubcode-javax.xml.namespace.QName-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>appendFaultSubcode</h4>
<pre>void&nbsp;appendFaultSubcode(javax.xml.namespace.QName&nbsp;subcode)
                 throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Adds a Subcode to the end of the sequence of Subcodes contained by this
 <code>SOAPFault</code>. Subcodes, which were introduced in SOAP 1.2, are
 represented by a recursive sequence of subelements rooted in the
 mandatory Code subelement of a SOAP Fault.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subcode</code> - a QName containing the Value of the Subcode.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in setting the Subcode</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Subcode.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="getFaultCode--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultCode</h4>
<pre>java.lang.String&nbsp;getFaultCode()</pre>
<div class="block">Gets the fault code for this <code>SOAPFault</code> object.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> with the fault code</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#getFaultCodeAsName--"><code>getFaultCodeAsName()</code></a>, 
<a href="../../../javax/xml/soap/SOAPFault.html#setFaultCode-javax.xml.soap.Name-"><code>setFaultCode(javax.xml.soap.Name)</code></a></dd>
</dl>
</li>
</ul>
<a name="setFaultActor-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFaultActor</h4>
<pre>void&nbsp;setFaultActor(java.lang.String&nbsp;faultActor)
            throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">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>
 If this <code>SOAPFault</code> supports SOAP 1.2 then this call is
 equivalent to <a href="../../../javax/xml/soap/SOAPFault.html#setFaultRole-java.lang.String-"><code>setFaultRole(String)</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>faultActor</code> - a <code>String</code> identifying the actor that
        caused this <code>SOAPFault</code> object</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in adding the
            <code>faultActor</code> to the underlying XML tree.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#getFaultActor--"><code>getFaultActor()</code></a></dd>
</dl>
</li>
</ul>
<a name="getFaultActor--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultActor</h4>
<pre>java.lang.String&nbsp;getFaultActor()</pre>
<div class="block">Gets the fault actor for this <code>SOAPFault</code> object.
 <P>
 If this <code>SOAPFault</code> supports SOAP 1.2 then this call is
 equivalent to <a href="../../../javax/xml/soap/SOAPFault.html#getFaultRole--"><code>getFaultRole()</code></a></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> giving the actor in the message path
         that caused this <code>SOAPFault</code> object</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#setFaultActor-java.lang.String-"><code>setFaultActor(java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="setFaultString-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFaultString</h4>
<pre>void&nbsp;setFaultString(java.lang.String&nbsp;faultString)
             throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Sets the fault string for this <code>SOAPFault</code> object
 to the given string.
 <P>
 If this
 <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
 this call is equivalent to:
 <pre><code>
      addFaultReasonText(faultString, Locale.getDefault());
 </code></pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>faultString</code> - a <code>String</code> giving an explanation of
        the fault</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in adding the
            <code>faultString</code> to the underlying XML tree.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#getFaultString--"><code>getFaultString()</code></a></dd>
</dl>
</li>
</ul>
<a name="setFaultString-java.lang.String-java.util.Locale-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFaultString</h4>
<pre>void&nbsp;setFaultString(java.lang.String&nbsp;faultString,
                    java.util.Locale&nbsp;locale)
             throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Sets the fault string for this <code>SOAPFault</code> object
 to the given string and localized to the given locale.
 <P>
 If this
 <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
 this call is equivalent to:
 <pre><code>
      addFaultReasonText(faultString, locale);
 </code></pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>faultString</code> - a <code>String</code> giving an explanation of
         the fault</dd>
<dd><code>locale</code> - a <code>Locale</code> object indicating
         the native language of the <code>faultString</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in adding the
            <code>faultString</code> to the underlying XML tree.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.2</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#getFaultString--"><code>getFaultString()</code></a></dd>
</dl>
</li>
</ul>
<a name="getFaultString--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultString</h4>
<pre>java.lang.String&nbsp;getFaultString()</pre>
<div class="block">Gets the fault string for this <code>SOAPFault</code> object.
 <P>
 If this
 <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
 this call is equivalent to:
 <pre><code>
    String reason = null;
    try {
        reason = (String) getFaultReasonTexts().next();
    } catch (SOAPException e) {}
    return reason;
 </code></pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>String</code> giving an explanation of
        the fault</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#setFaultString-java.lang.String-"><code>setFaultString(String)</code></a>, 
<a href="../../../javax/xml/soap/SOAPFault.html#setFaultString-java.lang.String-java.util.Locale-"><code>setFaultString(String, Locale)</code></a></dd>
</dl>
</li>
</ul>
<a name="getFaultStringLocale--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultStringLocale</h4>
<pre>java.util.Locale&nbsp;getFaultStringLocale()</pre>
<div class="block">Gets the locale of the fault string for this <code>SOAPFault</code>
 object.
 <P>
 If this
 <code>SOAPFault</code> is part of a message that supports SOAP 1.2 then
 this call is equivalent to:
 <pre><code>
    Locale locale = null;
    try {
        locale = (Locale) getFaultReasonLocales().next();
    } catch (SOAPException e) {}
    return locale;
 </code></pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>Locale</code> object indicating the native language of
          the fault string or <code>null</code> if no locale was specified</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.2</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#setFaultString-java.lang.String-java.util.Locale-"><code>setFaultString(String, Locale)</code></a></dd>
</dl>
</li>
</ul>
<a name="hasDetail--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasDetail</h4>
<pre>boolean&nbsp;hasDetail()</pre>
<div class="block">Returns true if this <code>SOAPFault</code> has a <code>Detail</code>
 subelement and false otherwise. Equivalent to
 <code>(getDetail()!=null)</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if this <code>SOAPFault</code> has a <code>Detail</code>
 subelement and false otherwise.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="getDetail--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDetail</h4>
<pre><a href="../../../javax/xml/soap/Detail.html" title="interface in javax.xml.soap">Detail</a>&nbsp;getDetail()</pre>
<div class="block">Returns the optional detail element for this <code>SOAPFault</code>
 object.
 <P>
 A <code>Detail</code> object carries application-specific error
 information, the scope of the error information is restricted to
 faults in the <code>SOAPBodyElement</code> objects if this is a
 SOAP 1.1 Fault.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a <code>Detail</code> object with application-specific
         error information if present, null otherwise</dd>
</dl>
</li>
</ul>
<a name="addDetail--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addDetail</h4>
<pre><a href="../../../javax/xml/soap/Detail.html" title="interface in javax.xml.soap">Detail</a>&nbsp;addDetail()
          throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Creates an optional <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.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the new <code>Detail</code> object</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if this
            <code>SOAPFault</code> object already contains a
            valid <code>Detail</code> object</dd>
</dl>
</li>
</ul>
<a name="getFaultReasonLocales--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultReasonLocales</h4>
<pre>java.util.Iterator&lt;java.util.Locale&gt;&nbsp;getFaultReasonLocales()
                                                    throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Returns an <code>Iterator</code> over a distinct sequence of
 <code>Locale</code>s for which there are associated Reason Text items.
 Any of these <code>Locale</code>s can be used in a call to
 <code>getFaultReasonText</code> in order to obtain a localized version
 of the Reason Text string.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an <code>Iterator</code> over a sequence of <code>Locale</code>
      objects for which there are associated Reason Text items.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in retrieving
 the  fault Reason locales.</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Fault Reason.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="getFaultReasonTexts--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultReasonTexts</h4>
<pre>java.util.Iterator&lt;java.lang.String&gt;&nbsp;getFaultReasonTexts()
                                                  throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Returns an <code>Iterator</code> over a sequence of
 <code>String</code> objects containing all of the Reason Text items for
 this <code>SOAPFault</code>.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an <code>Iterator</code> over env:Fault/env:Reason/env:Text items.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in retrieving
 the  fault Reason texts.</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Fault Reason.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="getFaultReasonText-java.util.Locale-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultReasonText</h4>
<pre>java.lang.String&nbsp;getFaultReasonText(java.util.Locale&nbsp;locale)
                             throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Returns the Reason Text associated with the given <code>Locale</code>.
 If more than one such Reason Text exists the first matching Text is
 returned</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>locale</code> - -- the <code>Locale</code> for which a localized
      Reason Text is desired</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the Reason Text associated with <code>locale</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in retrieving
 the  fault Reason text for the specified locale .</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Fault Reason.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../javax/xml/soap/SOAPFault.html#getFaultString--"><code>getFaultString()</code></a></dd>
</dl>
</li>
</ul>
<a name="addFaultReasonText-java.lang.String-java.util.Locale-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addFaultReasonText</h4>
<pre>void&nbsp;addFaultReasonText(java.lang.String&nbsp;text,
                        java.util.Locale&nbsp;locale)
                 throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Appends or replaces a Reason Text item containing the specified
 text message and an <i>xml:lang</i> derived from
 <code>locale</code>. If a Reason Text item with this
 <i>xml:lang</i> already exists its text value will be replaced
 with <code>text</code>.
 The <code>locale</code> parameter should not be <code>null</code>
 <P>
 Code sample:

 <pre><code>
 SOAPFault fault = ...;
 fault.addFaultReasonText("Version Mismatch", Locale.ENGLISH);
 </code></pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>text</code> - -- reason message string</dd>
<dd><code>locale</code> - -- Locale object representing the locale of the message</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in adding the Reason text
 or the <code>locale</code> passed was <code>null</code>.</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Fault Reason.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="getFaultNode--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultNode</h4>
<pre>java.lang.String&nbsp;getFaultNode()</pre>
<div class="block">Returns the optional Node element value for this
 <code>SOAPFault</code> object. The Node element is
 optional in SOAP 1.2.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Content of the env:Fault/env:Node element as a String
 or <code>null</code> if none</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Fault Node.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="setFaultNode-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setFaultNode</h4>
<pre>void&nbsp;setFaultNode(java.lang.String&nbsp;uri)
           throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Creates or replaces any existing Node element value for
 this <code>SOAPFault</code> object. The Node element
 is optional in SOAP 1.2.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>uri</code> - the URI of the Node</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in setting the
            Node for this  <code>SOAPFault</code> object.</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Fault Node.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="getFaultRole--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFaultRole</h4>
<pre>java.lang.String&nbsp;getFaultRole()</pre>
<div class="block">Returns the optional Role element value for this
 <code>SOAPFault</code> object. The Role element is
 optional in SOAP 1.2.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Content of the env:Fault/env:Role element as a String
 or <code>null</code> if none</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Fault Role.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
<a name="setFaultRole-java.lang.String-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setFaultRole</h4>
<pre>void&nbsp;setFaultRole(java.lang.String&nbsp;uri)
           throws <a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></pre>
<div class="block">Creates or replaces any existing Role element value for
 this <code>SOAPFault</code> object. The Role element
 is optional in SOAP 1.2.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>uri</code> - the URI of the Role</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../javax/xml/soap/SOAPException.html" title="class in javax.xml.soap">SOAPException</a></code> - if there was an error in setting the
            Role for this  <code>SOAPFault</code> object.</dd>
<dd><code>java.lang.UnsupportedOperationException</code> - if this message does not
      support the SOAP 1.2 concept of Fault Role.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, SAAJ 1.3</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../javax/xml/soap/SOAPFactory.html" title="class in javax.xml.soap"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../javax/xml/soap/SOAPFaultElement.html" title="interface in javax.xml.soap"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?javax/xml/soap/SOAPFault.html" target="_top">Frames</a></li>
<li><a href="SOAPFault.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
