001: /*
002: * JBoss, the OpenSource J2EE webOS
003: *
004: * Distributable under LGPL license.
005: * See terms of license at gnu.org.
006: */
007: package hero.interfaces;
008:
009: import java.util.Collection;
010:
011: /**
012: * An instance of this class is thrown when a Value Object
013: * contains an invalid value. It parameters can then be used
014: * with {@link java.text.MessageFormat MessageFormat} to get
015: * right message. The message this exceptions contains is not
016: * the text but the key to get the right text from it.
017: *
018: * @author Andreas Schaefer
019: * @version $Revision: 1.1 $
020: **/
021: public class InvalidValueException extends Exception {
022:
023: // -------------------------------------------------------------------------
024: // Static
025: // -------------------------------------------------------------------------
026:
027: // -------------------------------------------------------------------------
028: // Members
029: // -------------------------------------------------------------------------
030:
031: private Object[] mParameters = new Object[0];
032:
033: // -------------------------------------------------------------------------
034: // Constructor
035: // -------------------------------------------------------------------------
036:
037: /**
038: * Constructor with a message handler and a list of parameters
039: *
040: * @param pMessageHandler Handler to lookup the right message
041: * @param pParameters One Parameter, array of parameters or a Collection
042: * of parameters or null
043: **/
044: public InvalidValueException(String pMessageHandler,
045: Object pParameters) {
046: super (pMessageHandler);
047: if (pParameters != null) {
048: if (pParameters instanceof Collection) {
049: mParameters = ((Collection) pParameters)
050: .toArray(new Object[0]);
051: } else {
052: if (pParameters instanceof Object[]) {
053: mParameters = (Object[]) pParameters;
054: } else {
055: mParameters = new Object[] { pParameters };
056: }
057: }
058: }
059: }
060:
061: // -------------------------------------------------------------------------
062: // Methods
063: // -------------------------------------------------------------------------
064:
065: /**
066: * Returns the array of parameters coming along
067: *
068: * @return Array of parameters which are always defined but can be empty
069: **/
070: public Object[] getParameters() {
071: return mParameters;
072: }
073:
074: /**
075: * Describes the instance and its content for debugging purpose
076: *
077: * @return Using the one from the super class
078: **/
079: public String toString() {
080: return super .toString();
081: }
082:
083: /**
084: * Determines if the given instance is the same as this instance
085: * based on its content. This means that it has to be of the same
086: * class ( or subclass ) and it has to have the same content
087: *
088: * @return Returns the equals value from the super class
089: **/
090: public boolean equals(Object pTest) {
091: return super .equals(pTest);
092: }
093:
094: /**
095: * Returns the hashcode of this instance
096: *
097: * @return Hashcode of the super class
098: **/
099: public int hashCode() {
100: return super.hashCode();
101: }
102:
103: }
|