package org.magenta.core.injection; import java.lang.reflect.Field; import java.util.Arrays; import java.util.List; import com.google.common.base.Function; import com.google.common.collect.Lists; public enum HiearchicalFieldsFinder implements Function<Class<?>,List<Field>> { SINGLETON; @Override public List<Field> apply(Class<?> input) { List<Field> fields = Lists.newArrayList(); Class<? extends Object> c = input; while(c!=null){ Field[] f = c.getDeclaredFields(); fields.addAll(Arrays.asList(f)); c = c.getSuperclass(); if(c == Object.class){ c = null; } } return fields; } }