@SuppressWarnings("unchecked")
    protected void injectFields(final Object component) {
        Class<?> processedClass = component.getClass();
        try {
            while (processedClass != null && processedClass != Object.class) {
                for (final Field field : ClassReflection.getDeclaredFields(processedClass)) {
                    if (isInjectable(field, component)) {
                        field.set(component, get(field.getType(), component, new FieldMember(field)));
                    }
                }
                if (!isProcessSuperFields()) {
                    break;
                }
                processedClass = processedClass.getSuperclass();
            }
        } catch (final Exception exception) {
            throw new RuntimeException("Unable to inject fields of component: " + component, exception);
        }
    }
@ SuppressWarnings ( "unchecked" ) protected void injectFields ( final Object component ) { Class < ? > processedClass = component . getClass ( ) ; try { while ( processedClass != null && processedClass != Object . class ) { for ( final Field field : ClassReflection . getDeclaredFields ( processedClass ) ) { if ( isInjectable ( field , component ) ) { field . set ( component , get ( field . getType ( ) , component , new FieldMember ( field ) ) ) ; } } if ( ! isProcessSuperFields ( ) ) { break ; } processedClass = processedClass . getSuperclass ( ) ; } } catch ( final Exception exception ) { throw new RuntimeException ( "Unable to inject fields of component: " + component , exception ) ; } }
@param component its injectable fields will be filled with values provided by the context.
@see #isInjectable(Field, Object)