protected Object growIndexedProperty()

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;
    }