@Override
    public B addInputColumns(Collection<? extends InputColumn<?>> inputColumns,
            ConfiguredPropertyDescriptor propertyDescriptor) {
        if (propertyDescriptor == null || !propertyDescriptor.isInputColumn()) {
            throw new IllegalArgumentException("Property is not of InputColumn type: " + propertyDescriptor);
        }

        final Class<?> expectedDataType = propertyDescriptor.getTypeArgument(0);
        if (expectedDataType != null && expectedDataType != Object.class) {
            // check input column type parameter compatibility
            for (InputColumn<?> inputColumn : inputColumns) {
                final Class<?> actualDataType = inputColumn.getDataType();
                if (!ReflectionUtils.is(actualDataType, expectedDataType, false)) {
                    throw new IllegalArgumentException("Unsupported InputColumn type: " + actualDataType
                            + ", expected: " + expectedDataType);
                }
            }
        }

        Object newInputColumns = getConfiguredProperty(propertyDescriptor);
        if (newInputColumns == null) {
            if (propertyDescriptor.isArray()) {
                InputColumn<?>[] asArray = inputColumns.toArray(new InputColumn[inputColumns.size()]);
                newInputColumns = asArray;
            } else {
                if (inputColumns == null || inputColumns.isEmpty()) {
                    newInputColumns = null;
                } else if (inputColumns.size() > 1) {
                    throw new IllegalArgumentException(
                            "Property type is a single InputColumn, but a collection of more than one element was given");
                } else {
                    newInputColumns = inputColumns.iterator().next();
                }
            }
        } else {
            InputColumn<?>[] asArray = inputColumns.toArray(new InputColumn[inputColumns.size()]);
            newInputColumns = CollectionUtils2.array(InputColumn.class, newInputColumns, asArray);
        }
        setConfiguredProperty(propertyDescriptor, newInputColumns);
        return (B) this;
    }
@ Override public B addInputColumns ( Collection < ? extends InputColumn < ? > > inputColumns , ConfiguredPropertyDescriptor propertyDescriptor ) { if ( propertyDescriptor == null || ! propertyDescriptor . isInputColumn ( ) ) { throw new IllegalArgumentException ( "Property is not of InputColumn type: " + propertyDescriptor ) ; } final Class < ? > expectedDataType = propertyDescriptor . getTypeArgument ( 0 ) ; if ( expectedDataType != null && expectedDataType != Object . class ) { for ( InputColumn < ? > inputColumn : inputColumns ) { final Class < ? > actualDataType = inputColumn . getDataType ( ) ; if ( ! ReflectionUtils . is ( actualDataType , expectedDataType , false ) ) { throw new IllegalArgumentException ( "Unsupported InputColumn type: " + actualDataType + ", expected: " + expectedDataType ) ; } } } Object newInputColumns = getConfiguredProperty ( propertyDescriptor ) ; if ( newInputColumns == null ) { if ( propertyDescriptor . isArray ( ) ) { InputColumn < ? > [ ] asArray = inputColumns . toArray ( new InputColumn [ inputColumns . size ( ) ] ) ; newInputColumns = asArray ; } else { if ( inputColumns == null || inputColumns . isEmpty ( ) ) { newInputColumns = null ; } else if ( inputColumns . size ( ) > 1 ) { throw new IllegalArgumentException ( "Property type is a single InputColumn, but a collection of more than one element was given" ) ; } else { newInputColumns = inputColumns . iterator ( ) . next ( ) ; } } } else { InputColumn < ? > [ ] asArray = inputColumns . toArray ( new InputColumn [ inputColumns . size ( ) ] ) ; newInputColumns = CollectionUtils2 . array ( InputColumn . class , newInputColumns , asArray ) ; } setConfiguredProperty ( propertyDescriptor , newInputColumns ) ; return ( B ) this ; }
delegate to