public ServletResourceProvider create()

in src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResourceProviderFactory.java [124:164]


    public ServletResourceProvider create(final ServiceReference<Servlet> ref, final Servlet servlet) {

        final Set<String> pathSet = new HashSet<>();

        // check whether explicit paths are set
        addByPath(pathSet, ref);

        // now, we handle resource types, extensions and methods
        addByType(pathSet, ref);

        if (pathSet.isEmpty()) {
            if (log.isDebugEnabled()) {
                log.debug(
                        "create({}): ServiceReference has no registration settings, ignoring",
                        getServiceReferenceInfo(ref));
            }
            return null;
        }

        if (log.isDebugEnabled()) {
            log.debug("create({}): Registering servlet for paths {}", getServiceReferenceInfo(ref), pathSet);
        }
        String resourceSuperType = Converters.standardConverter()
                .convert(ref.getProperty(SLING_SERVLET_RESOURCE_SUPER_TYPE))
                .to(String.class);
        Set<String> resourceSuperTypeMarkers = new HashSet<>();
        if (resourceSuperType != null
                && !resourceSuperType.isEmpty()
                && !ServletResource.DEFAULT_RESOURCE_SUPER_TYPE.equals(resourceSuperType)) {
            for (String rt : Converters.standardConverter()
                    .convert(ref.getProperty(SLING_SERVLET_RESOURCE_TYPES))
                    .to(String[].class)) {
                if (!rt.startsWith("/")) {
                    rt = getPrefix(ref).concat(ResourceUtil.resourceTypeToPath(rt));
                }
                resourceSuperTypeMarkers.add(rt);
                pathSet.add(rt);
            }
        }
        return new ServletResourceProvider(servlet, pathSet, resourceSuperTypeMarkers, resourceSuperType);
    }