package net.techreadiness.service.exception;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import javax.xml.ws.WebFault;
@WebFault(name = "ServiceFault")
public class ServiceException extends RuntimeException {
private static final long serialVersionUID = 1L;
private FaultInfo faultInfo;
public ServiceException() {
}
public ServiceException(String message) {
super(message);
createFaultInfo();
}
public ServiceException(Throwable cause) {
super(cause);
createFaultInfo();
}
public ServiceException(String message, Throwable cause) {
super(message, cause);
createFaultInfo();
}
public ServiceException(String message, FaultInfo faultInfo) {
super(message);
this.faultInfo = faultInfo;
populateFaultInfo();
}
public ServiceException(FaultInfo faultInfo) {
super(faultInfo.getMessage());
this.faultInfo = faultInfo;
populateFaultInfo();
}
private void createFaultInfo() {
faultInfo = new FaultInfo();
faultInfo.setMessage(this.getMessage());
populateFaultInfo();
}
private void populateFaultInfo() {
final Writer writer = new StringWriter();
final PrintWriter printWriter = new PrintWriter(writer);
this.printStackTrace(printWriter);
faultInfo.setStackTrace(writer.toString());
}
/**
* Gets the fault information about this exception. The message, stack trace, and any validation errors are contained in
* here.
*
* @return FaultInfo
*/
public FaultInfo getFaultInfo() {
return faultInfo;
}
}