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