1 /* 2 * $Id$ 3 * 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 package org.apache.struts.action; 22 23 import java.io.Serializable; 24 25 /** 26 * <p>An encapsulation of an individual message returned by the 27 * <code>validate</code> method of an <code>ActionForm</code>, consisting of a 28 * message key (to be used to look up message text in an appropriate message 29 * resources database) plus up to four placeholder objects that can be used 30 * for parametric replacement in the message text.</p> 31 * 32 * @version $Rev$ $Date: 2005-05-14 01:09:32 -0400 (Sat, 14 May 2005) 33 * $ 34 * @since Struts 1.1 35 */ 36 public class ActionMessage implements Serializable { 37 private static final long serialVersionUID = 5038146636915080725L; 38 39 // ----------------------------------------------------- Instance Variables 40 41 /** 42 * <p>The message key for this message.</p> 43 */ 44 protected String key = null; 45 46 /** 47 * The replacement values for this message. 48 */ 49 protected Object[] values = null; 50 51 /** 52 * <p>Indicates whether the key is taken to be as a bundle key [true] or 53 * literal value [false].</p> 54 */ 55 protected boolean resource = true; 56 57 // ----------------------------------------------------------- Constructors 58 59 /** 60 * <p>Construct an action message with no replacement values.</p> 61 * 62 * @param key Message key for this message 63 */ 64 public ActionMessage(String key) { 65 this(key, null); 66 } 67 68 /** 69 * <p>Construct an action message with the specified replacement 70 * values.</p> 71 * 72 * @param key Message key for this message 73 * @param value0 First replacement value 74 */ 75 public ActionMessage(String key, Object value0) { 76 this(key, new Object[] { value0 }); 77 } 78 79 /** 80 * <p>Construct an action message with the specified replacement 81 * values.</p> 82 * 83 * @param key Message key for this message 84 * @param value0 First replacement value 85 * @param value1 Second replacement value 86 */ 87 public ActionMessage(String key, Object value0, Object value1) { 88 this(key, new Object[] { value0, value1 }); 89 } 90 91 /** 92 * <p>Construct an action message with the specified replacement 93 * values.</p> 94 * 95 * @param key Message key for this message 96 * @param value0 First replacement value 97 * @param value1 Second replacement value 98 * @param value2 Third replacement value 99 */ 100 public ActionMessage(String key, Object value0, Object value1, Object value2) { 101 this(key, new Object[] { value0, value1, value2 }); 102 } 103 104 /** 105 * <p>Construct an action message with the specified replacement 106 * values.</p> 107 * 108 * @param key Message key for this message 109 * @param value0 First replacement value 110 * @param value1 Second replacement value 111 * @param value2 Third replacement value 112 * @param value3 Fourth replacement value 113 */ 114 public ActionMessage(String key, Object value0, Object value1, 115 Object value2, Object value3) { 116 this(key, new Object[] { value0, value1, value2, value3 }); 117 } 118 119 /** 120 * <p>Construct an action message with the specified replacement 121 * values.</p> 122 * 123 * @param key Message key for this message 124 * @param values Array of replacement values 125 */ 126 public ActionMessage(String key, Object[] values) { 127 this.key = key; 128 this.values = values; 129 this.resource = true; 130 } 131 132 /** 133 * <p>Construct an action message with the specified replacement 134 * values.</p> 135 * 136 * @param key Message key for this message 137 * @param resource Indicates whether the key is a bundle key or literal 138 * value 139 */ 140 public ActionMessage(String key, boolean resource) { 141 this.key = key; 142 this.resource = resource; 143 } 144 145 // --------------------------------------------------------- Public Methods 146 147 /** 148 * <p>Get the message key for this message.</p> 149 * 150 * @return The message key for this message. 151 */ 152 public String getKey() { 153 return (this.key); 154 } 155 156 /** 157 * <p>Get the replacement values for this message.</p> 158 * 159 * @return The replacement values for this message. 160 */ 161 public Object[] getValues() { 162 return (this.values); 163 } 164 165 /** 166 * <p>Indicate whether the key is taken to be as a bundle key [true] or 167 * literal value [false].</p> 168 * 169 * @return <code>true</code> if the key is a bundle key; 170 * <code>false</code> otherwise. 171 */ 172 public boolean isResource() { 173 return (this.resource); 174 } 175 176 /** 177 * <p>Returns a String in the format: key[value1, value2, etc].</p> 178 * 179 * @return String representation of this message 180 * @see java.lang.Object#toString() 181 */ 182 public String toString() { 183 StringBuilder buff = new StringBuilder(); 184 185 buff.append(this.key); 186 buff.append("["); 187 188 if (this.values != null) { 189 for (int i = 0; i < this.values.length; i++) { 190 buff.append(this.values[i]); 191 192 // don't append comma to last entry 193 if (i < (this.values.length - 1)) { 194 buff.append(", "); 195 } 196 } 197 } 198 199 buff.append("]"); 200 201 return buff.toString(); 202 } 203 }