private void processAdditions()

in src/main/java/org/apache/sling/feature/extension/apiregions/ConfigurationApiMergeHandler.java [125:164]


    private void processAdditions(final ConfigurationApi targetApi, final ConfigurationApi sourceApi, final boolean keep) {
        // configuration additions
        final Iterator<Map.Entry<String, ConfigurationDescriptionAddition>> itc = sourceApi.getConfigurationDescriptionAdditions().entrySet().iterator();
        while ( itc.hasNext() ) {
            final Map.Entry<String, ConfigurationDescriptionAddition> entry = itc.next();
            final ConfigurationDescription cd = targetApi.getConfigurationDescriptions().get(entry.getKey());
            if ( cd == null && keep ) {
                // if configuration is not found, keep the addition
                if ( targetApi.getConfigurationDescriptionAdditions().get(entry.getKey()) == null ) {
                    targetApi.getConfigurationDescriptionAdditions().put(entry.getKey(), entry.getValue());
                } else {
                    throw new IllegalStateException("Duplicate configuration description addition " + entry.getKey());
                }
            } else if ( cd != null ) {
                processAddition("configuration ".concat(entry.getKey()), cd, entry.getValue());
                if ( !keep ) {
                    itc.remove();
                }
            }
        }
        // factory configuration additions
        final Iterator<Map.Entry<String, FactoryConfigurationDescriptionAddition>> itf = sourceApi.getFactoryConfigurationDescriptionAdditions().entrySet().iterator();
        while ( itf.hasNext() ) {
            final Map.Entry<String, FactoryConfigurationDescriptionAddition> entry = itf.next();
            final FactoryConfigurationDescription cd = targetApi.getFactoryConfigurationDescriptions().get(entry.getKey());
            if ( cd == null && keep ) {
                // if configuration is not found, keep the addition
                if ( targetApi.getFactoryConfigurationDescriptionAdditions().get(entry.getKey()) == null ) {
                    targetApi.getFactoryConfigurationDescriptionAdditions().put(entry.getKey(), entry.getValue());
                } else {
                    throw new IllegalStateException("Duplicate factory configuration description addition " + entry.getKey());
                }
            } else if ( cd != null ) {
                processAddition("factory configuration ".concat(entry.getKey()), cd, entry.getValue());
                if ( !keep ) {
                    itf.remove();
                }
            }
        }
    }