001: /*
002: * Copyright (c) 2001 - 2005 ivata limited.
003: * All rights reserved.
004: * -----------------------------------------------------------------------------
005: * ivata masks may be redistributed under the GNU General Public
006: * License as published by the Free Software Foundation;
007: * version 2 of the License.
008: *
009: * These programs are free software; you can redistribute them and/or
010: * modify them under the terms of the GNU General Public License
011: * as published by the Free Software Foundation; version 2 of the License.
012: *
013: * These programs are distributed in the hope that they will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: *
017: * See the GNU General Public License in the file LICENSE.txt for more
018: * details.
019: *
020: * If you would like a copy of the GNU General Public License write to
021: *
022: * Free Software Foundation, Inc.
023: * 59 Temple Place - Suite 330
024: * Boston, MA 02111-1307, USA.
025: *
026: *
027: * To arrange commercial support and licensing, contact ivata at
028: * http://www.ivata.com/contact.jsp
029: * -----------------------------------------------------------------------------
030: * $Log: SystemException.java,v $
031: * Revision 1.6 2005/10/11 18:55:58 colinmacleod
032: * Fixed some checkstyle and javadoc issues.
033: *
034: * Revision 1.5 2005/10/02 14:06:32 colinmacleod
035: * Added/improved log4j logging.
036: *
037: * Revision 1.4 2005/09/14 12:52:22 colinmacleod
038: * Added serialVersionUID.
039: * Changed XPath expression for choice.
040: *
041: * Revision 1.3 2005/04/09 18:04:17 colinmacleod
042: * Changed copyright text to GPL v2 explicitly.
043: *
044: * Revision 1.2 2005/03/10 10:27:20 colinmacleod
045: * Fixed initialization of cause in super constructor.
046: *
047: * Revision 1.1 2005/01/19 12:41:33 colinmacleod
048: * Renamed to SystemException.
049: *
050: * Revision 1.2 2005/01/06 22:21:45 colinmacleod
051: * Moved up a version number.
052: * Changed copyright notices to 2005.
053: * Updated the documentation:
054: * - started working on multiproject:site docu.
055: * - changed the logo.
056: * Added checkstyle and fixed LOADS of style issues.
057: * Added separate thirdparty subproject.
058: * Added struts (in web), util and webgui (in webtheme) from ivata op.
059: *
060: * Revision 1.6 2004/11/12 15:52:17 colinmacleod
061: * Added constructor which just has a message.
062: *
063: * Revision 1.5 2004/07/13 19:48:11 colinmacleod
064: * Moved project to POJOs from EJBs.
065: * Applied PicoContainer to services layer (replacing session EJBs).
066: * Applied Hibernate to persistence layer (replacing entity EJBs).
067: *
068: * Revision 1.4 2004/03/21 21:16:36 colinmacleod
069: * Shortened name to ivata op.
070: *
071: * Revision 1.3 2004/02/01 22:07:32 colinmacleod
072: * Added full names to author tags
073: *
074: * Revision 1.2 2004/01/29 14:34:15 janboros
075: * fixing package declaration
076: *
077: * Revision 1.1.1.1 2004/01/27 20:59:46 colinmacleod
078: * Moved ivata op to SourceForge.
079: *
080: * Revision 1.3 2003/10/16 15:35:48 jano
081: * Fixes problems with building and some problems with splitting to subprojects
082: *
083: * Revision 1.2 2003/10/15 14:13:53 colin
084: * fixing for XDoclet
085: *
086: * Revision 1.1 2003/01/21 08:59:37 colin
087: * first version of re-structured intranet struts
088: * -----------------------------------------------------------------------------
089: */
090: package com.ivata.mask.util;
091:
092: import org.apache.log4j.Logger;
093:
094: import java.io.Serializable;
095:
096: /**
097: * <p>
098: * This error message encapsulates another message which caused it.
099: * </p>
100: *
101: * @since ivata masks 0.4 (2003-01-10)
102: * @author Colin MacLeod
103: * <a href='mailto:colin.macleod@ivata.com'>colin.macleod@ivata.com</a>
104: * @version $Revision: 1.6 $
105: */
106: public class SystemException extends Exception implements Serializable {
107: /**
108: * Logger for this class.
109: */
110: private static final Logger logger = Logger
111: .getLogger(SystemException.class);
112:
113: /**
114: * Serialization version (for <code>Serializable</code> interface).
115: */
116: private static final long serialVersionUID = 1L;
117:
118: /**
119: * <p>
120: * Get a composite message for the given message and cause.
121: * </p>
122: *
123: * @param message
124: * clear message indicating what caused the exception to happen
125: * and what should be done to resolve it.
126: * @param cause
127: * the <code>Throwable</code> which caused this exception to
128: * happen.
129: * @return Combined message detailing the original message and cause.
130: */
131: private static String getMessage(final String message,
132: final Throwable cause) {
133: if (logger.isDebugEnabled()) {
134: logger.debug("getMessage(String message = " + message
135: + ", Throwable cause = " + cause + ") - start");
136: }
137:
138: StringBuffer buffer = new StringBuffer();
139: if (message != null) {
140: buffer.append(message);
141: } else {
142: buffer.append("SystemException");
143: }
144: if (cause != null) {
145: buffer.append(": caused by ");
146: buffer.append(cause.getClass().toString());
147: }
148: if ((cause != null) && (cause.getMessage() != null)) {
149: buffer.append(", original message: ");
150: buffer.append(cause.getMessage());
151: }
152: String returnString = buffer.toString();
153: if (logger.isDebugEnabled()) {
154: logger.debug("getMessage - end - return value = "
155: + returnString);
156: }
157: return returnString;
158: }
159:
160: /**
161: * <p>
162: * Create a <code>SystemException</code> with a message.
163: * </p>
164: *
165: * @param message
166: * clear message indicating what caused the exception to happen
167: * and what should be done to resolve it.
168: */
169: public SystemException(final String message) {
170: this (message, null);
171: }
172:
173: /**
174: * <p>
175: * Create a <code>SystemException</code> with the given message and
176: * cause.
177: * </p>
178: *
179: * @param message
180: * clear message indicating what caused the exception to happen
181: * and what should be done to resolve it.
182: * @param cause
183: * the <code>Throwable</code> which caused this exception to
184: * happen.
185: */
186: public SystemException(final String message, final Throwable cause) {
187: super (getMessage(message, cause), cause);
188: }
189:
190: /**
191: * <p>
192: * Create a <code>SystemException</code> with the given cause.
193: * </p>
194: *
195: * @param cause
196: * the <code>Throwable</code> which caused this exception to
197: * happen.
198: */
199: public SystemException(final Throwable cause) {
200: this(null, cause);
201: }
202: }
|