From 2e141ff31dedaa6dfefc4af47eda803d8dbb3eff Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 01 Sep 2015 08:49:02 -0400
Subject: [PATCH] Fix #909: Add missing SLFJ dependencies in Manager build
---
src/main/java/com/gitblit/utils/StringUtils.java | 37 +++++++++++++++++++++++++++++++++----
1 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/gitblit/utils/StringUtils.java b/src/main/java/com/gitblit/utils/StringUtils.java
index 8a2af07..643c52c 100644
--- a/src/main/java/com/gitblit/utils/StringUtils.java
+++ b/src/main/java/com/gitblit/utils/StringUtils.java
@@ -79,6 +79,19 @@
* @return plain text escaped for html
*/
public static String escapeForHtml(String inStr, boolean changeSpace) {
+ return escapeForHtml(inStr, changeSpace, 4);
+ }
+
+ /**
+ * Prepare text for html presentation. Replace sensitive characters with
+ * html entities.
+ *
+ * @param inStr
+ * @param changeSpace
+ * @param tabLength
+ * @return plain text escaped for html
+ */
+ public static String escapeForHtml(String inStr, boolean changeSpace, int tabLength) {
StringBuilder retStr = new StringBuilder();
int i = 0;
while (i < inStr.length()) {
@@ -93,7 +106,9 @@
} else if (changeSpace && inStr.charAt(i) == ' ') {
retStr.append(" ");
} else if (changeSpace && inStr.charAt(i) == '\t') {
- retStr.append(" ");
+ for (int j = 0; j < tabLength; j++) {
+ retStr.append(" ");
+ }
} else {
retStr.append(inStr.charAt(i));
}
@@ -129,12 +144,26 @@
retStr.append("%20");
} else if (inStr.charAt(i) == '&') {
retStr.append("%26");
+ } else if (inStr.charAt(i) == '+') {
+ retStr.append("%2B");
} else {
retStr.append(inStr.charAt(i));
}
i++;
}
return retStr.toString();
+ }
+
+ /**
+ * Flatten the list of strings into a single string with the specified
+ * separator.
+ *
+ * @param values
+ * @param separator
+ * @return flattened list
+ */
+ public static String flattenStrings(String[] values, String separator) {
+ return flattenStrings(Arrays.asList(values), separator);
}
/**
@@ -295,7 +324,7 @@
* @param bytes
* @return byte array as hex string
*/
- private static String toHex(byte[] bytes) {
+ public static String toHex(byte[] bytes) {
StringBuilder sb = new StringBuilder(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
if ((bytes[i] & 0xff) < 0x10) {
@@ -386,7 +415,7 @@
* @return the first invalid character found or null if string is acceptable
*/
public static Character findInvalidCharacter(String name) {
- char[] validChars = { '/', '.', '_', '-', '~' };
+ char[] validChars = { '/', '.', '_', '-', '~', '+' };
for (char c : name.toCharArray()) {
if (!Character.isLetterOrDigit(c)) {
boolean ok = false;
@@ -630,7 +659,7 @@
// ignore unsupported charsets
}
}
- if (value.startsWith("\uFEFF")) {
+ if (value != null && value.startsWith("\uFEFF")) {
// strip UTF-8 BOM
return value.substring(1);
}
--
Gitblit v1.9.1