1 /* 2 * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javax.xml.bind; 27 28 import java.io.PrintWriter; 29 30 /** 31 * This is the root exception class for all JAXB exceptions. 32 * 33 * @author <ul><li>Ryan Shoemaker, Sun Microsystems, Inc.</li></ul> 34 * @see JAXBContext 35 * @see Marshaller 36 * @see Unmarshaller 37 * @since JAXB1.0 38 */ 39 public class JAXBException extends Exception { 40 41 /** 42 * Vendor specific error code 43 * 44 */ 45 private String errorCode; 46 47 /** 48 * Exception reference 49 * 50 */ 51 private Throwable linkedException; 52 53 static final long serialVersionUID = -5621384651494307979L; 54 55 /** 56 * Construct a JAXBException with the specified detail message. The 57 * errorCode and linkedException will default to null. 58 * 59 * @param message a description of the exception 60 */ 61 public JAXBException(String message) { 62 this( message, null, null ); 63 } 64 65 /** 66 * Construct a JAXBException with the specified detail message and vendor 67 * specific errorCode. The linkedException will default to null. 68 * 69 * @param message a description of the exception 70 * @param errorCode a string specifying the vendor specific error code 71 */ 72 public JAXBException(String message, String errorCode) { 73 this( message, errorCode, null ); 74 } 75 76 /** 77 * Construct a JAXBException with a linkedException. The detail message and 78 * vendor specific errorCode will default to null. 79 * 80 * @param exception the linked exception 81 */ 82 public JAXBException(Throwable exception) { 83 this( null, null, exception ); 84 } 85 86 /** 87 * Construct a JAXBException with the specified detail message and 88 * linkedException. The errorCode will default to null. 89 * 90 * @param message a description of the exception 91 * @param exception the linked exception 92 */ 93 public JAXBException(String message, Throwable exception) { 94 this( message, null, exception ); 95 } 96 97 /** 98 * Construct a JAXBException with the specified detail message, vendor 99 * specific errorCode, and linkedException. 100 * 101 * @param message a description of the exception 102 * @param errorCode a string specifying the vendor specific error code 103 * @param exception the linked exception 104 */ 105 public JAXBException(String message, String errorCode, Throwable exception) { 106 super( message ); 107 this.errorCode = errorCode; 108 this.linkedException = exception; 109 } 110 111 /** 112 * Get the vendor specific error code 113 * 114 * @return a string specifying the vendor specific error code 115 */ 116 public String getErrorCode() { 117 return this.errorCode; 118 } 119 120 /** 121 * Get the linked exception 122 * 123 * @return the linked Exception, null if none exists 124 */ 125 public Throwable getLinkedException() { 126 return linkedException; 127 } 128 129 /** 130 * Add a linked Exception. 131 * 132 * @param exception the linked Exception (A null value is permitted and 133 * indicates that the linked exception does not exist or 134 * is unknown). 135 */ 136 public synchronized void setLinkedException( Throwable exception ) { 137 this.linkedException = exception; 138 } 139 140 /** 141 * Returns a short description of this JAXBException. 142 * 143 */ 144 public String toString() { 145 return linkedException == null ? 146 super.toString() : 147 super.toString() + "\n - with linked exception:\n[" + 148 linkedException.toString()+ "]"; 149 } 150 151 /** 152 * Prints this JAXBException and its stack trace (including the stack trace 153 * of the linkedException if it is non-null) to the PrintStream. 154 * 155 * @param s PrintStream to use for output 156 */ 157 public void printStackTrace( java.io.PrintStream s ) { 158 super.printStackTrace(s); 159 } 160 161 /** 162 * Prints this JAXBException and its stack trace (including the stack trace 163 * of the linkedException if it is non-null) to <tt>System.err</tt>. 164 * 165 */ 166 public void printStackTrace() { 167 super.printStackTrace(); 168 } 169 170 /** 171 * Prints this JAXBException and its stack trace (including the stack trace 172 * of the linkedException if it is non-null) to the PrintWriter. 173 * 174 * @param s PrintWriter to use for output 175 */ 176 public void printStackTrace(PrintWriter s) { 177 super.printStackTrace(s); 178 } 179 180 @Override 181 public Throwable getCause() { 182 return linkedException; 183 } 184 }