001 /*
002 * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package javax.xml.bind;
027
028 import java.io.PrintWriter;
029
030 /**
031 * This is the root exception class for all JAXB exceptions.
032 *
033 * @author <ul><li>Ryan Shoemaker, Sun Microsystems, Inc.</li></ul>
034 * @version $Revision: 1.3 $ $Date: 2004/10/22 15:46:02 $
035 * @see JAXBContext
036 * @see Marshaller
037 * @see Unmarshaller
038 * @since JAXB1.0
039 */
040 public class JAXBException extends Exception {
041
042 /**
043 * Vendor specific error code
044 *
045 */
046 private String errorCode;
047
048 /**
049 * Exception reference
050 *
051 */
052 private Throwable linkedException;
053
054 static final long serialVersionUID = -5621384651494307979L;
055
056 /**
057 * Construct a JAXBException with the specified detail message. The
058 * errorCode and linkedException will default to null.
059 *
060 * @param message a description of the exception
061 */
062 public JAXBException(String message) {
063 this (message, null, null);
064 }
065
066 /**
067 * Construct a JAXBException with the specified detail message and vendor
068 * specific errorCode. The linkedException will default to null.
069 *
070 * @param message a description of the exception
071 * @param errorCode a string specifying the vendor specific error code
072 */
073 public JAXBException(String message, String errorCode) {
074 this (message, errorCode, null);
075 }
076
077 /**
078 * Construct a JAXBException with a linkedException. The detail message and
079 * vendor specific errorCode will default to null.
080 *
081 * @param exception the linked exception
082 */
083 public JAXBException(Throwable exception) {
084 this (null, null, exception);
085 }
086
087 /**
088 * Construct a JAXBException with the specified detail message and
089 * linkedException. The errorCode will default to null.
090 *
091 * @param message a description of the exception
092 * @param exception the linked exception
093 */
094 public JAXBException(String message, Throwable exception) {
095 this (message, null, exception);
096 }
097
098 /**
099 * Construct a JAXBException with the specified detail message, vendor
100 * specific errorCode, and linkedException.
101 *
102 * @param message a description of the exception
103 * @param errorCode a string specifying the vendor specific error code
104 * @param exception the linked exception
105 */
106 public JAXBException(String message, String errorCode,
107 Throwable exception) {
108 super (message);
109 this .errorCode = errorCode;
110 this .linkedException = exception;
111 }
112
113 /**
114 * Get the vendor specific error code
115 *
116 * @return a string specifying the vendor specific error code
117 */
118 public String getErrorCode() {
119 return this .errorCode;
120 }
121
122 /**
123 * Get the linked exception
124 *
125 * @return the linked Exception, null if none exists
126 */
127 public Throwable getLinkedException() {
128 return linkedException;
129 }
130
131 /**
132 * Add a linked Exception.
133 *
134 * @param exception the linked Exception (A null value is permitted and
135 * indicates that the linked exception does not exist or
136 * is unknown).
137 */
138 public synchronized void setLinkedException(Throwable exception) {
139 this .linkedException = exception;
140 }
141
142 /**
143 * Returns a short description of this JAXBException.
144 *
145 */
146 public String toString() {
147 return linkedException == null ? super .toString() : super
148 .toString()
149 + "\n - with linked exception:\n["
150 + linkedException.toString() + "]";
151 }
152
153 /**
154 * Prints this JAXBException and its stack trace (including the stack trace
155 * of the linkedException if it is non-null) to the PrintStream.
156 *
157 * @param s PrintStream to use for output
158 */
159 public void printStackTrace(java.io.PrintStream s) {
160 super .printStackTrace(s);
161 }
162
163 /**
164 * Prints this JAXBException and its stack trace (including the stack trace
165 * of the linkedException if it is non-null) to <tt>System.err</tt>.
166 *
167 */
168 public void printStackTrace() {
169 super .printStackTrace();
170 }
171
172 /**
173 * Prints this JAXBException and its stack trace (including the stack trace
174 * of the linkedException if it is non-null) to the PrintWriter.
175 *
176 * @param s PrintWriter to use for output
177 */
178 public void printStackTrace(PrintWriter s) {
179 super .printStackTrace(s);
180 }
181
182 @Override
183 public Throwable getCause() {
184 return linkedException;
185 }
186 }
|