001: /*
002: * ============================================================================
003: * GNU Lesser General Public License
004: * ============================================================================
005: *
006: * JasperReports - Free Java report-generating library.
007: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
022: *
023: * JasperSoft Corporation
024: * 303 Second Street, Suite 450 North
025: * San Francisco, CA 94107
026: * http://www.jaspersoft.com
027: */
028: package net.sf.jasperreports.engine;
029:
030: import java.io.PrintStream;
031: import java.io.PrintWriter;
032:
033: /**
034: * @author Teodor Danciu (teodord@users.sourceforge.net)
035: * @version $Id: JRRuntimeException.java 1454 2006-11-04 07:06:05Z teodord $
036: */
037: public class JRRuntimeException extends RuntimeException {
038:
039: /**
040: *
041: */
042: private static boolean isJre14orLater = true;
043:
044: static {
045: isJre14orLater = true;
046: try {
047: Exception.class.getMethod("getCause", (Class[]) null);
048: } catch (NoSuchMethodException e) {
049: isJre14orLater = false;
050: }
051: }
052:
053: /**
054: *
055: */
056: private Throwable nestedThrowable = null;
057:
058: /**
059: *
060: */
061: public JRRuntimeException(String message) {
062: super (message);
063: }
064:
065: /**
066: *
067: */
068: public JRRuntimeException(Throwable t) {
069: this (t.toString(), t);
070: }
071:
072: /**
073: *
074: */
075: public JRRuntimeException(String message, Throwable t) {
076: super (message);
077:
078: nestedThrowable = t;
079: }
080:
081: /**
082: *
083: */
084: public Throwable getCause() {
085: return nestedThrowable;
086: }
087:
088: /**
089: *
090: */
091: public void printStackTrace() {
092: if (!isJre14orLater && nestedThrowable != null) {
093: nestedThrowable.printStackTrace();
094: System.err.println("\nNested by:");
095: }
096:
097: super .printStackTrace();
098: }
099:
100: /**
101: *
102: */
103: public void printStackTrace(PrintStream s) {
104: if (!isJre14orLater && nestedThrowable != null) {
105: nestedThrowable.printStackTrace(s);
106: s.println("\nNested by:");
107: }
108:
109: super .printStackTrace(s);
110: }
111:
112: /**
113: *
114: */
115: public void printStackTrace(PrintWriter s) {
116: if (!isJre14orLater && nestedThrowable != null) {
117: nestedThrowable.printStackTrace(s);
118: s.println("\nNested by:");
119: }
120:
121: super.printStackTrace(s);
122: }
123:
124: }
|