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: 493905 $ $Date: 2007-01-08 03:11:38 +0100 (Mo, 08. Jan 2007) $
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 }