private void processAddition()

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


    private void processAddition(final String descId,
            final ConfigurableEntity entity,
            final ConfigurableEntityAddition addition) {
        for(final Map.Entry<String, PropertyDescriptionAddition> entry : addition.getPropertyDescriptionAdditions().entrySet()) {
            final String propName = entry.getKey();
            final PropertyDescription pd = entity.getPropertyDescriptions().get(propName);
            if ( pd == null ) {
                throw new IllegalStateException("Property named '" + propName + "' is not defined in " + descId);
            }
            if ( entry.getValue().getIncludes() != null ) {
                final Set<String> includes = new LinkedHashSet<>();
                if ( pd.getIncludes() != null ) {
                    for(final String v : pd.getIncludes()) {
                        includes.add(v);
                    }
                }
                for(final String v : entry.getValue().getIncludes()) {
                    includes.add(v);
                }
                pd.setIncludes(includes.toArray(new String[includes.size()]));    
            }
        }
        if ( entity instanceof FactoryConfigurationDescription ) {
            final FactoryConfigurationDescription fcd = (FactoryConfigurationDescription)entity;
            final FactoryConfigurationDescriptionAddition fcda = (FactoryConfigurationDescriptionAddition)addition;
            for(final String n : fcda.getInternalNames()) {
                fcd.getInternalNames().add(n);
            }
        }
    }