View Javadoc

1   /*
2    * This file is part of Domingo
3    * an Open Source Java-API to Lotus Notes/Domino
4    * hosted at http://domingo.sourceforge.net
5    *
6    * Copyright (c) 2003-2007 Beck et al. projects GmbH Munich, Germany (http://www.bea.de)
7    *
8    * This library is free software; you can redistribute it and/or
9    * modify it under the terms of the GNU Lesser General Public
10   * License as published by the Free Software Foundation; either
11   * version 2.1 of the License, or (at your option) any later version.
12   *
13   * This library is distributed in the hope that it will be useful,
14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16   * Lesser General Public License for more details.
17   *
18   * You should have received a copy of the GNU Lesser General Public
19   * License along with this library; if not, write to the Free Software
20   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21   */
22  
23  package de.bea.domingo;
24  
25  import java.io.PrintStream;
26  import java.io.PrintWriter;
27  
28  import de.bea.domingo.exception.CascadingThrowable;
29  import de.bea.domingo.exception.ExceptionUtil;
30  
31  /***
32   * Runtime exception thrown from the domingo API.
33   *
34   * @author <a href=mailto:kriede@users.sourceforge.net>Kurt Riede</a>
35   */
36  public class DNotesRuntimeException extends RuntimeException implements CascadingThrowable {
37  
38      /*** serial version ID for serialization. */
39      private static final long serialVersionUID = 3546925766437648438L;
40  
41      /*** detail error of the exception. */
42      private final Throwable fCause;
43  
44      /***
45       * Construct a new <code>DNotesRuntimeException</code> instance.
46       *
47       * @param message The detail message for this exception.
48       */
49      public DNotesRuntimeException(final String message) {
50          super(message);
51          fCause = null;
52      }
53  
54      /***
55       * Construct a new <code>DNotesRuntimeException</code> instance.
56       *
57       * @param cause the cause of this throwable or <code>null</code> if the
58       *          cause is nonexistent or unknown.
59       */
60      public DNotesRuntimeException(final Throwable cause) {
61          super();
62          fCause = cause;
63      }
64  
65      /***
66       * Construct a new <code>DNotesRuntimeException</code> instance.
67       *
68       * @param message The detail message for this exception.
69       * @param cause the cause of this throwable or <code>null</code> if the
70       *          cause is nonexistent or unknown.
71       */
72      public DNotesRuntimeException(final String message, final Throwable cause) {
73          super(message);
74          fCause = cause;
75      }
76  
77      /***
78       * Returns the detail error that caused the exception.
79       *
80       * @return the cause of this throwable or <code>null</code> if the
81       *          cause is nonexistent or unknown.
82       * @see java.lang.Throwable#getCause()
83       */
84      public final Throwable getCause() {
85          return fCause;
86      }
87  
88      /***
89       * {@inheritDoc}
90       * @see java.lang.Throwable#getMessage()
91       */
92      public final String getMessage() {
93          if (super.getMessage() != null) {
94              return super.getMessage();
95          }
96          if (fCause != null) {
97              return fCause.toString();
98          } else {
99              return null;
100         }
101     }
102 
103     /***
104      * {@inheritDoc}
105      * @see java.lang.Throwable#printStackTrace()
106      */
107     public final void printStackTrace() {
108         ExceptionUtil.printStackTrace(this);
109     }
110 
111     /***
112      * {@inheritDoc}
113      * @see java.lang.Throwable#printStackTrace(java.io.PrintStream)
114      */
115     public final void printStackTrace(final PrintStream out) {
116         ExceptionUtil.printStackTrace(this, out);
117     }
118 
119     /***
120      * {@inheritDoc}
121      * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter)
122      */
123     public final void printStackTrace(final PrintWriter out) {
124         ExceptionUtil.printStackTrace(this, out);
125     }
126 
127     /***
128      * {@inheritDoc}
129      * @see de.bea.domingo.exception.CascadingThrowable#printPartialStackTrace(java.io.PrintWriter)
130      */
131     public final void printPartialStackTrace(final PrintWriter out) {
132         super.printStackTrace(out);
133     }
134 }