in src/main/java/org/apache/sling/resourcemerger/impl/MergedValueMap.java [54:77]
public MergedValueMap(final List<ValueMap> valueMaps) {
super(new HashMap<>());
// Iterate over value maps
for (final ValueMap vm : valueMaps) {
// Get properties to hide from local or underlying value maps
String[] hideSettings = vm.get(MergedResourceConstants.PN_HIDE_PROPERTIES, String[].class);
if (hideSettings != null) {
HideItemPredicate hidePredicate = new HideItemPredicate(hideSettings, MergedResourceConstants.PN_HIDE_PROPERTIES);
// go over the already existing properties
this.entrySet().removeIf(entry -> hidePredicate.testItem(entry.getKey(), false));
// then go over the new properties
this.putAll(vm.entrySet().stream()
.filter(entry -> !(EXCLUDED_PROPERTIES.contains(entry.getKey())) && !(hidePredicate.testItem(entry.getKey(), true)) )
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
} else {
this.putAll(vm.entrySet().stream()
.filter(entry -> !(EXCLUDED_PROPERTIES.contains(entry.getKey())))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)));
}
}
}