package detective.utils; import org.apache.commons.beanutils.BeanUtils; import org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl; import groovy.lang.GroovyObjectSupport; import groovy.lang.MetaClass; import groovy.lang.MetaClassRegistry; public class GroovyUtils { private static final MetaClassRegistry REGISTRY = MetaClassRegistryImpl.getInstance(MetaClassRegistryImpl.LOAD_DEFAULT);; public static Object getProperty(Object object, String property) { //still have get property? it's maybe a map or list if (object != null){ if (object instanceof GroovyObjectSupport){ Object value = ((GroovyObjectSupport)object).getProperty(property); return value; }else{ MetaClass metaClass = REGISTRY.getMetaClass(object.getClass()); if (metaClass != null){ Object value = metaClass.getProperty(object, property); return value; } } } //TODO support java bean //return BeanUtils.getProperty(realValue, property); return null; } }