* @return A WSDL fault element.
* @throws WSDLException
*/
protected Fault parseFault(Element faultEl, Definition def) throws WSDLException
{
Fault fault = def.createFault();
String name = DOMUtils.getAttribute(faultEl, Constants.ATTR_NAME);
QName messageName = null;
try
{
messageName = DOMUtils.getQualifiedAttributeValue(faultEl, Constants.ATTR_MESSAGE, Constants.ELEM_INPUT, false, def);
}
catch (Exception e)
{
//the call above fails if there is no qualified namespace for the message name
messageName = new QName(null, DOMUtils.getAttribute(faultEl, "message"));
}
if (name != null)
{
fault.setName(name);
}
if (messageName != null)
{
Message message = def.getMessage(messageName);
if (message == null)
{
message = def.createMessage();
message.setQName(messageName);
def.addMessage(message);
}
fault.setMessage(message);
}
Element tempEl = DOMUtils.getFirstChildElement(faultEl);
while (tempEl != null)
{
if (QNameUtils.matches(Constants.Q_ELEM_DOCUMENTATION, tempEl))
{
fault.setDocumentationElement(tempEl);
}
else
{
// XML Validation will catch this
DOMUtils.throwWSDLException(tempEl);