in src/main/java/org/apache/commons/beanutils2/WrapDynaClass.java [282:318]
protected void introspect() {
// Look up the property descriptors for this bean class
final Class<?> beanClass = getBeanClass();
PropertyDescriptor[] regulars =
getPropertyUtilsBean().getPropertyDescriptors(beanClass);
if (regulars == null) {
regulars = PropertyDescriptors.EMPTY_ARRAY;
}
Map<?, ?> mappeds =
PropertyUtils.getMappedPropertyDescriptors(beanClass);
if (mappeds == null) {
mappeds = new HashMap<>();
}
// Construct corresponding DynaProperty information
properties = new DynaProperty[regulars.length + mappeds.size()];
for (int i = 0; i < regulars.length; i++) {
descriptorsMap.put(regulars[i].getName(),
regulars[i]);
properties[i] =
new DynaProperty(regulars[i].getName(),
regulars[i].getPropertyType());
propertiesMap.put(properties[i].getName(),
properties[i]);
}
int j = regulars.length;
for (final Map.Entry<?, ?> entry : mappeds.entrySet()) {
final PropertyDescriptor descriptor =
(PropertyDescriptor) entry.getValue();
properties[j] =
new DynaProperty(descriptor.getName(),
Map.class);
propertiesMap.put(properties[j].getName(),
properties[j]);
j++;
}
}