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    }