Package org.apache.axis
Class AxisFault
- java.lang.Object
-
- java.lang.Throwable
-
- java.lang.Exception
-
- java.io.IOException
-
- java.rmi.RemoteException
-
- org.apache.axis.AxisFault
-
- All Implemented Interfaces:
java.io.Serializable
- Direct Known Subclasses:
NoEndPointException
public class AxisFault extends java.rmi.RemoteExceptionAn exception which maps cleanly to a SOAP fault. This is a base class for exceptions which are mapped to faults. SOAP faults contain- A fault string
- A fault code
- A fault actor
- Fault details; an xml tree of fault specific stuff
- Author:
- Doug Davis (dug@us.ibm.com), James Snell (jasnell@us.ibm.com), Steve Loughran
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.StringfaultActorprotected QNamefaultCodeprotected java.util.VectorfaultDetailsprotected java.util.ArrayListfaultHeadersSOAP headers which should be serialized with the Fault.protected java.lang.StringfaultNodeprotected java.lang.StringfaultStringprotected java.util.VectorfaultSubCodeSOAP1.2 addition: subcodes of faults; a Vector of QNamesprotected static org.apache.commons.logging.LoglogTheLogused by this class for all logging.
-
Constructor Summary
Constructors Modifier Constructor Description AxisFault()No-arg constructor for building one from an XML stream.protectedAxisFault(java.lang.Exception target)Wrap an AxisFault around an existing Exception.AxisFault(java.lang.String message)create a simple axis fault from the message.AxisFault(java.lang.String code, java.lang.String faultString, java.lang.String actor, org.w3c.dom.Element[] details)Make a fault in theConstants.NS_URI_AXISnamespace.AxisFault(java.lang.String message, java.lang.Throwable t)create a fault from any throwable; When faulting a throwable (as opposed to an exception), stack trace information does not go into the fault.AxisFault(QName code, java.lang.String faultString, java.lang.String actor, org.w3c.dom.Element[] details)Make a fault in any namespace.AxisFault(QName code, QName[] subcodes, java.lang.String faultString, java.lang.String actor, java.lang.String node, org.w3c.dom.Element[] details)Make a fault in any namespace.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddFaultDetail(QName qname, java.lang.String body)Create an element of the given qname and add it to the details.voidaddFaultDetail(org.w3c.dom.Element detail)Append an element to the fault detail list.voidaddFaultDetailString(java.lang.String detail)add a string tag to the fault details.voidaddFaultSubCode(QName code)Add a fault sub-code.voidaddFaultSubCodeAsString(java.lang.String code)Add a fault sub-code with the local namecodeand namespaceConstants.NS_URI_AXIS.voidaddHeader(SOAPHeaderElement header)Add a SOAP header which should be serialized along with the fault.voidaddHostname(java.lang.String hostname)add the hostname string.voidaddHostnameIfNeeded()add the hostname of the current system.voidclearFaultDetails()Clear the fault details list.voidclearFaultSubCodes()Clear all fault sub-codes.voidclearHeaders()Clear all fault headers.voiddump()Dump the fault info to the log at debug level.java.lang.StringdumpToString()turn the fault and details into a string, with XML escaping.java.lang.StringgetFaultActor()get the fault actorQNamegetFaultCode()Get the fault codeQName.org.w3c.dom.Element[]getFaultDetails()Get all the fault details.java.lang.StringgetFaultNode()Get the fault node.java.lang.StringgetFaultReason()This is SOAP 1.2 equivalent ofgetFaultString().java.lang.StringgetFaultRole()This is SOAP 1.2 equivalent ofgetFaultActor().java.lang.StringgetFaultString()Get the fault string; this will never be null but may be the empty string.QName[]getFaultSubCodes()get the fault subcode list; only used in SOAP 1.2java.util.ArrayListgetHeaders()Get the SOAP headers associated with this fault.protected voidinitFaultSubCodes()Do whatever is needed to create the fault subcodes data structure, if it is needed.org.w3c.dom.ElementlookupFaultDetail(QName qname)Find a fault detail element by its qname.static AxisFaultmakeFault(java.lang.Exception e)Make an AxisFault based on a passed Exception.voidoutput(SerializationContext context)Add this fault and any needed headers to the output context.voidprintStackTrace(java.io.PrintStream ps)The override of the base class method prints out the fault info before the stack trace.voidprintStackTrace(java.io.PrintWriter pw)The override of the base class method prints out the fault info before the stack trace.booleanremoveFaultDetail(QName qname)Find and remove a specified fault detail element.voidremoveHostname()strip out the hostname on a message.voidsetFaultActor(java.lang.String actor)Set the fault actor.voidsetFaultCode(java.lang.String code)Deprecated.expect to see this go away after 1.1, use setFaultCodeAsString instead!voidsetFaultCode(QName code)Set the fault code.voidsetFaultCodeAsString(java.lang.String code)set a fault code string that is turned into a qname in the SOAP 1.1 or 1.2 namespace, depending on the current contextvoidsetFaultDetail(org.w3c.dom.Element[] details)Set the fault detail element to the arrary of details.voidsetFaultDetailString(java.lang.String details)set the fault details to a string element.voidsetFaultNode(java.lang.String node)Set the fault node.voidsetFaultReason(java.lang.String str)This is SOAP 1.2 equivalent ofsetFaultString(java.lang.String).voidsetFaultRole(java.lang.String role)This is SOAP 1.2 equivalent ofsetFaultActor(java.lang.String).voidsetFaultString(java.lang.String str)Set a fault string.java.lang.StringtoString()Stringify this fault as the current fault string.voidwriteDetails(QName qname, SerializationContext context)Writes any exception data to the faultDetails.
-
-
-
Field Detail
-
log
protected static org.apache.commons.logging.Log log
TheLogused by this class for all logging.
-
faultCode
protected QName faultCode
-
faultSubCode
protected java.util.Vector faultSubCode
SOAP1.2 addition: subcodes of faults; a Vector of QNames
-
faultString
protected java.lang.String faultString
-
faultActor
protected java.lang.String faultActor
-
faultDetails
protected java.util.Vector faultDetails
-
faultNode
protected java.lang.String faultNode
-
faultHeaders
protected java.util.ArrayList faultHeaders
SOAP headers which should be serialized with the Fault.
-
-
Constructor Detail
-
AxisFault
public AxisFault(java.lang.String code, java.lang.String faultString, java.lang.String actor, org.w3c.dom.Element[] details)Make a fault in theConstants.NS_URI_AXISnamespace.- Parameters:
code- fault code which will be passed into the Axis namespacefaultString- fault stringactor- fault actordetails- details; if null the current stack trace and classname is inserted into the details.
-
AxisFault
public AxisFault(QName code, java.lang.String faultString, java.lang.String actor, org.w3c.dom.Element[] details)
Make a fault in any namespace.- Parameters:
code- fault code which will be passed into the Axis namespacefaultString- fault stringactor- fault actordetails- details; if null the current stack trace and classname is inserted into the details.
-
AxisFault
public AxisFault(QName code, QName[] subcodes, java.lang.String faultString, java.lang.String actor, java.lang.String node, org.w3c.dom.Element[] details)
Make a fault in any namespace.- Parameters:
code- fault code which will be passed into the Axis namespacesubcodes- fault subcodes which will be pased into the Axis namespacefaultString- fault stringactor- fault actor, same as fault role in SOAP 1.2node- which node caused the fault on the SOAP pathdetails- details; if null the current stack trace and classname is inserted into the details.- Since:
- axis1.1
-
AxisFault
protected AxisFault(java.lang.Exception target)
Wrap an AxisFault around an existing Exception. This is private to force everyone to use makeFault() above, which sanity-checks us.- Parameters:
target- the targetException
-
AxisFault
public AxisFault(java.lang.String message)
create a simple axis fault from the message. Classname and stack trace go into the fault details.- Parameters:
message-
-
AxisFault
public AxisFault()
No-arg constructor for building one from an XML stream.
-
AxisFault
public AxisFault(java.lang.String message, java.lang.Throwable t)create a fault from any throwable; When faulting a throwable (as opposed to an exception), stack trace information does not go into the fault.- Parameters:
message- any extra text to with the faultt- whatever is to be turned into a fault
-
-
Method Detail
-
makeFault
public static AxisFault makeFault(java.lang.Exception e)
Make an AxisFault based on a passed Exception. If the Exception is already an AxisFault, simply use that. Otherwise, wrap it in an AxisFault. If the Exception is an InvocationTargetException (which already wraps another Exception), get the wrapped Exception out from there and use that instead of the passed one.- Parameters:
e- theExceptionto build a fault for- Returns:
- an
AxisFaultrepresentinge
-
clearFaultDetails
public void clearFaultDetails()
Clear the fault details list.
-
dump
public void dump()
Dump the fault info to the log at debug level.
-
dumpToString
public java.lang.String dumpToString()
turn the fault and details into a string, with XML escaping. subclassers: for security (cross-site-scripting) reasons, escape everything that could contain caller-supplied data.- Returns:
- stringified fault details
-
setFaultCode
public void setFaultCode(QName code)
Set the fault code.- Parameters:
code- a new fault code
-
setFaultCode
public void setFaultCode(java.lang.String code)
Deprecated.expect to see this go away after 1.1, use setFaultCodeAsString instead!Set the fault code (as a String).- Parameters:
code- a new fault code
-
setFaultCodeAsString
public void setFaultCodeAsString(java.lang.String code)
set a fault code string that is turned into a qname in the SOAP 1.1 or 1.2 namespace, depending on the current context- Parameters:
code- fault code
-
getFaultCode
public QName getFaultCode()
Get the fault codeQName.- Returns:
- fault code QName or null if there is none yet.
-
addFaultSubCodeAsString
public void addFaultSubCodeAsString(java.lang.String code)
Add a fault sub-code with the local namecodeand namespaceConstants.NS_URI_AXIS. This is new in SOAP 1.2, ignored in SOAP 1.1- Parameters:
code- the local name of the code to add- Since:
- axis1.1
-
initFaultSubCodes
protected void initFaultSubCodes()
Do whatever is needed to create the fault subcodes data structure, if it is needed.
-
addFaultSubCode
public void addFaultSubCode(QName code)
Add a fault sub-code. This is new in SOAP 1.2, ignored in SOAP 1.1.- Parameters:
code- theQNameof the fault sub-code to add- Since:
- axis1.1
-
clearFaultSubCodes
public void clearFaultSubCodes()
Clear all fault sub-codes. This is new in SOAP 1.2, ignored in SOAP 1.1.- Since:
- axis1.1
-
getFaultSubCodes
public QName[] getFaultSubCodes()
get the fault subcode list; only used in SOAP 1.2- Returns:
- null for no subcodes, or a QName array
- Since:
- axis1.1
-
setFaultString
public void setFaultString(java.lang.String str)
Set a fault string.- Parameters:
str- new fault string; null is turned into ""
-
getFaultString
public java.lang.String getFaultString()
Get the fault string; this will never be null but may be the empty string.- Returns:
- a fault string
-
setFaultReason
public void setFaultReason(java.lang.String str)
This is SOAP 1.2 equivalent ofsetFaultString(java.lang.String).- Parameters:
str- the fault reason as aString- Since:
- axis1.1
-
getFaultReason
public java.lang.String getFaultReason()
This is SOAP 1.2 equivalent ofgetFaultString().- Returns:
- the fault
String - Since:
- axis1.1
-
setFaultActor
public void setFaultActor(java.lang.String actor)
Set the fault actor.- Parameters:
actor- fault actor
-
getFaultActor
public java.lang.String getFaultActor()
get the fault actor- Returns:
- actor or null
-
getFaultRole
public java.lang.String getFaultRole()
This is SOAP 1.2 equivalent ofgetFaultActor().- Returns:
- the name of the fault actor
- Since:
- axis1.1
-
setFaultRole
public void setFaultRole(java.lang.String role)
This is SOAP 1.2 equivalent ofsetFaultActor(java.lang.String).- Since:
- axis1.1
-
getFaultNode
public java.lang.String getFaultNode()
Get the fault node. This is new in SOAP 1.2- Returns:
- Since:
- axis1.1
-
setFaultNode
public void setFaultNode(java.lang.String node)
Set the fault node. This is new in SOAP 1.2.- Parameters:
node- aStringrepresenting the fault node- Since:
- axis1.1
-
setFaultDetail
public void setFaultDetail(org.w3c.dom.Element[] details)
Set the fault detail element to the arrary of details.- Parameters:
details- list of detail elements, can be null
-
setFaultDetailString
public void setFaultDetailString(java.lang.String details)
set the fault details to a string element.- Parameters:
details- XML fragment
-
addFaultDetailString
public void addFaultDetailString(java.lang.String detail)
add a string tag to the fault details.- Parameters:
detail- XML fragment
-
addFaultDetail
public void addFaultDetail(org.w3c.dom.Element detail)
Append an element to the fault detail list.- Parameters:
detail- the new element to add- Since:
- Axis1.1
-
addFaultDetail
public void addFaultDetail(QName qname, java.lang.String body)
Create an element of the given qname and add it to the details.- Parameters:
qname- qname of the elementbody- string to use as body
-
getFaultDetails
public org.w3c.dom.Element[] getFaultDetails()
Get all the fault details.- Returns:
- an array of fault details, or null for none
-
lookupFaultDetail
public org.w3c.dom.Element lookupFaultDetail(QName qname)
Find a fault detail element by its qname.- Parameters:
qname- name of the node to look for- Returns:
- the matching element or null
- Since:
- axis1.1
-
removeFaultDetail
public boolean removeFaultDetail(QName qname)
Find and remove a specified fault detail element.- Parameters:
qname- qualified name of detail- Returns:
- true if it was found and removed, false otherwise
- Since:
- axis1.1
-
output
public void output(SerializationContext context) throws java.lang.Exception
Add this fault and any needed headers to the output context.- Parameters:
context-- Throws:
java.lang.Exception
-
toString
public java.lang.String toString()
Stringify this fault as the current fault string.- Overrides:
toStringin classjava.lang.Throwable- Returns:
- the fault string, possibly the empty string, but never null
-
printStackTrace
public void printStackTrace(java.io.PrintStream ps)
The override of the base class method prints out the fault info before the stack trace.- Overrides:
printStackTracein classjava.lang.Throwable- Parameters:
ps- where to print
-
printStackTrace
public void printStackTrace(java.io.PrintWriter pw)
The override of the base class method prints out the fault info before the stack trace.- Overrides:
printStackTracein classjava.lang.Throwable- Parameters:
pw- where to print
-
addHeader
public void addHeader(SOAPHeaderElement header)
Add a SOAP header which should be serialized along with the fault.- Parameters:
header- a SOAPHeaderElement containing some fault-relevant stuff
-
getHeaders
public java.util.ArrayList getHeaders()
Get the SOAP headers associated with this fault.- Returns:
- an ArrayList containing any headers associated with this fault
-
clearHeaders
public void clearHeaders()
Clear all fault headers.
-
writeDetails
public void writeDetails(QName qname, SerializationContext context) throws java.io.IOException
Writes any exception data to the faultDetails. This can be overridden (and is) by emitted exception clases. The base implementation will attempt to serialize exception data the fault was created from an Exception and a type mapping is found for it.- Parameters:
qname- theQNameto write this undercontext- theSerializationContextto write this fault to- Throws:
java.io.IOException- if we can't write ourselves for any reason
-
addHostnameIfNeeded
public void addHostnameIfNeeded()
add the hostname of the current system. This is very useful for locating faults on a cluster.- Since:
- Axis1.2
-
addHostname
public void addHostname(java.lang.String hostname)
add the hostname string. If one already exists, remove it.- Parameters:
hostname- string name of a host- Since:
- Axis1.2
-
removeHostname
public void removeHostname()
strip out the hostname on a message. This is useful for security reasons.
-
-