AbstractCompositeRenderCondition.java 2.9 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.servlet.RequestDispatcher
 *  javax.servlet.ServletException
 *  javax.servlet.ServletRequest
 *  javax.servlet.ServletResponse
 *  org.apache.sling.api.SlingHttpServletRequest
 *  org.apache.sling.api.SlingHttpServletResponse
 *  org.apache.sling.api.request.RequestDispatcherOptions
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ValueMap
 *  org.apache.sling.api.wrappers.ValueMapDecorator
 */
package com.adobe.granite.ui.components.rendercondition;

import com.adobe.granite.ui.components.rendercondition.RenderCondition;
import com.adobe.granite.ui.components.rendercondition.SimpleRenderCondition;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.request.RequestDispatcherOptions;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.wrappers.ValueMapDecorator;

public abstract class AbstractCompositeRenderCondition
implements RenderCondition {
    protected SlingHttpServletRequest request;
    protected SlingHttpServletResponse response;
    protected Resource resource;

    public AbstractCompositeRenderCondition(SlingHttpServletRequest request, SlingHttpServletResponse response, Resource resource) {
        this.request = request;
        this.response = response;
        this.resource = resource;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    protected RenderCondition call(Resource resource) throws ServletException, IOException {
        try {
            RenderCondition condition;
            ValueMap vm = resource != null ? resource.getValueMap() : new ValueMapDecorator(new HashMap());
            String resourceType = (String)vm.get("sling:resourceType", (Object)"granite/ui/components/foundation/renderconditions/simple");
            RequestDispatcher dispatcher = this.request.getRequestDispatcher(resource, new RequestDispatcherOptions(resourceType));
            if (dispatcher != null) {
                dispatcher.include((ServletRequest)this.request, (ServletResponse)this.response);
                condition = (RenderCondition)this.request.getAttribute(RenderCondition.class.getName());
                if (condition != null) {
                    RenderCondition renderCondition = condition;
                    return renderCondition;
                }
            }
            condition = SimpleRenderCondition.TRUE;
            return condition;
        }
        finally {
            this.request.removeAttribute(RenderCondition.class.getName());
        }
    }
}