package com.lordofthejars.nosqlunit.core; import java.lang.reflect.Field; import java.util.LinkedList; import java.util.List; public class PropertyGetter <T> { public T propertyByType(Object testInstance, Class<T> type) { Class<?> clazz = testInstance.getClass(); if (isTargetSet(testInstance)) { List<Field> fields = getAllFields(new LinkedList<Field>(), clazz); for (Field field : fields) { if (type.isAssignableFrom(field.getType())) { return (T) new FieldGetter(testInstance, field).get(); } } } return null; } public static List<Field> getAllFields(List<Field> fields, Class<?> type) { for (Field field: type.getDeclaredFields()) { fields.add(field); } if (type.getSuperclass() != null) { fields = getAllFields(fields, type.getSuperclass()); } return fields; } private boolean isTargetSet(Object testInstance) { return testInstance != null; } }