public static List createMapEntry()

in src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java [161:233]


    public static List<MapEntry> createMapEntry(String url, final Resource resource, final boolean trailingSlash) {
        final ValueMap props = resource.adaptTo(ValueMap.class);
        if (props != null) {
            final String redirect = props.get(MapEntries.PROP_REDIRECT_EXTERNAL, String.class);
            if (redirect != null) {
                // ignoring external redirects for mapping
                LoggerFactory.getLogger(MapEntry.class)
                        .info(
                                "createMapEntry: Configuration has external redirect to {}; not creating mapping for configuration in {}",
                                redirect,
                                resource.getPath());
                return null;
            }

            // ignore potential regular expression url
            if (isRegExp(url)) {
                LoggerFactory.getLogger(MapEntry.class)
                        .info(
                                "createMapEntry: URL {} contains a regular expression; not creating mapping for configuration in {}",
                                url,
                                resource.getPath());

                return null;
            }

            // check whether the url is a match hooked to then string end
            String endHook = "";
            if (url.endsWith("$")) {
                endHook = "$";
                url = url.substring(0, url.length() - 1);
            }

            // check whether the url is for ANY_SCHEME_HOST
            if (url.startsWith(MapEntries.ANY_SCHEME_HOST)) {
                url = url.substring(MapEntries.ANY_SCHEME_HOST.length());
            }

            final String[] internalRedirect = props.get(ResourceResolverImpl.PROP_REDIRECT_INTERNAL, String[].class);
            if (internalRedirect != null) {

                // check whether the url is considered external or internal
                int status = -1;
                final String pathUri = toURI(url);
                if (pathUri != null) {
                    url = pathUri;
                    status = 302;
                }

                final List<MapEntry> prepEntries = new ArrayList<MapEntry>(internalRedirect.length);
                for (final String redir : internalRedirect) {
                    if (!redir.contains("$")) {
                        MapEntry mapEntry = null;
                        try {
                            mapEntry = new MapEntry(redir.concat(endHook), status, trailingSlash, 0, url);
                        } catch (IllegalArgumentException iae) {
                            // ignore this entry
                            LoggerFactory.getLogger(MapEntry.class)
                                    .debug("Ignoring mapping due to exception: " + iae.getMessage(), iae);
                        }
                        if (mapEntry != null) {
                            prepEntries.add(mapEntry);
                        }
                    }
                }

                if (prepEntries.size() > 0) {
                    return prepEntries;
                }
            }
        }

        return null;
    }