From 86bea9e0016b2890db8ba83049dd4e89653a0a5e Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 16 Mar 2012 17:29:39 -0400 Subject: [PATCH] Ensure that the welcome message is interpreted as UTF-8 (issue 74) --- src/com/gitblit/IStoredSettings.java | 101 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 96 insertions(+), 5 deletions(-) diff --git a/src/com/gitblit/IStoredSettings.java b/src/com/gitblit/IStoredSettings.java index e220a81..2d8b605 100644 --- a/src/com/gitblit/IStoredSettings.java +++ b/src/com/gitblit/IStoredSettings.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Properties; import org.slf4j.Logger; @@ -24,6 +25,12 @@ import com.gitblit.utils.StringUtils; +/** + * Base class for stored settings implementations. + * + * @author James Moger + * + */ public abstract class IStoredSettings { protected final Logger logger; @@ -42,6 +49,13 @@ return props; } + /** + * Returns the list of keys whose name starts with the specified prefix. If + * the prefix is null or empty, all key names are returned. + * + * @param startingWith + * @return list of keys + */ public List<String> getAllKeys(String startingWith) { List<String> keys = new ArrayList<String>(); Properties props = getSettings(); @@ -59,24 +73,42 @@ return keys; } + /** + * Returns the boolean value for the specified key. If the key does not + * exist or the value for the key can not be interpreted as a boolean, the + * defaultValue is returned. + * + * @param key + * @param defaultValue + * @return key value or defaultValue + */ public boolean getBoolean(String name, boolean defaultValue) { Properties props = getSettings(); if (props.containsKey(name)) { String value = props.getProperty(name); if (!StringUtils.isEmpty(value)) { - return Boolean.parseBoolean(value); + return Boolean.parseBoolean(value.trim()); } } return defaultValue; } + /** + * Returns the integer value for the specified key. If the key does not + * exist or the value for the key can not be interpreted as an integer, the + * defaultValue is returned. + * + * @param key + * @param defaultValue + * @return key value or defaultValue + */ public int getInteger(String name, int defaultValue) { Properties props = getSettings(); if (props.containsKey(name)) { try { String value = props.getProperty(name); if (!StringUtils.isEmpty(value)) { - return Integer.parseInt(value); + return Integer.parseInt(value.trim()); } } catch (NumberFormatException e) { logger.warn("Failed to parse integer for " + name + " using default of " @@ -86,21 +118,64 @@ return defaultValue; } - public String getString(String name, String defaultValue) { + /** + * Returns the char value for the specified key. If the key does not exist + * or the value for the key can not be interpreted as a char, the + * defaultValue is returned. + * + * @param key + * @param defaultValue + * @return key value or defaultValue + */ + public char getChar(String name, char defaultValue) { Properties props = getSettings(); if (props.containsKey(name)) { String value = props.getProperty(name); - if (value != null) { - return value; + if (!StringUtils.isEmpty(value)) { + return value.trim().charAt(0); } } return defaultValue; } + /** + * Returns the string value for the specified key. If the key does not exist + * or the value for the key can not be interpreted as a string, the + * defaultValue is returned. + * + * @param key + * @param defaultValue + * @return key value or defaultValue + */ + public String getString(String name, String defaultValue) { + Properties props = getSettings(); + if (props.containsKey(name)) { + String value = props.getProperty(name); + if (value != null) { + return value.trim(); + } + } + return defaultValue; + } + + /** + * Returns a list of space-separated strings from the specified key. + * + * @param name + * @return list of strings + */ public List<String> getStrings(String name) { return getStrings(name, " "); } + /** + * Returns a list of strings from the specified key using the specified + * string separator. + * + * @param name + * @param separator + * @return list of strings + */ public List<String> getStrings(String name, String separator) { List<String> strings = new ArrayList<String>(); Properties props = getSettings(); @@ -111,7 +186,23 @@ return strings; } + /** + * Override the specified key with the specified value. + * + * @param key + * @param value + */ public void overrideSetting(String key, String value) { overrides.put(key, value); } + + /** + * Updates the values for the specified keys and persists the entire + * configuration file. + * + * @param map + * of key, value pairs + * @return true if successful + */ + public abstract boolean saveSettings(Map<String, String> updatedSettings); } \ No newline at end of file -- Gitblit v1.9.1