Utils.java
package org.greenbytes.http.sfv;
import java.util.Map;
import java.util.Objects;
/**
* Common utility methods.
*/
public class Utils {
private Utils() {
}
/** check for character to be a decimal digit */
protected static boolean isDigit(char c) {
return c >= '0' && c <= '9';
}
/** check for character to be lowercase alphanumeric */
protected static boolean isLcAlpha(char c) {
return (c >= 'a' && c <= 'z');
}
/** check for character to be alphanumeric */
protected static boolean isAlpha(char c) {
return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
}
/**
* Checks a key for validity
* @param value to check
* @return checked value
*/
protected static String checkKey(String value) {
if (value == null || value.isEmpty()) {
throw new IllegalArgumentException("Key can not be null or empty");
}
for (int i = 0; i < value.length(); i++) {
char c = value.charAt(i);
if ((i == 0 && (c != '*' && !isLcAlpha(c)))
|| !(isLcAlpha(c) || isDigit(c) || c == '_' || c == '-' || c == '.' || c == '*')) {
throw new IllegalArgumentException(
String.format("Invalid character in key at position %d: '%c' (0x%04x)", i, c, (int) c));
}
}
return value;
}
/**
* Checks all keys in map for validity
* @param value map to check
* @return checked map
*/
protected static Map<String, ListElement<?>> checkKeys(Map<String, ListElement<?>> value) {
for (String key : Objects.requireNonNull(value, "value must not be null").keySet()) {
checkKey(key);
}
return value;
}
}