package io.ebeaninternal.server.properties; import java.lang.reflect.Field; import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * Determines the properties on a given bean. */ public class BeanPropertiesReader { private final Map<String, Integer> propertyIndexMap = new HashMap<>(); private final String[] props; public BeanPropertiesReader(Class<?> clazz) { this.props = getProperties(clazz); for (int i = 0; i < props.length; i++) { propertyIndexMap.put(props[i], i); } } public String[] getProperties() { return props; } @Override public String toString() { return Arrays.toString(props); } public Integer getPropertyIndex(String property) { return propertyIndexMap.get(property); } private String[] getProperties(Class<?> clazz) { try { Field field = clazz.getField("_ebean_props"); return (String[]) field.get(null); } catch (Exception e) { throw new IllegalStateException("Error getting _ebean_props field on type " + clazz, e); } } }