package net.thucydides.core.matchers.dates; import org.apache.commons.beanutils.PropertyUtils; import java.util.Map; public class BeanFields { private final Object bean; private BeanFields(Object bean) { this.bean = bean; } public static BeanFields fieldValueIn(Object bean) { return new BeanFields(bean); } public Object forField(String fieldName) { try { if (isAMap(bean)) { return ((Map) bean).get(fieldName); } else { return PropertyUtils.getProperty(bean, fieldName); } } catch (Exception e) { throw new IllegalArgumentException("Could not find property value for " + fieldName); } } private boolean isAMap(Object bean) { return (Map.class.isAssignableFrom(bean.getClass())); } }