001: /**
002: * JDBM LICENSE v1.00
003: *
004: * Redistribution and use of this software and associated documentation
005: * ("Software"), with or without modification, are permitted provided
006: * that the following conditions are met:
007: *
008: * 1. Redistributions of source code must retain copyright
009: * statements and notices. Redistributions must also contain a
010: * copy of this document.
011: *
012: * 2. Redistributions in binary form must reproduce the
013: * above copyright notice, this list of conditions and the
014: * following disclaimer in the documentation and/or other
015: * materials provided with the distribution.
016: *
017: * 3. The name "JDBM" must not be used to endorse or promote
018: * products derived from this Software without prior written
019: * permission of Cees de Groot. For written permission,
020: * please contact cg@cdegroot.com.
021: *
022: * 4. Products derived from this Software may not be called "JDBM"
023: * nor may "JDBM" appear in their names without prior written
024: * permission of Cees de Groot.
025: *
026: * 5. Due credit should be given to the JDBM Project
027: * (http://jdbm.sourceforge.net/).
028: *
029: * THIS SOFTWARE IS PROVIDED BY THE JDBM PROJECT AND CONTRIBUTORS
030: * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
031: * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
032: * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
033: * CEES DE GROOT OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
034: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
035: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
036: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
037: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
038: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
039: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
040: * OF THE POSSIBILITY OF SUCH DAMAGE.
041: *
042: * Copyright 2001 (C) Alex Boisvert. All Rights Reserved.
043: * Contributions are Copyright (C) 2001 by their associated contributors.
044: *
045: */package jdbm.helper;
046:
047: import java.io.PrintStream;
048: import java.io.PrintWriter;
049:
050: /**
051: * A run-time exception that wraps another exception. The printed stack
052: * trace will be that of the wrapped exception.
053: *
054: * @author <a href="mailto:boisvert@intalio.com">Alex Boisvert</a>
055: * @version $Id: WrappedRuntimeException.java,v 1.1 2002/05/31 06:33:20 boisvert Exp $
056: */
057: public class WrappedRuntimeException extends RuntimeException {
058:
059: /**
060: * The underlying exception.
061: */
062: private final Exception _except;
063:
064: /**
065: * Constructs a new runtime exception based on a checked exception.
066: *
067: * @param message The error message
068: * @param except The checked exception
069: */
070: public WrappedRuntimeException(String message, Exception except) {
071: super (message == null ? "No message available" : message);
072:
073: if (except instanceof WrappedRuntimeException
074: && ((WrappedRuntimeException) except)._except != null) {
075: _except = ((WrappedRuntimeException) except)._except;
076: } else {
077: _except = except;
078: }
079: }
080:
081: /**
082: * Constructs a new runtime exception based on a checked exception.
083: *
084: * @param except The checked exception
085: */
086: public WrappedRuntimeException(Exception except) {
087: super (
088: except == null || except.getMessage() == null ? "No message available"
089: : except.getMessage());
090:
091: if (except instanceof WrappedRuntimeException
092: && ((WrappedRuntimeException) except)._except != null) {
093: _except = ((WrappedRuntimeException) except)._except;
094: } else {
095: _except = except;
096: }
097: }
098:
099: /**
100: * Returns the exception wrapped by this runtime exception.
101: *
102: * @return The exception wrapped by this runtime exception
103: */
104: public Exception getException() {
105: return _except;
106: }
107:
108: public void printStackTrace() {
109: if (_except == null) {
110: super .printStackTrace();
111: } else {
112: _except.printStackTrace();
113: }
114: }
115:
116: public void printStackTrace(PrintStream stream) {
117: if (_except == null) {
118: super .printStackTrace(stream);
119: } else {
120: _except.printStackTrace(stream);
121: }
122: }
123:
124: public void printStackTrace(PrintWriter writer) {
125: if (_except == null) {
126: super.printStackTrace(writer);
127: } else {
128: _except.printStackTrace(writer);
129: }
130: }
131:
132: }
|