private void includeResource()

in src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/ResourceRuntimeExtension.java [259:288]


    private void includeResource(SlingHttpServletRequest request, final Bindings bindings, PrintWriter out, Resource includeRes,
                                 RequestDispatcherOptions requestDispatcherOptions) {
        if (includeRes == null) {
            throw new SightlyException("Resource cannot be null");
        } else {
            if (request.getResource().getPath().equals(includeRes.getPath())) {
                String requestSelectorString = request.getRequestPathInfo().getSelectorString();
                String requestDispatcherAddSelectors = requestDispatcherOptions.getAddSelectors();
                if (
                        (requestSelectorString == null ? requestDispatcherAddSelectors == null : requestSelectorString.equals(requestDispatcherAddSelectors)) &&
                        StringUtils.EMPTY.equals(requestDispatcherOptions.getReplaceSelectors()) &&
                        (requestDispatcherOptions.getForceResourceType() == null || requestDispatcherOptions.getForceResourceType().equals(request.getResource().getResourceType()))
                ) {
                    LOGGER.warn("Will not include resource {} since this will lead to a {} exception.", includeRes.getPath(), "org.apache.sling.api.request.RecursionTooDeepException");
                    return;
                }
            }
            SlingHttpServletResponse customResponse = new PrintWriterResponseWrapper(out, BindingsUtils.getResponse(bindings));
            RequestDispatcher dispatcher = request.getRequestDispatcher(includeRes, requestDispatcherOptions);
            try {
                if (dispatcher != null) {
                    dispatcher.include(request, customResponse);
                } else {
                    throw new SightlyException("Failed to include resource " + includeRes.getPath());
                }
            } catch (Exception e) {
                throw new SightlyException("Failed to include resource " + includeRes.getPath(), e);
            }
        }
    }