in src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java [1204:1262]
private boolean loadAlias(final Resource resource, Map<String, Map<String, String>> map) {
// resource containing the alias
final Resource containingResource;
if (JCR_CONTENT.equals(resource.getName())) {
containingResource = resource.getParent();
} else {
containingResource = resource;
}
final Resource parent = containingResource.getParent();
if (parent == null) {
log.debug("parent is null for alias on {}.", resource.getName());
return false;
}
else {
// resource the alias is for
String resourceName = containingResource.getName();
// parent path of that resource
String parentPath = parent.getPath();
boolean hasAlias = false;
// require properties
final ValueMap props = resource.getValueMap();
final String[] aliasArray = props.get(ResourceResolverImpl.PROP_ALIAS, String[].class);
if (aliasArray != null) {
log.debug("Found alias, total size {}", aliasArray.length);
for (final String alias : aliasArray) {
if (isAliasValid(alias)) {
log.warn("Encountered invalid alias {} under parent path {}. Refusing to use it.", alias, parentPath);
} else {
Map<String, String> parentMap = map.get(parentPath);
if (parentMap == null) {
parentMap = new LinkedHashMap<>();
map.put(parentPath, parentMap);
}
String current = parentMap.get(alias);
if (current != null) {
log.warn(
"Encountered duplicate alias {} under parent path {}. Refusing to replace current target {} with {}.",
alias, parentPath, current, resourceName);
} else {
parentMap.put(alias, resourceName);
hasAlias = true;
}
}
}
}
return hasAlias;
}
}