axisfault.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 606 行 · 第 1/2 页
JAVA
606 行
public AxisFault(String message, MessageContext faultMessageContext, Throwable cause) {
super(message, cause);
this.faultMessageContext = faultMessageContext;
}
/**
* @param messageText - this will appear as the Text in the Reason information item of SOAP Fault
* @param faultCode - this will appear as the Value in the Code information item of SOAP Fault
* @param cause - this will appear under the Detail information item of SOAP Fault
*/
public AxisFault(String messageText, String faultCode, Throwable cause) {
this(messageText, cause);
setFaultCode(faultCode);
}
/**
* Create an AxisFault by providing a textual message and a MessageContext
* that contains the actual fault representation.
*
* @param message A string that's really only useful for logging.
* @param faultMessageContext A MessageContext which must contain SOAP fault info
*/
public AxisFault(String message, MessageContext faultMessageContext) {
this(message);
this.faultMessageContext = faultMessageContext;
}
/**
* Add a header to the list of fault headers
*
* @param header to add.
*/
public void addHeader(SOAPHeaderBlock header) {
headers.add(header);
}
/**
* Add a reason for the fault in the empty "" language
*
* @param text text message
*/
public void addReason(String text) {
faultReasonList.add(new FaultReason(text, ""));
}
/**
* Add a reason for the fault
*
* @param text text message
* @param language language
*/
public void addReason(String text, String language) {
faultReasonList.add(new FaultReason(text, language));
}
/**
* Returns the first fault reason, if available. If not found, returns null.
*
* @return faultReason
*/
public String getReason() {
if (faultReasonList.size() >= 1) {
return ((FaultReason) faultReasonList.get(0)).getText();
} else if (soapFaultReason != null) {
return soapFaultReason.getText();
}
return null;
}
/**
* Iterate over all of the headers
*
* @return iterator
*/
public ListIterator headerIterator() {
return headers.listIterator();
}
/**
* Get at the headers. Useful for java1.5 iteration.
*
* @return the headers for this fault
*/
public List headers() {
return headers;
}
/**
* 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.
*
* @param e the <code>Exception</code> to build a fault for
* @return an <code>AxisFault</code> representing <code>e</code>
*/
public static AxisFault makeFault(Throwable e) {
if (e instanceof InvocationTargetException) {
return makeFault(((InvocationTargetException) e).getTargetException());
} else if (e instanceof UndeclaredThrowableException) {
Throwable t = ((UndeclaredThrowableException) e).getCause();
if (t instanceof Exception) {
e = (Exception) t;
}
}
if (e instanceof AxisFault) {
return (AxisFault) e;
}
return new AxisFault(e);
}
/**
* Get the current fault detail
*
* @return om element
*/
public OMElement getDetail() {
return detail;
}
public QName getFaultCode() {
return faultCode;
}
public List getFaultSubCodes() {
return faultSubCodes;
}
/**
* @return SOAPFaultCode if, user has set a {@link SOAPFaultCode} element when constructing the
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultCode getFaultCodeElement() {
return soapFaultCode;
}
/**
* @return SOAPFaultCode if, user has set a {@link SOAPFaultReason} element when constructing the
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultReason getFaultReasonElement() {
return soapFaultReason;
}
/**
* @return SOAPFaultCode if, user has set a {@link SOAPFaultNode} element when constructing the
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultNode getFaultNodeElement() {
return soapFaultNode;
}
/**
* @return SOAPFaultCode if, user has set a {@link SOAPFaultRole} element when constructing the
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultRole getFaultRoleElement() {
return soapFaultRole;
}
/**
* @return SOAPFaultCode if, user has set a {@link SOAPFaultDetail} element when constructing the
* {@link #AxisFault(org.apache.axiom.soap.SOAPFaultCode, org.apache.axiom.soap.SOAPFaultReason, org.apache.axiom.soap.SOAPFaultNode, org.apache.axiom.soap.SOAPFaultRole, org.apache.axiom.soap.SOAPFaultDetail) AxisFault}
*/
public SOAPFaultDetail getFaultDetailElement() {
return soapFaultDetail;
}
/**
* Get the faulting node uri.
* SOAP1.2
*
* @return URI as a string or null
*/
public String getNodeURI() {
return nodeURI;
}
/**
* Set the entire detail element of the fault
*
* @param detail an OMElement which MUST be
*/
public void setDetail(OMElement detail) {
this.detail = detail;
}
public void setFaultCode(QName soapFaultCode) {
this.faultCode = soapFaultCode;
}
public void setFaultCode(String soapFaultCode) {
// TODO: is it really safe to assume that the passed string is always the localpart?
// What if someone passes soapenv:Sender?
faultCode = new QName(soapFaultCode);
}
/**
* Set the faulting node uri. (SOAP1.2)
*
* @param nodeURI a String containing a URI indicating which SOAP Node faulted
*/
public void setNodeURI(String nodeURI) {
this.nodeURI = nodeURI;
}
public String getFaultNode() {
return faultNode;
}
public String getFaultRole() {
return faultRole;
}
/**
* Returns the MessageContext representation of the fault if the fault
* was created by providing that.
*
* @return The MessageContext representing the fault message or null if the
* fault was not created with MessageContext representation.
*/
public MessageContext getFaultMessageContext() {
return faultMessageContext;
}
class FaultReason implements Serializable{
/**
* Language of the reason.
* xml:lang="en" "en-GB" or just ""
*/
private String language = "";
/**
* env:reasontext
*/
private String text;
public FaultReason() {
}
public FaultReason(String text, String language) {
this.text = text;
this.language = language;
}
/**
* Returns a string representation of the object.
*
* @return the text value
*/
public String toString() {
return text;
}
public String getLanguage() {
return language;
}
public String getText() {
return text;
}
public void setLanguage(String language) {
this.language = language;
}
public void setText(String text) {
this.text = text;
}
}
/**
* @return the action value set for the fault message
*/
public String getFaultAction() {
return faultAction;
}
/**
* Set the (OPTIONAL) action value for the fault message
*
* @param faultAction a String containing an action URI for the fault
*/
public void setFaultAction(String faultAction) {
this.faultAction = faultAction;
}
/**
* Returns the detail message, including the message from the cause, if any, of this exception.
*
* @return the detail message
*/
public String getMessage() {
return message;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?