James Moger
2014-11-04 4e84166db5c5538e3984d9d2d6bb1f9902e65ee0
src/main/java/com/gitblit/utils/StringUtils.java
@@ -127,12 +127,28 @@
            retStr.append("%2F");
         } else if (inStr.charAt(i) == ' ') {
            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);
   }
   /**
@@ -293,7 +309,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) {
@@ -384,7 +400,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;
@@ -556,6 +572,20 @@
   }
   /**
    * Returns the file extension of a path.
    *
    * @param path
    * @return a blank string or a file extension
    */
   public static String stripFileExtension(String path) {
      int lastDot = path.lastIndexOf('.');
      if (lastDot > -1) {
         return path.substring(0, lastDot);
      }
      return path;
   }
   /**
    * Replace all occurences of a substring within a string with
    * another string.
    *
@@ -614,7 +644,7 @@
            // ignore unsupported charsets
         }
      }
      if (value.startsWith("\uFEFF")) {
      if (value != null && value.startsWith("\uFEFF")) {
         // strip UTF-8 BOM
            return value.substring(1);
        }
@@ -733,4 +763,25 @@
      }
      return input.replace('\n',' ').replace('\r',  ' ').trim();
   }
   /**
    * Encode the username for user in an url.
    *
    * @param name
    * @return the encoded name
    */
   public static String encodeUsername(String name) {
      return name.replace("@", "%40").replace(" ", "%20").replace("\\", "%5C");
   }
   /**
    * Decode a username from an encoded url.
    *
    * @param name
    * @return the decoded name
    */
   public static String decodeUsername(String name) {
      return name.replace("%40", "@").replace("%20", " ").replace("%5C", "\\");
   }
}