001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.commons.validator;
018    
019    import java.io.Serializable;
020    
021    /**
022     * An alternative message can be associated with a <code>Field</code>
023     * and a pluggable validator instead of using the default message
024     * stored in the <code>ValidatorAction</code> (aka pluggable validator).
025     * Instances of this class are configured with a &lt;msg&gt; xml element.
026     *
027     * @version $Revision: 493905 $ $Date: 2007-01-08 03:11:38 +0100 (Mo, 08. Jan 2007) $
028     */
029    public class Msg implements Cloneable, Serializable {
030    
031        /**
032         * The resource bundle name that this Msg's <code>key</code> should be
033         * resolved in (optional).
034         * @since Validator 1.1
035         */
036        protected String bundle = null;
037    
038        /**
039         * The key or value of the argument.
040         */
041        protected String key = null;
042    
043        /**
044         * The name dependency that this argument goes with (optional).
045         */
046        protected String name = null;
047    
048        /**
049         * Whether or not the key is a message resource (optional).  Defaults to
050         * true.  If it is 'true', the value will try to be resolved as a message
051         * resource.
052         * @since Validator 1.1.4
053         */
054        protected boolean resource = true;
055    
056        /**
057         * Returns the resource bundle name.
058         * @return The bundle name.
059         * @since Validator 1.1
060         */
061        public String getBundle() {
062            return this.bundle;
063        }
064    
065        /**
066         * Sets the resource bundle name.
067         * @param bundle The new bundle name.
068         * @since Validator 1.1
069         */
070        public void setBundle(String bundle) {
071            this.bundle = bundle;
072        }
073    
074        /**
075         * Gets the name of the dependency.
076         * @return The dependency name.
077         */
078        public String getName() {
079            return name;
080        }
081    
082        /**
083         * Sets the name of the dependency.
084         * @param name The dependency name.
085         */
086        public void setName(String name) {
087            this.name = name;
088        }
089    
090        /**
091         * Gets the key/value.
092         * @return The message key/value.
093         */
094        public String getKey() {
095            return key;
096        }
097    
098        /**
099         * Sets the key/value.
100         * @param key The message key/value.
101         */
102        public void setKey(String key) {
103            this.key = key;
104        }
105    
106        /**
107         * Tests whether or not the key is a resource key or literal value.
108         * @return <code>true</code> if key is a resource key.
109         * @since Validator 1.1.4
110         */
111        public boolean isResource() {
112            return this.resource;
113        }
114    
115        /**
116         * Sets whether or not the key is a resource.
117         * @param resource If true indicates the key is a resource.
118         * @since Validator 1.1.4
119         */
120        public void setResource(boolean resource) {
121            this.resource = resource;
122        }
123    
124        /**
125         * Creates and returns a copy of this object.
126         * @return A copy of the Msg.
127         */
128        public Object clone() {
129            try {
130                return super.clone();
131    
132            } catch(CloneNotSupportedException e) {
133                throw new RuntimeException(e.toString());
134            }
135        }
136    
137        /**
138         * Returns a string representation of the object.
139         * @return Msg String representation.
140         */
141        public String toString() {
142            StringBuffer results = new StringBuffer();
143    
144            results.append("Msg: name=");
145            results.append(name);
146            results.append("  key=");
147            results.append(key);
148            results.append("  resource=");
149            results.append(resource);
150            results.append("  bundle=");
151            results.append(bundle);
152            results.append("\n");
153    
154            return results.toString();
155        }
156    
157    }