package org.core4j;
import java.lang.reflect.Field;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CoreUtils {
public static String replace(String input, String regex, int options, Func1<Matcher, String> evaluator) {
Pattern pattern = Pattern.compile(regex, options);
Matcher matcher = pattern.matcher(input);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
String replacement = evaluator.apply(matcher);
matcher.appendReplacement(sb, replacement);
}
matcher.appendTail(sb);
return sb.toString();
}
public static Field getField(Class<?> type, String name) {
while (!type.equals(Object.class)) {
for (Field f : type.getDeclaredFields()) {
if (f.getName().equals(name)) {
return f;
}
}
type = type.getSuperclass();
}
throw new RuntimeException("Field not found: " + name);
}
@SuppressWarnings("unchecked")
public static <T> T getFieldValue(Object obj, String name, Class<T> fieldType) {
try {
Class<?> type = obj.getClass();
Field field = getField(type, name);
field.setAccessible(true);
return (T) field.get(obj);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}