in src/main/java/org/apache/sling/feature/apiregions/impl/RegionConfiguration.java [212:262]
private synchronized void updateConfiguration() {
final Map<Entry<String, Version>, List<String>> bvm = cloneMapOfLists(this.baseBsnVerMap);
final Map<String, Set<String>> bfm = cloneMapOfSets(this.baseBundleFeatureMap);
final Map<String, List<String>> frm = cloneMapOfLists(this.baseFeatureRegionMap);
final Map<String, Set<String>> rpm = cloneMapOfSets(this.baseRegionPackageMap);
// apply configurations
for(final Dictionary<String, Object> props : this.factoryConfigs.values()) {
// bundle id to bsnver
Object valObj = props.get(RegionConstants.PROP_idbsnver);
if ( valObj != null ) {
for(final String val : convert(valObj)) {
final String[] parts = val.split("=");
final String n = parts[0];
final String[] bsnver = parts[1].split("~");
String bsn = bsnver[0];
String bver = bsnver[1];
addBsnVerArtifact(bvm, bsn, bver, n);
}
}
// bundle id to features
valObj = props.get(RegionConstants.PROP_bundleFeatures);
if ( valObj != null ) {
handleMapConfig(valObj, bfm, HashSet::new);
}
// feature id to regions
valObj = props.get(RegionConstants.PROP_featureRegions);
if ( valObj != null ) {
handleMapConfig(valObj, frm, ArrayList::new);
}
// region to packages
valObj = props.get(RegionConstants.PROP_regionPackage);
if ( valObj != null ) {
handleMapConfig(valObj, rpm, HashSet::new);
}
}
// join regions
if (this.toGlobalConfig != null) {
joinRegionsWithGlobal(this.toGlobalConfig, rpm);
}
// Make all maps and their contents unmodifiable
bsnVerMap = unmodifiableMapToList(bvm);
bundleFeatureMap = unmodifiableMapToSet(bfm);
featureRegionMap = unmodifiableMapToList(frm);
regionPackageMap = unmodifiableMapToSet(rpm);
}