View Javadoc

    1   /*
    2    * $Id: ActionMessage.java 471754 2006-11-06 14:55:09Z husted $
    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: 471754 $ $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      // ----------------------------------------------------- Instance Variables
    38
    39      /**
    40       * <p>The message key for this message.</p>
    41       */
    42      protected String key = null;
    43
    44      /**
    45       * <p>The replacement values for this mesasge.</p>
    46       */
    47      protected Object[] values = null;
    48
    49      /**
    50       * <p>Indicates whether the key is taken to be as a  bundle key [true] or
    51       * literal value [false].</p>
    52       */
    53      protected boolean resource = true;
    54
    55      // ----------------------------------------------------------- Constructors
    56
    57      /**
    58       * <p>Construct an action message with no replacement values.</p>
    59       *
    60       * @param key Message key for this message
    61       */
    62      public ActionMessage(String key) {
    63          this(key, null);
    64      }
    65
    66      /**
    67       * <p>Construct an action message with the specified replacement
    68       * values.</p>
    69       *
    70       * @param key    Message key for this message
    71       * @param value0 First replacement value
    72       */
    73      public ActionMessage(String key, Object value0) {
    74          this(key, new Object[] { value0 });
    75      }
    76
    77      /**
    78       * <p>Construct an action message with the specified replacement
    79       * values.</p>
    80       *
    81       * @param key    Message key for this message
    82       * @param value0 First replacement value
    83       * @param value1 Second replacement value
    84       */
    85      public ActionMessage(String key, Object value0, Object value1) {
    86          this(key, new Object[] { value0, value1 });
    87      }
    88
    89      /**
    90       * <p>Construct an action message with the specified replacement
    91       * values.</p>
    92       *
    93       * @param key    Message key for this message
    94       * @param value0 First replacement value
    95       * @param value1 Second replacement value
    96       * @param value2 Third replacement value
    97       */
    98      public ActionMessage(String key, Object value0, Object value1, Object value2) {
    99          this(key, new Object[] { value0, value1, value2 });
    100     }
    101
    102     /**
    103      * <p>Construct an action message with the specified replacement
    104      * values.</p>
    105      *
    106      * @param key    Message key for this message
    107      * @param value0 First replacement value
    108      * @param value1 Second replacement value
    109      * @param value2 Third replacement value
    110      * @param value3 Fourth replacement value
    111      */
    112     public ActionMessage(String key, Object value0, Object value1,
    113         Object value2, Object value3) {
    114         this(key, new Object[] { value0, value1, value2, value3 });
    115     }
    116
    117     /**
    118      * <p>Construct an action message with the specified replacement
    119      * values.</p>
    120      *
    121      * @param key    Message key for this message
    122      * @param values Array of replacement values
    123      */
    124     public ActionMessage(String key, Object[] values) {
    125         this.key = key;
    126         this.values = values;
    127         this.resource = true;
    128     }
    129
    130     /**
    131      * <p>Construct an action message with the specified replacement
    132      * values.</p>
    133      *
    134      * @param key      Message key for this message
    135      * @param resource Indicates whether the key is a bundle key or literal
    136      *                 value
    137      */
    138     public ActionMessage(String key, boolean resource) {
    139         this.key = key;
    140         this.resource = resource;
    141     }
    142
    143     // --------------------------------------------------------- Public Methods
    144
    145     /**
    146      * <p>Get the message key for this message.</p>
    147      *
    148      * @return The message key for this message.
    149      */
    150     public String getKey() {
    151         return (this.key);
    152     }
    153
    154     /**
    155      * <p>Get the replacement values for this message.</p>
    156      *
    157      * @return The replacement values for this message.
    158      */
    159     public Object[] getValues() {
    160         return (this.values);
    161     }
    162
    163     /**
    164      * <p>Indicate whether the key is taken to be as a  bundle key [true] or
    165      * literal value [false].</p>
    166      *
    167      * @return <code>true</code> if the key is a bundle key;
    168      *         <code>false</code> otherwise.
    169      */
    170     public boolean isResource() {
    171         return (this.resource);
    172     }
    173
    174     /**
    175      * <p>Returns a String in the format: key[value1, value2, etc].</p>
    176      *
    177      * @return String representation of this message
    178      * @see java.lang.Object#toString()
    179      */
    180     public String toString() {
    181         StringBuffer buff = new StringBuffer();
    182
    183         buff.append(this.key);
    184         buff.append("[");
    185
    186         if (this.values != null) {
    187             for (int i = 0; i < this.values.length; i++) {
    188                 buff.append(this.values[i]);
    189
    190                 // don't append comma to last entry
    191                 if (i < (this.values.length - 1)) {
    192                     buff.append(", ");
    193                 }
    194             }
    195         }
    196
    197         buff.append("]");
    198
    199         return buff.toString();
    200     }
    201 }