001: package com.sun.portal.providers;
002:
003: import com.sun.portal.desktop.TypedException;
004:
005: import java.io.PrintWriter;
006: import java.io.BufferedReader;
007: import java.io.PrintStream;
008: import java.io.PrintWriter;
009:
010: /**
011: * <p>This exception is a generic superclass for all provider related
012: * exceptions. All exceptions deliberately-thrown from a provider
013: * should be a subclass of this.
014: **/
015:
016: public class ProviderException extends Exception implements
017: TypedException {
018: /**
019: * The root cause of the exception, or null if this exception is
020: * the root cause.
021: */
022: protected Throwable wrapped = null;
023:
024: private String type = UNKNOWN_TYPE;
025:
026: /**
027: * Constructs a new exception with the specified message, indicating an
028: * error in the provider as happened.<br><br>
029: *
030: * @param msg The descriptive message.
031: */
032: public ProviderException(String msg) {
033: super (msg);
034: }
035:
036: /**
037: * Constructs a new exception with the specified message, and the original
038: * <code>exception</code> or <code>error</code>, indicating an error in the provider as happened.<br><br>
039: *
040: * @param msg The descriptive message.
041: * @param e The original <code>exception</code> or <code>error</code>.
042: */
043: public ProviderException(String msg, Throwable e) {
044: super (msg);
045: wrapped = e;
046: }
047:
048: /**
049: * Constructs a new exception with the specified message and the exception type defined in TypedException interface
050: * So that the proper error template is shown to user.
051: * @param msg
052: * @param type
053: */
054: public ProviderException(String msg, String type) {
055: super (msg);
056: this .type = type;
057: }
058:
059: /**
060: * Returns the <code>Throwable</code> object which is the root cause of
061: * the exception. It returns null if this exception is the root cause.
062: */
063: public Throwable getWrapped() {
064: return wrapped;
065: }
066:
067: /**
068: * Returns a descriptive message of this exception. If the <code>wrapped</code> object is
069: * not null, the appends the description of the wrapped object to the
070: * result.
071: */
072: public String toString() {
073: StringBuffer b = new StringBuffer();
074:
075: b.append(super .toString());
076: if (getWrapped() != null) {
077: b.append(wrapped.toString());
078: }
079:
080: return b.toString();
081: }
082:
083: /**
084: * Prints the stack backtrace. If the <code>wrapped</code> object is not null then
085: * it also prints the stack backtrace of that exception.
086: */
087: public void printStackTrace() {
088: super .printStackTrace();
089: if (getWrapped() != null) {
090: wrapped.printStackTrace();
091: }
092: }
093:
094: /**
095: * Prints the stack backtrace to the specified print stream.
096: * If the <code>wrapped</code> object is not null then it also prints the stack
097: * backtrace of that exception.
098: */
099: public void printStackTrace(PrintStream s) {
100: super .printStackTrace(s);
101: if (getWrapped() != null) {
102: wrapped.printStackTrace(s);
103: }
104: }
105:
106: /**
107: * Prints the stack backtrace to the specified print writer.
108: * If the <code>wrapped</code> object is not null then it also prints the stack
109: * backtrace of that exception.
110: */
111: public void printStackTrace(PrintWriter s) {
112: super .printStackTrace(s);
113: if (getWrapped() != null) {
114: wrapped.printStackTrace(s);
115: }
116: }
117:
118: public String getType() {
119: return type;
120: }
121: }
|