From d2ab7a68e4c3f1e619af3576e1443afa2f98cdfd Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 06 Mar 2014 14:32:08 -0500
Subject: [PATCH] Fixed bug in merge: improper use of force and failing on FORCED result
---
src/main/java/com/gitblit/IStoredSettings.java | 98 ++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 76 insertions(+), 22 deletions(-)
diff --git a/src/main/java/com/gitblit/IStoredSettings.java b/src/main/java/com/gitblit/IStoredSettings.java
index 246262d..6b58e89 100644
--- a/src/main/java/com/gitblit/IStoredSettings.java
+++ b/src/main/java/com/gitblit/IStoredSettings.java
@@ -28,9 +28,9 @@
/**
* Base class for stored settings implementations.
- *
+ *
* @author James Moger
- *
+ *
*/
public abstract class IStoredSettings {
@@ -53,7 +53,7 @@
/**
* 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
*/
@@ -78,7 +78,7 @@
* 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
@@ -98,7 +98,7 @@
* 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
@@ -123,7 +123,7 @@
* 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
@@ -143,7 +143,7 @@
}
return defaultValue;
}
-
+
/**
* Returns an int filesize from a string value such as 50m or 50mb
* @param name
@@ -158,10 +158,10 @@
}
return com.gitblit.utils.FileUtils.convertSizeToInt(val, defaultValue);
}
-
+
/**
* Returns an long filesize from a string value such as 50m or 50mb
- * @param name
+ * @param n
* @param defaultValue
* @return a long filesize or defaultValue if the key does not exist or can
* not be parsed
@@ -178,7 +178,7 @@
* 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
@@ -198,7 +198,7 @@
* 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
@@ -213,11 +213,11 @@
}
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
*/
@@ -228,13 +228,13 @@
if (value != null) {
return value.trim();
}
- }
+ }
throw new RuntimeException("Property (" + name + ") does not exist");
}
/**
* Returns a list of space-separated strings from the specified key.
- *
+ *
* @param name
* @return list of strings
*/
@@ -245,7 +245,7 @@
/**
* Returns a list of strings from the specified key using the specified
* string separator.
- *
+ *
* @param name
* @param separator
* @return list of strings
@@ -259,10 +259,45 @@
}
return strings;
}
-
+
+ /**
+ * Returns a list of space-separated integers from the specified key.
+ *
+ * @param name
+ * @return list of strings
+ */
+ public List<Integer> getIntegers(String name) {
+ return getIntegers(name, " ");
+ }
+
+ /**
+ * Returns a list of integers from the specified key using the specified
+ * string separator.
+ *
+ * @param name
+ * @param separator
+ * @return list of integers
+ */
+ public List<Integer> getIntegers(String name, String separator) {
+ List<Integer> ints = new ArrayList<Integer>();
+ Properties props = getSettings();
+ if (props.containsKey(name)) {
+ String value = props.getProperty(name);
+ List<String> strings = StringUtils.getStringsFromValue(value, separator);
+ for (String str : strings) {
+ try {
+ int i = Integer.parseInt(str);
+ ints.add(i);
+ } catch (NumberFormatException e) {
+ }
+ }
+ }
+ return ints;
+ }
+
/**
* Returns a map of strings from the specified key.
- *
+ *
* @param name
* @return map of string, string
*/
@@ -271,7 +306,7 @@
for (String string : getStrings(name)) {
String[] kvp = string.split("=", 2);
String key = kvp[0];
- String value = kvp[1];
+ String value = kvp[1];
map.put(key, value);
}
return map;
@@ -279,7 +314,7 @@
/**
* Override the specified key with the specified value.
- *
+ *
* @param key
* @param value
*/
@@ -289,7 +324,7 @@
/**
* Override the specified key with the specified value.
- *
+ *
* @param key
* @param value
*/
@@ -298,12 +333,31 @@
}
/**
+ * Override the specified key with the specified value.
+ *
+ * @param key
+ * @param value
+ */
+ public void overrideSetting(String key, boolean 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);
+
+ /**
+ * Merge all settings from the settings parameter into this instance.
+ *
+ * @param settings
+ */
+ public void merge(IStoredSettings settings) {
+ getSettings().putAll(settings.getSettings());
+ }
}
\ No newline at end of file
--
Gitblit v1.9.1