final Annotation aInstance = clazz.getAnnotation(aClass);
entry.addProcessingDelegate(new ProcessingDelegate<MetaClass>() {
@Override
public boolean process() {
final MetaClass type = MetaClassFactory.get(clazz);
injectorFactory.addType(type);
Injector injector = injectorFactory.getInjectionContext().getInjector(type);
final InjectableInstance injectableInstance
= getTypeInjectedInstance(aInstance, type, injector, injectorFactory.getInjectionContext());
return entry.handler.handle(injectableInstance, aInstance, context);
}
public String toString() {
return clazz.getName();
}
});
}
}
break;
case METHOD: {
Set<Method> methods = scanner.getMethodsAnnotatedWith(aClass, context.getPackageFilter());
for (Method method : methods) {
final Annotation aInstance = method.getAnnotation(aClass);
final MetaClass type = MetaClassFactory.get(method.getDeclaringClass());
final MetaMethod metaMethod = MetaClassFactory.get(method);
entry.addProcessingDelegate(new ProcessingDelegate<MetaField>() {
@Override
public boolean process() {
injectorFactory.addType(type);
Injector injector = injectorFactory.getInjectionContext().getInjector(type);
final InjectableInstance injectableInstance
= getMethodInjectedInstance(aInstance, metaMethod, injector,
injectorFactory.getInjectionContext());
return entry.handler.handle(injectableInstance, aInstance, context);
}
public String toString() {
return type.getFullyQualifiedName();
}
});
}
}
case FIELD: {
Set<Field> fields = scanner.getFieldsAnnotatedWith(aClass, context.getPackageFilter());
for (Field method : fields) {
final Annotation aInstance = method.getAnnotation(aClass);
final MetaClass type = MetaClassFactory.get(method.getDeclaringClass());
final MetaField metaField = MetaClassFactory.get(method);
entry.addProcessingDelegate(new ProcessingDelegate<MetaField>() {
@Override
public boolean process() {
injectorFactory.addType(type);
Injector injector = injectorFactory.getInjectionContext().getInjector(type);
final InjectableInstance injectableInstance
= InjectableInstance.getFieldInjectedInstance(aInstance, metaField, injector,
injectorFactory.getInjectionContext());
return entry.handler.handle(injectableInstance, aInstance, context);
}
public String toString() {
return type.getFullyQualifiedName();
}
});
}
}
}