// add fields
while (resourceClass != Object.class && resourceClass != null) {
for (Field field : resourceClass.getDeclaredFields()) {
Type fieldType = field.getGenericType();
Injectable injectable = parseAccessibleObject(field, fieldType);
logger.trace("Field is {} and injectable is {}", fieldType, injectable);
if (injectable != null) {
injectableFields.add(injectable);
}
}
resourceClass = resourceClass.getSuperclass();
}
logger.trace("Injectable fields: {}", injectableFields);
// add properties
PropertyDescriptor[] propertyDescriptors = metadata.getBeanInfo().getPropertyDescriptors();
if(logger.isTraceEnabled()) {
logger.trace("Property descriptors are: {}", Arrays.asList(propertyDescriptors));
}
if (propertyDescriptors != null) {
l: for (PropertyDescriptor pd : propertyDescriptors) {
Method writeMethod = pd.getWriteMethod();
if (writeMethod == null) {
// the property cannot be written, ignore it.
continue l;
}
if(logger.isTraceEnabled()) {
logger.trace("Method under inspection: {}", writeMethod.getName());
}
Type genericReturnType = writeMethod.getParameterTypes()[0];
Injectable injectable = parseAccessibleObject(writeMethod, genericReturnType);
if (injectable != null) {
injectableFields.add(injectable);
}
if(logger.isTraceEnabled()) {
logger.trace("Injectable under inspection: {}", injectable);