001: /**
002: * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, version 2.1, dated February 1999.
003: *
004: * This program is free software; you can redistribute it and/or modify
005: * it under the terms of the latest version of the GNU Lesser General
006: * Public License as published by the Free Software Foundation;
007: *
008: * This program is distributed in the hope that it will be useful,
009: * but WITHOUT ANY WARRANTY; without even the implied warranty of
010: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
011: * GNU Lesser General Public License for more details.
012: *
013: * You should have received a copy of the GNU Lesser General Public License
014: * along with this program (LICENSE.txt); if not, write to the Free Software
015: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
016: */package org.jamwiki;
017:
018: import org.jamwiki.utils.WikiLogger;
019: import org.apache.commons.lang.StringEscapeUtils;
020:
021: /**
022: * This class is a utility class useful for storing messages key and object
023: * values that can later be displayed using the jstl fmt:message tag.
024: */
025: public class WikiMessage {
026:
027: private static final WikiLogger logger = WikiLogger
028: .getLogger(WikiMessage.class.getName());
029: private final String key;
030: private String[] params = null;
031:
032: /**
033: * Create a new message that is mapped to the specified ApplicationResources
034: * key value.
035: *
036: * @param key The ApplicationResources key that corresponds to the message
037: * to display.
038: */
039: public WikiMessage(String key) {
040: this .key = key;
041: }
042:
043: /**
044: * Create a new message that is mapped to the specified ApplicationResources
045: * key value using a single parameter.
046: *
047: * @param key The ApplicationResources key that corresponds to the message
048: * to display.
049: * @param param1 The parameter that corresponds to the {0} param in the
050: * specified message key value. Note that this parameter is automatically
051: * HTML escaped to prevent erorrs in display.
052: */
053: public WikiMessage(String key, String param1) {
054: this .key = key;
055: this .params = new String[1];
056: params[0] = StringEscapeUtils.escapeHtml(param1);
057: }
058:
059: /**
060: * Create a new message that is mapped to the specified ApplicationResources
061: * key value using two parameters.
062: *
063: * @param key The ApplicationResources key that corresponds to the message
064: * to display.
065: * @param param1 The parameter that corresponds to the {0} param in the
066: * specified message key value. Note that this parameter is automatically
067: * HTML escaped to prevent erorrs in display.
068: * @param param2 The parameter that corresponds to the {1} param in the
069: * specified message key value. Note that this parameter is automatically
070: * HTML escaped to prevent erorrs in display.
071: */
072: public WikiMessage(String key, String param1, String param2) {
073: this .key = key;
074: this .params = new String[2];
075: params[0] = StringEscapeUtils.escapeHtml(param1);
076: params[1] = StringEscapeUtils.escapeHtml(param2);
077: }
078:
079: /**
080: * Create a new message that is mapped to the specified ApplicationResources
081: * key value using an array of parameters.
082: *
083: * @param key The ApplicationResources key that corresponds to the message
084: * to display.
085: * @param params An array of parameters that correspond to the {0}, {1}, etc
086: * params in the specified message key value. Note that these parameters are
087: * automatically HTML escaped to prevent erorrs in display.
088: */
089: public WikiMessage(String key, String[] params) {
090: this .key = key;
091: if (params != null) {
092: this .params = new String[params.length];
093: for (int i = 0; i < params.length; i++) {
094: this .params[i] = StringEscapeUtils
095: .escapeHtml(params[i]);
096: }
097: }
098: }
099:
100: /**
101: * Return the ApplicationResources message key associated with this message.
102: *
103: * @return The ApplicationResources message key associated with this message.
104: */
105: public String getKey() {
106: return this .key;
107: }
108:
109: /**
110: * Return the array of parameter objects associated with this message.
111: *
112: * @return The array of parameter objects associated with this message.
113: */
114: public String[] getParams() {
115: return this .params;
116: }
117:
118: /**
119: * This set method allows message parameters to be set without being escaped.
120: * Note that this can be a gaping security hole as it opens the site up to
121: * cross-site scripting attacks. USE THIS METHOD ONLY IF YOU KNOW WHAT YOU ARE
122: * DOING!
123: *
124: * @param params The array of parameter objects to associate with this message.
125: */
126: public void setParamsWithoutEscaping(String[] params) {
127: this.params = params;
128: }
129: }
|