From b94965e87929c6b4e42f9a2078dc0d910cc2637d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 09 May 2012 07:59:00 -0400
Subject: [PATCH] Merge pull request #17 from peterloron/master

---
 src/com/gitblit/IStoredSettings.java |   39 ++++++++++++++++++++++++++++++++++-----
 1 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/src/com/gitblit/IStoredSettings.java b/src/com/gitblit/IStoredSettings.java
index 0cc4bb4..2f45f09 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;
@@ -86,7 +87,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,7 +108,7 @@
 			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 "
@@ -116,7 +117,7 @@
 		}
 		return 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
@@ -131,7 +132,7 @@
 		if (props.containsKey(name)) {
 			String value = props.getProperty(name);
 			if (!StringUtils.isEmpty(value)) {
-				return value.charAt(0);
+				return value.trim().charAt(0);
 			}
 		}
 		return defaultValue;
@@ -151,10 +152,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");
 	}
 
 	/**
@@ -194,4 +213,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