public static <E extends Enum<E>> String validateEnum(String reason, String detail, Class<E> clz, Set<String> externalValues, String name, boolean toUppercase) {
for (String externalValue : externalValues) {
if (externalValue.equalsIgnoreCase(name)) {
return name;
}
}
try {
return Enum.valueOf(clz, toUppercase ? name.toUpperCase() : name).name();
} catch (IllegalArgumentException|NullPointerException e) {
detail = detail + getPossibleValues(clz, OsTypeUtils.getAllValues());
throw new WebApplicationException(response(reason, MessageFormat.format(detail, name, clz.getSimpleName())));
}
}