package org.test4j.module.spring.strategy.register.types;
import java.lang.reflect.Field;
import java.util.Queue;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.test4j.module.spring.strategy.register.RegisterBeanDefinition;
import org.test4j.tools.commons.AnnotationHelper;
import org.test4j.tools.commons.StringHelper;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class AutowiredPropertiesRegister extends PropertiesRegister {
protected AutowiredPropertiesRegister(Class ownerClazz, RegisterBeanDefinition definitionRegister) {
super(ownerClazz, definitionRegister);
}
@Override
public void registerProperties(Queue<Class> registedBeanClazz) {
Set<Field> fields = AnnotationHelper.getFieldsAnnotatedWith(ownerClazz, Autowired.class);
for (Field field : fields) {
// Autowired autowired = field.getAnnotation(Autowired.class);
Qualifier qualifier = field.getAnnotation(Qualifier.class);
String beanName = null;
if (qualifier != null) {
beanName = qualifier.value();
}
if (StringHelper.isBlankOrNull(beanName)) {
beanName = field.getName();
}
Class propClazz = field.getType();
boolean isExclude = this.definitionRegister.isExcludeProperty(beanName, propClazz);
if (isExclude == false) {
this.registerBean(beanName, propClazz, registedBeanClazz);
}
}
}
}