private boolean loadAlias()

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