001: /*
002: * ====================================================================
003: * JAFFA - Java Application Framework For All
004: *
005: * Copyright (C) 2002 JAFFA Development Group
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation; either
010: * version 2.1 of the License, or (at your option) any later version.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this library; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: *
021: * Redistribution and use of this software and associated documentation ("Software"),
022: * with or without modification, are permitted provided that the following conditions are met:
023: * 1. Redistributions of source code must retain copyright statements and notices.
024: * Redistributions must also contain a copy of this document.
025: * 2. Redistributions in binary form must reproduce the above copyright notice,
026: * this list of conditions and the following disclaimer in the documentation
027: * and/or other materials provided with the distribution.
028: * 3. The name "JAFFA" must not be used to endorse or promote products derived from
029: * this Software without prior written permission. For written permission,
030: * please contact mail to: jaffagroup@yahoo.com.
031: * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA"
032: * appear in their names without prior written permission.
033: * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net).
034: *
035: * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
039: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046: * SUCH DAMAGE.
047: * ====================================================================
048: */
049:
050: package org.jaffa.datatypes;
051:
052: import org.jaffa.exceptions.ApplicationException;
053:
054: /** This is the base class for all the exceptions thrown by the FieldValidator.
055: */
056: public abstract class ValidationException extends ApplicationException {
057:
058: /** Creates an exception with the errorCode.
059: * @param errorCode the errorCode
060: */
061: protected ValidationException(String errorCode) {
062: this (errorCode, null);
063: }
064:
065: /** Creates an exception with the errorCode.
066: * @param errorCode the errorCode
067: * @param field the field on which the validation exception is being thrown. This can be set later too.
068: */
069: protected ValidationException(String errorCode, String field) {
070: this (errorCode, field, null);
071: }
072:
073: /** Creates an exception with the errorCode and a cause.
074: * This will merge the 'field' and the 'arguments' into a single Object array and use that for constructing the message. Hence, it is imperative that the error message has the field as the first argument.
075: * @param errorCode the errorCode.
076: * @param field the field on which the validation exception is being thrown. This can be set later too.
077: * @param arguments the arguments, if any, that need to be merged into the error message from the resource bundle.
078: */
079: protected ValidationException(String errorCode, String field,
080: Object[] arguments) {
081: this (errorCode, field, arguments, null);
082: }
083:
084: /** Creates an exception with the errorCode and a cause.
085: * This will merge the 'field' and the 'arguments' into a single Object array and use that for constructing the message. Hence, it is imperative that the error message has the field as the first argument.
086: * @param errorCode the errorCode.
087: * @param field the field on which the validation exception is being thrown. This can be set later too.
088: * @param arguments the arguments, if any, that need to be merged into the error message from the resource bundle.
089: * @param cause the cause.
090: */
091: protected ValidationException(String errorCode, String field,
092: Object[] arguments, Throwable cause) {
093: super (errorCode, createObjectArray(field, arguments), cause);
094: }
095:
096: /** Sets the field after the exception has been constructed.
097: * This will create a new argument array by adding this value and the original 'arguments' used in constructing this object.
098: * This new argument array will be used to construct the error message.
099: * @param field the field on which the validation exception was thrown.
100: */
101: public void setField(String field) {
102: super .m_arguments = createObjectArray(field, super .m_arguments);
103: }
104:
105: /** This will merge the field + arguments into one object array.
106: */
107: private static Object[] createObjectArray(String field,
108: Object[] arguments) {
109: Object[] out = null;
110: if (field != null
111: || (arguments != null && arguments.length > 0)) {
112: out = new Object[(field != null ? 1 : 0)
113: + (arguments != null ? arguments.length : 0)];
114: int i = 0;
115:
116: if (field != null)
117: out[i++] = field;
118:
119: if (arguments != null) {
120: for (int j = 0; j < arguments.length; j++)
121: out[i++] = arguments[j];
122: }
123: }
124: return out;
125: }
126:
127: }
|