public T adaptTo()

in src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletResource.java [136:175]


    public <T> T adaptTo(Class<T> type) {
        Resource wrappedResource = this.wrapped.get();
        if (type == Servlet.class && servlet != null) {
            return (T) servlet; // unchecked cast
        }
        if (type == javax.servlet.Servlet.class && servlet != null) {
            return (T) ServletWrapperUtil.toJavaxServlet(servlet); // unchecked cast
        }
        if (type == InputStream.class && isBundledScriptServlet() != null) {
            InputStream result = isBundledScriptServlet().getInputStream();
            if (result != null) {
                return (T) result;
            }
        }

        if (type == BundledRenderUnit.class && isBundledScriptServlet() != null) {
            return (T) isBundledScriptServlet().getBundledRenderUnit();
        }

        if (wrappedResource != null) {
            T result = wrappedResource.adaptTo(type);
            if (result != null) {
                return result;
            }
        }

        if (type == ValueMap.class) {
            final Map<String, Object> props = new HashMap<>();
            props.put("sling:resourceType", this.getResourceType());
            props.put("sling:resourceSuperType", this.getResourceSuperType());
            if (servlet != null) {
                props.put("servletName", this.getServletName());
                props.put("servletClass", this.servlet.getClass().getName());
            }

            return (T) new ValueMapDecorator(props); // unchecked cast
        }

        return super.adaptTo(type);
    }