1 10 package mondrian.xmla; 11 12 import mondrian.olap.MondrianException; 13 14 22 public class XmlaException extends MondrianException { 23 24 public static String formatFaultCode(XmlaException xex) { 25 return formatFaultCode(xex.getFaultCode(), xex.getCode()); 26 } 27 public static String formatFaultCode(String faultCode, String code) { 28 return formatFaultCode(XmlaConstants.SOAP_PREFIX, 29 faultCode, code); 30 } 31 public static String formatFaultCode(String nsPrefix, 32 String faultCode, String code) { 33 return nsPrefix + 34 ':' + 35 faultCode + 36 '.' + 37 code; 38 } 39 public static String formatDetail(String msg) { 40 return XmlaConstants.FAULT_FS_PREFIX + msg; 41 } 42 43 public static Throwable getRootCause(Throwable throwable) { 44 Throwable t = throwable; 45 while (t.getCause() != null) { 46 t = t.getCause(); 47 } 48 return t; 49 } 50 51 private final String faultCode; 52 private final String code; 53 private final String faultString; 54 55 public XmlaException( 56 String faultCode, 57 String code, 58 String faultString, 59 Throwable cause) { 60 super(faultString, cause); 61 this.faultCode = faultCode; 62 this.code = code; 63 this.faultString = faultString; 64 } 65 66 public String getFaultCode() { 67 return faultCode; 68 } 69 public String getCode() { 70 return code; 71 } 72 public String getFaultString() { 73 return faultString; 74 } 75 public String getDetail() { 76 Throwable t = getCause(); 77 t = getRootCause(t); 78 String detail = t.getMessage(); 79 return (detail != null) 80 ? detail 81 : t.getClass().getName(); 82 } 83 } 84 85 | Popular Tags |