package se.unlogic.standardutils.string;
import se.unlogic.standardutils.reflection.ReflectionUtils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
public class AnnotatedBeanTagSourceFactory<T> extends BeanTagSourceFactory<T> {
public AnnotatedBeanTagSourceFactory(Class<T> beanClass, String defaultPrefix) {
super(beanClass);
List<Field> fields = ReflectionUtils.getFields(beanClass);
for(Field field : fields){
StringTag stringTag = field.getAnnotation(StringTag.class);
if(stringTag != null){
if(StringUtils.isEmpty(stringTag.name())){
addFieldMapping(defaultPrefix + field.getName(), field);
}else{
addFieldMapping(defaultPrefix + stringTag.name(), field);
}
}
}
List<Method> methods = ReflectionUtils.getMethods(beanClass);
for(Method method : methods){
StringTag stringTag = method.getAnnotation(StringTag.class);
if(stringTag != null){
if(StringUtils.isEmpty(stringTag.name())){
addMethodMapping(defaultPrefix + method.getName(), method);
}else{
addMethodMapping(defaultPrefix + stringTag.name(), method);
}
}
}
}
}