001 /*
002 @license.text@
003 */
004 package biz.hammurapi;
005
006 /**
007 * This exception adds "root cause" throwable class and message to its message
008 * @author Pavel Vlasov
009 * @version $Revision: 1.2 $
010 */
011 public class Exception extends java.lang.Exception {
012
013 /**
014 * Comment for <code>serialVersionUID</code>
015 */
016 private static final long serialVersionUID = 9056009202942745656L;
017
018 public Exception() {
019 super();
020 }
021
022 public Exception(String message) {
023 super(message);
024 }
025
026 public Exception(String message, Throwable cause) {
027 // TODO Switch to select 1.3 or 1.4
028 super(message+rootCause(cause), cause);
029 }
030
031 public Exception(Throwable cause) {
032 // TODO Switch to select 1.3 or 1.4
033 super(rootCause(cause), cause);
034 }
035
036 static String rootCause(Throwable cause) {
037 while (cause!=null && cause.getCause()!=null && cause!=cause.getCause()) {
038 cause=cause.getCause();
039 }
040 return cause==null ? "" : "\nRoot cause: "+cause.toString();
041 }
042 }