001 /*
002 @license.text@
003 */
004 package biz.hammurapi.jms;
005
006 import java.io.PrintStream;
007 import java.io.PrintWriter;
008
009 import javax.jms.JMSException;
010
011 /**
012 * Extension of JMSException to allow cause chaining.
013 * @author Pavel Vlasov
014 * @revision $Revision$
015 */
016 public class JMSExceptionEx extends JMSException {
017 private Throwable cause;
018
019 public Throwable getCause() {
020 return cause;
021 }
022
023 public JMSExceptionEx(String message) {
024 super(message);
025 }
026
027 public JMSExceptionEx(String message, Throwable cause) {
028 super(message);
029 this.cause=cause;
030 }
031
032 public JMSExceptionEx(Throwable cause) {
033 super("Caused by: "+cause);
034 this.cause=cause;
035 }
036
037 public void printStackTrace() {
038 super.printStackTrace();
039 if (cause!=null) {
040 System.err.println("=== NESTED EXCEPTION ===");
041 cause.printStackTrace();
042 }
043 }
044
045 public void printStackTrace(PrintWriter p) {
046 super.printStackTrace(p);
047 if (cause!=null) {
048 p.println("=== NESTED EXCEPTION ===");
049 cause.printStackTrace(p);
050 }
051 }
052
053 public void printStackTrace(PrintStream p) {
054 super.printStackTrace(p);
055 if (cause!=null) {
056 p.println("=== NESTED EXCEPTION ===");
057 cause.printStackTrace(p);
058 }
059 }
060
061 }