1 /*
2 * $Id: TilesException.java 471754 2006-11-06 14:55:09Z husted $
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22
23 package org.apache.struts.tiles;
24
25
26 /**
27 * Root class for all Tiles-exceptions.
28 */
29 public class TilesException extends Exception
30 {
31
32
33 /**
34 * Any "wrapped" exception will be exposed when this is serialized.
35 * @serial
36 */
37 private Exception exception;
38 /**
39 * Constructor.
40 */
41 public TilesException()
42 {
43 super();
44 this.exception = null;
45 }
46
47 /**
48 * Constructor.
49 * @param message The error or warning message.
50 */
51 public TilesException(String message)
52 {
53 super(message);
54 this.exception = null;
55 }
56
57
58 /**
59 * Create a new <code>TilesException</code> wrapping an existing exception.
60 *
61 * <p>The existing exception will be embedded in the new
62 * one, and its message will become the default message for
63 * the TilesException.</p>
64 *
65 * @param e The exception to be wrapped.
66 */
67 public TilesException(Exception e)
68 {
69 super();
70 this.exception = e;
71 }
72
73
74 /**
75 * Create a new <code>TilesException</code> from an existing exception.
76 *
77 * <p>The existing exception will be embedded in the new
78 * one, but the new exception will have its own message.</p>
79 *
80 * @param message The detail message.
81 * @param e The exception to be wrapped.
82 */
83 public TilesException(String message, Exception e)
84 {
85 super(message);
86 this.exception = e;
87 }
88
89
90 /**
91 * Return a detail message for this exception.
92 *
93 * <p>If there is a embedded exception, and if the TilesException
94 * has no detail message of its own, this method will return
95 * the detail message from the embedded exception.</p>
96 *
97 * @return The error or warning message.
98 */
99 public String getMessage ()
100 {
101 String message = super.getMessage ();
102
103 if (message == null && exception != null) {
104 return exception.getMessage();
105 } else {
106 return message;
107 }
108 }
109
110
111 /**
112 * Return the embedded exception, if any.
113 *
114 * @return The embedded exception, or <code>null</code> if there is none.
115 */
116 public Exception getException ()
117 {
118 return exception;
119 }
120
121 }