001 /* 002 * $Id: TypeConstraintException.java,v 1.5 2002/11/11 18:58:20 ryans Exp $ 003 * 004 * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved. 005 * 006 * This software is the proprietary information of Sun Microsystems, Inc. 007 * Use is subject to license terms. 008 * 009 */ 010 011 package javax.xml.bind; 012 013 /** 014 * This exception indicates that a violation of a dynamically checked type 015 * constraint was detected. 016 * 017 * <p> 018 * This exception can be thrown by the generated setter methods of the schema 019 * derived Java content classes. However, since fail-fast validation is 020 * an optional feature for JAXB Providers to support, not all setter methods 021 * will throw this exception when a type constraint is violated. 022 * 023 * <p> 024 * If this exception is throw while invoking a fail-fast setter, the value of 025 * the property is guaranteed to remain unchanged, as if the setter were never 026 * called. 027 * 028 * @author <ul><li>Ryan Shoemaker, Sun Microsystems, Inc.</li><li>Joe Fialli, Sun Microsystems, Inc.</li></ul> 029 * @version $Revision: 1.5 $ 030 * @see ValidationEvent 031 * @since JAXB1.0 032 */ 033 034 public class TypeConstraintException extends java.lang.RuntimeException { 035 036 /** 037 * Vendor specific error code 038 * 039 */ 040 private String errorCode; 041 042 /** 043 * Exception reference 044 * 045 */ 046 private Throwable linkedException; 047 048 049 /** 050 * Construct a TypeConstraintException with the specified detail message. The 051 * errorCode and linkedException will default to null. 052 * 053 * @param message a description of the exception 054 */ 055 public TypeConstraintException(String message) { 056 this( message, null, null ); 057 } 058 059 /** 060 * Construct a TypeConstraintException with the specified detail message and vendor 061 * specific errorCode. The linkedException will default to null. 062 * 063 * @param message a description of the exception 064 * @param errorCode a string specifying the vendor specific error code 065 */ 066 public TypeConstraintException(String message, String errorCode) { 067 this( message, errorCode, null ); 068 } 069 070 /** 071 * Construct a TypeConstraintException with a linkedException. The detail message and 072 * vendor specific errorCode will default to null. 073 * 074 * @param exception the linked exception 075 */ 076 public TypeConstraintException(Throwable exception) { 077 this( null, null, exception ); 078 } 079 080 /** 081 * Construct a TypeConstraintException with the specified detail message and 082 * linkedException. The errorCode will default to null. 083 * 084 * @param message a description of the exception 085 * @param exception the linked exception 086 */ 087 public TypeConstraintException(String message, Throwable exception) { 088 this( message, null, exception ); 089 } 090 091 /** 092 * Construct a TypeConstraintException with the specified detail message, 093 * vendor specific errorCode, and linkedException. 094 * 095 * @param message a description of the exception 096 * @param errorCode a string specifying the vendor specific error code 097 * @param exception the linked exception 098 */ 099 public TypeConstraintException(String message, String errorCode, Throwable exception) { 100 super( message ); 101 this.errorCode = errorCode; 102 this.linkedException = exception; 103 } 104 105 /** 106 * Get the vendor specific error code 107 * 108 * @return a string specifying the vendor specific error code 109 */ 110 public String getErrorCode() { 111 return this.errorCode; 112 } 113 114 /** 115 * Get the linked exception 116 * 117 * @return the linked Exception, null if none exists 118 */ 119 public Throwable getLinkedException() { 120 return linkedException; 121 } 122 123 /** 124 * Add a linked Exception. 125 * 126 * @param exception the linked Exception (A null value is permitted and 127 * indicates that the linked exception does not exist or 128 * is unknown). 129 */ 130 public synchronized void setLinkedException( Throwable exception ) { 131 this.linkedException = exception; 132 } 133 134 /** 135 * Returns a short description of this TypeConstraintException. 136 * 137 */ 138 public String toString() { 139 return linkedException == null ? 140 super.toString() : 141 super.toString() + "\n - with linked exception:\n[" + 142 linkedException.toString()+ "]"; 143 } 144 145 /** 146 * Prints this TypeConstraintException and its stack trace (including the stack trace 147 * of the linkedException if it is non-null) to the PrintStream. 148 * 149 * @param s PrintStream to use for output 150 */ 151 public void printStackTrace( java.io.PrintStream s ) { 152 if( linkedException != null ) { 153 linkedException.printStackTrace(s); 154 s.println("--------------- linked to ------------------"); 155 } 156 157 super.printStackTrace(s); 158 } 159 160 /** 161 * Prints this TypeConstraintException and its stack trace (including the stack trace 162 * of the linkedException if it is non-null) to <tt>System.err</tt>. 163 * 164 */ 165 public void printStackTrace() { 166 printStackTrace(System.err); 167 } 168 169 }