1 /* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5 /* 6 * Copyright 2001, 2002,2004 The Apache Software Foundation. 7 * 8 * Licensed under the Apache License, Version 2.0 (the "License"); 9 * you may not use this file except in compliance with the License. 10 * 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, software 15 * distributed under the License is distributed on an "AS IS" BASIS, 16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 * See the License for the specific language governing permissions and 18 * limitations under the License. 19 */ 20 21 package com.sun.org.apache.xerces.internal.impl.dv; 22 23 import com.sun.org.apache.xerces.internal.utils.SecuritySupport; 24 import java.util.ResourceBundle; 25 import java.util.PropertyResourceBundle; 26 import java.util.MissingResourceException; 27 28 /** 29 * Base class for datatype exceptions. For DTD types, the exception can be 30 * created from an error message. For Schema types, it needs an error code 31 * (as defined in Appendix C of the structure spec), plus an array of arguents, 32 * for error message substitution. 33 * 34 * @xerces.internal 35 * 36 * @author Sandy Gao, IBM 37 * 38 * @version $Id: DatatypeException.java,v 1.6 2010-11-01 04:39:43 joehw Exp $ 39 */ 40 public class DatatypeException extends Exception { 41 42 /** Serialization version. */ 43 static final long serialVersionUID = 1940805832730465578L; 44 45 // used to store error code and error substitution arguments 46 protected String key; 47 protected Object[] args; 48 49 /** 50 * Create a new datatype exception by providing an error code and a list 51 * of error message substitution arguments. 52 * 53 * @param key error code 54 * @param args error arguments 55 */ 56 public DatatypeException(String key, Object[] args) { 57 super(key); 58 this.key = key; 59 this.args = args; 60 } 61 62 /** 63 * Return the error code 64 * 65 * @return error code 66 */ 67 public String getKey() { 68 return key; 69 } 70 71 /** 72 * Return the list of error arguments 73 * 74 * @return error arguments 75 */ 76 public Object[] getArgs() { 77 return args; 78 } 79 80 /** 81 * Overrides this method to get the formatted&localized error message. 82 * 83 * REVISIT: the system locale is used to load the property file. 84 * do we want to allow the appilcation to specify a 85 * different locale? 86 */ 87 public String getMessage() { 88 ResourceBundle resourceBundle = null; 89 resourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages"); 90 if (resourceBundle == null) 91 throw new MissingResourceException("Property file not found!", "com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", key); 92 93 String msg = resourceBundle.getString(key); 94 if (msg == null) { 95 msg = resourceBundle.getString("BadMessageKey"); 96 throw new MissingResourceException(msg, "com.sun.org.apache.xerces.internal.impl.msg.XMLSchemaMessages", key); 97 } 98 99 if (args != null) { 100 try { 101 msg = java.text.MessageFormat.format(msg, args); 102 } catch (Exception e) { 103 msg = resourceBundle.getString("FormatFailed"); 104 msg += " " + resourceBundle.getString(key); 105 } 106 } 107 108 return msg; 109 } 110 }