in src/main/java/org/apache/commons/beanutils2/LazyDynaBean.java [598:635]
protected Object growIndexedProperty(final String name, Object indexedProperty, final int index) {
// Grow a List to the appropriate size
if (indexedProperty instanceof List) {
@SuppressWarnings("unchecked")
final
// Indexed properties are stored as List<Object>
List<Object> list = (List<Object>) indexedProperty;
while (index >= list.size()) {
final Class<?> contentType = getDynaClass().getDynaProperty(name).getContentType();
Object value = null;
if (contentType != null) {
value = createProperty(name + "[" + list.size() + "]", contentType);
}
list.add(value);
}
}
// Grow an Array to the appropriate size
if (indexedProperty.getClass().isArray()) {
final int length = Array.getLength(indexedProperty);
if (index >= length) {
final Class<?> componentType = indexedProperty.getClass().getComponentType();
final Object newArray = Array.newInstance(componentType, index + 1);
System.arraycopy(indexedProperty, 0, newArray, 0, length);
indexedProperty = newArray;
set(name, indexedProperty);
final int newLength = Array.getLength(indexedProperty);
for (int i = length; i < newLength; i++) {
Array.set(indexedProperty, i, createProperty(name + "[" + i + "]", componentType));
}
}
}
return indexedProperty;
}