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: * <p>
023: * A default argument or an argument for a
024: * specific validator definition (ex: required)
025: * can be stored to pass into a message as parameters. This can be used in a
026: * pluggable validator for constructing locale
027: * sensitive messages by using <code>java.text.MessageFormat</code>
028: * or an equivalent class. The resource field can be
029: * used to determine if the value stored in the argument
030: * is a value to be retrieved from a locale sensitive
031: * message retrieval system like <code>java.util.PropertyResourceBundle</code>.
032: * The resource field defaults to 'true'.
033: * </p>
034: * <p>Instances of this class are configured with an <arg> xml element.</p>
035: *
036: * @version $Revision: 478334 $ $Date: 2006-11-22 21:31:54 +0000 (Wed, 22 Nov 2006) $
037: */
038: public class Arg implements Cloneable, Serializable {
039:
040: /**
041: * The resource bundle name that this Arg's <code>key</code> should be
042: * resolved in (optional).
043: * @since Validator 1.1
044: */
045: protected String bundle = null;
046:
047: /**
048: * The key or value of the argument.
049: */
050: protected String key = null;
051:
052: /**
053: * The name dependency that this argument goes with (optional).
054: */
055: protected String name = null;
056:
057: /**
058: * This argument's position in the message. Set postion=0 to
059: * make a replacement in this string: "some msg {0}".
060: * @since Validator 1.1
061: */
062: protected int position = -1;
063:
064: /**
065: * Whether or not the key is a message resource (optional). Defaults to
066: * true. If it is 'true', the value will try to be resolved as a message
067: * resource.
068: */
069: protected boolean resource = true;
070:
071: /**
072: * Creates and returns a copy of this object.
073: * @return A copy of this object.
074: */
075: public Object clone() {
076: try {
077: return super .clone();
078:
079: } catch (CloneNotSupportedException e) {
080: throw new RuntimeException(e.toString());
081: }
082: }
083:
084: /**
085: * Returns the resource bundle name.
086: * @return the bundle name.
087: * @since Validator 1.1
088: */
089: public String getBundle() {
090: return this .bundle;
091: }
092:
093: /**
094: * Gets the key/value.
095: * @return the key value.
096: */
097: public String getKey() {
098: return this .key;
099: }
100:
101: /**
102: * Gets the name of the dependency.
103: * @return the name of the dependency.
104: */
105: public String getName() {
106: return this .name;
107: }
108:
109: /**
110: * Argument's replacement position.
111: * @return This argument's replacement position.
112: */
113: public int getPosition() {
114: return this .position;
115: }
116:
117: /**
118: * Tests whether or not the key is a resource key or literal value.
119: * @return <code>true</code> if key is a resource key.
120: */
121: public boolean isResource() {
122: return this .resource;
123: }
124:
125: /**
126: * Sets the resource bundle name.
127: * @param bundle The new bundle name.
128: * @since Validator 1.1
129: */
130: public void setBundle(String bundle) {
131: this .bundle = bundle;
132: }
133:
134: /**
135: * Sets the key/value.
136: * @param key They to access the argument.
137: */
138: public void setKey(String key) {
139: this .key = key;
140: }
141:
142: /**
143: * Sets the name of the dependency.
144: * @param name the name of the dependency.
145: */
146: public void setName(String name) {
147: this .name = name;
148: }
149:
150: /**
151: * Set this argument's replacement position.
152: * @param position set this argument's replacement position.
153: */
154: public void setPosition(int position) {
155: this .position = position;
156: }
157:
158: /**
159: * Sets whether or not the key is a resource.
160: * @param resource If true indicates the key is a resource.
161: */
162: public void setResource(boolean resource) {
163: this .resource = resource;
164: }
165:
166: /**
167: * Returns a string representation of the object.
168: * @return a string representation of the object.
169: */
170: public String toString() {
171: StringBuffer results = new StringBuffer();
172:
173: results.append("Arg: name=");
174: results.append(name);
175: results.append(" key=");
176: results.append(key);
177: results.append(" position=");
178: results.append(position);
179: results.append(" bundle=");
180: results.append(bundle);
181: results.append(" resource=");
182: results.append(resource);
183: results.append("\n");
184:
185: return results.toString();
186: }
187:
188: }
|