    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 */
    017package org.apache.commons.validator;
    018
    019import 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$
    028 */
    029//TODO mutable non-private fields
    030public class Msg implements Cloneable, Serializable {
    031
    032    private static final long serialVersionUID = 5690015734364127124L;
    033
    034    /**
    035     * The resource bundle name that this Msg's <code>key</code> should be
    036     * resolved in (optional).
    037     * @since Validator 1.1
    038     */
    039    protected String bundle = null;
    040
    041    /**
    042     * The key or value of the argument.
    043     */
    044    protected String key = null;
    045
    046    /**
    047     * The name dependency that this argument goes with (optional).
    048     */
    049    protected String name = null;
    050
    051    /**
    052     * Whether or not the key is a message resource (optional).  Defaults to
    053     * true.  If it is 'true', the value will try to be resolved as a message
    054     * resource.
    055     * @since Validator 1.1.4
    056     */
    057    protected boolean resource = true;
    058
    059    /**
    060     * Returns the resource bundle name.
    061     * @return The bundle name.
    062     * @since Validator 1.1
    063     */
    064    public String getBundle() {
    065        return this.bundle;
    066    }
    067
    068    /**
    069     * Sets the resource bundle name.
    070     * @param bundle The new bundle name.
    071     * @since Validator 1.1
    072     */
    073    public void setBundle(String bundle) {
    074        this.bundle = bundle;
    075    }
    076
    077    /**
    078     * Gets the name of the dependency.
    079     * @return The dependency name.
    080     */
    081    public String getName() {
    082        return name;
    083    }
    084
    085    /**
    086     * Sets the name of the dependency.
    087     * @param name The dependency name.
    088     */
    089    public void setName(String name) {
    090        this.name = name;
    091    }
    092
    093    /**
    094     * Gets the key/value.
    095     * @return The message key/value.
    096     */
    097    public String getKey() {
    098        return key;
    099    }
    100
    101    /**
    102     * Sets the key/value.
    103     * @param key The message key/value.
    104     */
    105    public void setKey(String key) {
    106        this.key = key;
    107    }
    108
    109    /**
    110     * Tests whether or not the key is a resource key or literal value.
    111     * @return <code>true</code> if key is a resource key.
    112     * @since Validator 1.1.4
    113     */
    114    public boolean isResource() {
    115        return this.resource;
    116    }
    117
    118    /**
    119     * Sets whether or not the key is a resource.
    120     * @param resource If true indicates the key is a resource.
    121     * @since Validator 1.1.4
    122     */
    123    public void setResource(boolean resource) {
    124        this.resource = resource;
    125    }
    126
    127    /**
    128     * Creates and returns a copy of this object.
    129     * @return A copy of the Msg.
    130     */
    131    @Override
    132    public Object clone() {
    133        try {
    134            return super.clone();
    135
    136        } catch(CloneNotSupportedException e) {
    137            throw new RuntimeException(e.toString());
    138        }
    139    }
    140
    141    /**
    142     * Returns a string representation of the object.
    143     * @return Msg String representation.
    144     */
    145    @Override
    146    public String toString() {
    147        StringBuilder results = new StringBuilder();
    148
    149        results.append("Msg: name=");
    150        results.append(name);
    151        results.append("  key=");
    152        results.append(key);
    153        results.append("  resource=");
    154        results.append(resource);
    155        results.append("  bundle=");
    156        results.append(bundle);
    157        results.append("\n");
    158
    159        return results.toString();
    160    }
    161
    162}