1 /*
2 * Copyright (c) 1998, 2005 Gargoyle Software Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice,
8 * this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright notice,
10 * this list of conditions and the following disclaimer in the documentation
11 * and/or other materials provided with the distribution.
12 * 3. The end-user documentation included with the redistribution, if any, must
13 * include the following acknowledgment:
14 *
15 * "This product includes software developed by Gargoyle Software Inc.
16 * (http://www.GargoyleSoftware.com/)."
17 *
18 * Alternately, this acknowledgment may appear in the software itself, if
19 * and wherever such third-party acknowledgments normally appear.
20 * 4. The name "Gargoyle Software" must not be used to endorse or promote
21 * products derived from this software without prior written permission.
22 * For written permission, please contact info@GargoyleSoftware.com.
23 * 5. Products derived from this software may not be called "GSBase", nor may
24 * "GSBase" appear in their name, without prior written permission of
25 * Gargoyle Software Inc.
26 *
27 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
28 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
29 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARGOYLE
30 * SOFTWARE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
33 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
36 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 */
38 package com.gargoylesoftware.base.objectstore;
39
40 import java.io.PrintStream;
41 import java.io.PrintWriter;
42
43 /***
44 * Thrown when an error occuring during the processing of an object store.
45 *
46 * @version $Revision: 1.5 $
47 * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
48 */
49 public class ObjectStoreException extends RuntimeException {
50
51 private static final long serialVersionUID = 3689038830840948053L;
52 private final Exception exception_;
53
54
55 /***
56 * Create an instance
57 *
58 * @param message The text of the exception
59 */
60 public ObjectStoreException( final String message ) {
61 super( message );
62 exception_ = null;
63 }
64
65
66 /***
67 * Create an instance
68 *
69 * @param e An exception that this exception is enclosing
70 */
71 public ObjectStoreException( final Exception e ) {
72 super( e.toString() );
73 exception_ = e;
74 }
75
76
77 /***
78 * Create an instance
79 *
80 * @param message The text of the exception
81 * @param e An exception that this exception is enclosing
82 */
83 public ObjectStoreException( final String message, final Exception e ) {
84 super( message );
85 exception_ = e;
86 }
87
88
89 /***
90 * Create an instance
91 */
92 protected ObjectStoreException() {
93 exception_ = null;
94 }
95
96
97 /***
98 * Return the enclosed exception
99 *
100 * @return The enclosed exception or null if one was not specified
101 */
102 public Exception getException() {
103 return exception_;
104 }
105
106
107 /***
108 * Print the stack trace. If this exception contains another exception then
109 * the stack traces for both will be printed.
110 *
111 * @param writer Where the stack trace will be written
112 */
113 public void printStackTrace( final PrintWriter writer ) {
114 super.printStackTrace( writer );
115 if( exception_ != null ) {
116 writer.write( "Enclosed exception: " );
117 exception_.printStackTrace( writer );
118 }
119 }
120
121
122 /***
123 * Print the stack trace. If this exception contains another exception then
124 * the stack traces for both will be printed.
125 *
126 * @param stream Where the stack trace will be written
127 */
128 public void printStackTrace( final PrintStream stream ) {
129 super.printStackTrace( stream );
130 if( exception_ != null ) {
131 stream.print( "Enclosed exception: " );
132 exception_.printStackTrace( stream );
133 }
134 }
135 }
136