/** * Recursively adds injectors for fields and methods from the given class to the given list. Injects parent classes * before sub classes. */ void addInjectors( Class clazz, List<Injector> injectors ) { if (clazz == Object.class) { return; } // Add injectors for superclass first. addInjectors(clazz.getSuperclass(), injectors); // TODO (crazybob): Filter out overridden members. addInjectorsForFields(clazz.getDeclaredFields(), false, injectors); addInjectorsForMethods(clazz.getDeclaredMethods(), false, injectors); }
void injectStatics( List<Class<?>> staticInjections ) { final List<Injector> injectors = new ArrayList<Injector>(); for ( Class<?> clazz : staticInjections ) { addInjectorsForFields(clazz.getDeclaredFields(), true, injectors); addInjectorsForMethods(clazz.getDeclaredMethods(), true, injectors); } callInContext(new ContextualCallable<Void>() { public Void call( InternalContext context ) { for ( Injector injector : injectors ) { injector.inject(context, null); } return null; } }); }