From 3fb41fdec5712b792da05e8549c2c0a31f112ca0 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 10 Jul 2012 23:29:56 -0400 Subject: [PATCH] Prohibit trailing slashes in repository names (issue 104) --- src/com/gitblit/IStoredSettings.java | 128 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 125 insertions(+), 3 deletions(-) diff --git a/src/com/gitblit/IStoredSettings.java b/src/com/gitblit/IStoredSettings.java index b380c63..790f8b6 100644 --- a/src/com/gitblit/IStoredSettings.java +++ b/src/com/gitblit/IStoredSettings.java @@ -16,7 +16,9 @@ package com.gitblit; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.Properties; import org.slf4j.Logger; @@ -86,7 +88,7 @@ if (props.containsKey(name)) { String value = props.getProperty(name); if (!StringUtils.isEmpty(value)) { - return Boolean.parseBoolean(value); + return Boolean.parseBoolean(value.trim()); } } return defaultValue; @@ -107,11 +109,86 @@ 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 " + defaultValue); + } + } + return defaultValue; + } + + /** + * Returns the long value for the specified key. If the key does not + * exist or the value for the key can not be interpreted as an long, the + * defaultValue is returned. + * + * @param key + * @param defaultValue + * @return key value or defaultValue + */ + public long getLong(String name, long defaultValue) { + Properties props = getSettings(); + if (props.containsKey(name)) { + try { + String value = props.getProperty(name); + if (!StringUtils.isEmpty(value)) { + return Long.parseLong(value.trim()); + } + } catch (NumberFormatException e) { + logger.warn("Failed to parse long for " + name + " using default of " + + defaultValue); + } + } + return defaultValue; + } + + /** + * Returns an int filesize from a string value such as 50m or 50mb + * @param name + * @param defaultValue + * @return an int filesize or defaultValue if the key does not exist or can + * not be parsed + */ + public int getFilesize(String name, int defaultValue) { + String val = getString(name, null); + if (StringUtils.isEmpty(val)) { + return defaultValue; + } + return com.gitblit.utils.FileUtils.convertSizeToInt(val, defaultValue); + } + + /** + * Returns an long filesize from a string value such as 50m or 50mb + * @param name + * @param defaultValue + * @return a long filesize or defaultValue if the key does not exist or can + * not be parsed + */ + public long getFilesize(String key, long defaultValue) { + String val = getString(key, null); + if (StringUtils.isEmpty(val)) { + return defaultValue; + } + return com.gitblit.utils.FileUtils.convertSizeToLong(val, 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 (!StringUtils.isEmpty(value)) { + return value.trim().charAt(0); } } return defaultValue; @@ -131,10 +208,28 @@ if (props.containsKey(name)) { String value = props.getProperty(name); if (value != null) { - return value; + return value.trim(); } } return defaultValue; + } + + /** + * Returns the string value for the specified key. If the key does not + * exist an exception is thrown. + * + * @param key + * @return key value + */ + public String getRequiredString(String name) { + Properties props = getSettings(); + if (props.containsKey(name)) { + String value = props.getProperty(name); + if (value != null) { + return value.trim(); + } + } + throw new RuntimeException("Property (" + name + ") does not exist"); } /** @@ -164,6 +259,23 @@ } return strings; } + + /** + * Returns a map of strings from the specified key. + * + * @param name + * @return map of string, string + */ + public Map<String, String> getMap(String name) { + Map<String, String> map = new LinkedHashMap<String, String>(); + for (String string : getStrings(name)) { + String[] kvp = string.split("=", 2); + String key = kvp[0]; + String value = kvp[1]; + map.put(key, value); + } + return map; + } /** * Override the specified key with the specified value. @@ -174,4 +286,14 @@ 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