info_jsp.java 12 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.jcr.Item
 *  javax.jcr.Node
 *  javax.jcr.Property
 *  javax.jcr.Repository
 *  javax.jcr.RepositoryException
 *  javax.jcr.Session
 *  javax.jcr.Workspace
 *  javax.jcr.nodetype.NodeDefinition
 *  javax.jcr.nodetype.NodeType
 *  javax.jcr.nodetype.PropertyDefinition
 *  javax.jcr.security.AccessControlManager
 *  javax.jcr.security.Privilege
 *  javax.jcr.version.VersionManager
 *  javax.servlet.Servlet
 *  javax.servlet.ServletConfig
 *  javax.servlet.ServletContext
 *  javax.servlet.ServletException
 *  javax.servlet.ServletRequest
 *  javax.servlet.ServletResponse
 *  javax.servlet.http.HttpServletRequest
 *  javax.servlet.http.HttpServletResponse
 *  javax.servlet.jsp.JspFactory
 *  javax.servlet.jsp.JspWriter
 *  javax.servlet.jsp.PageContext
 *  javax.servlet.jsp.SkipPageException
 *  org.apache.commons.lang3.StringEscapeUtils
 *  org.apache.jasper.runtime.HttpJspBase
 *  org.apache.jasper.runtime.JspSourceDependent
 */
package com.day.crx.explorer.impl.jsp.browser;

import com.day.crx.explorer.impl.j2ee.CRXContext;
import com.day.crx.explorer.impl.util.RequestData;
import java.io.IOException;
import java.util.List;
import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.Property;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Workspace;
import javax.jcr.nodetype.NodeDefinition;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.security.AccessControlManager;
import javax.jcr.security.Privilege;
import javax.jcr.version.VersionManager;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.SkipPageException;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.jasper.runtime.HttpJspBase;
import org.apache.jasper.runtime.JspSourceDependent;

public final class info_jsp
extends HttpJspBase
implements JspSourceDependent {
    private static List _jspx_dependants;

    public Object getDependants() {
        return _jspx_dependants;
    }

    /*
     * Unable to fully structure code
     * Enabled aggressive block sorting
     * Enabled unnecessary exception pruning
     * Enabled aggressive exception aggregation
     * Lifted jumps to return sites
     */
    public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        block24 : {
            _jspxFactory = null;
            pageContext = null;
            out = null;
            _jspx_out = null;
            _jspx_page_context = null;
            _jspxFactory = JspFactory.getDefaultFactory();
            response.setContentType("text/html");
            _jspx_page_context = pageContext = _jspxFactory.getPageContext((Servlet)this, (ServletRequest)request, (ServletResponse)response, null, false, 8192, true);
            pageContext.getServletContext();
            pageContext.getServletConfig();
            _jspx_out = out = pageContext.getOut();
            response.setContentType("text/html; charset=utf-8");
            ctx = CRXContext.getInstance(pageContext, request);
            repSession = ctx.getSession();
            if (repSession != null) break block24;
            if (_jspxFactory == null) return;
            _jspxFactory.releasePageContext(_jspx_page_context);
            return;
        }
        try {
            block25 : {
                currentNode = ctx.getNode();
                req = ctx.getRequestData();
                canSave = false;
                isNode = false;
                isProperty = false;
                hasVersions = false;
                isVersion = false;
                enableNewProperty = false;
                enableNewNode = false;
                isCheckedOut = false;
                canDelete = false;
                canEdit = false;
                isLockable = false;
                isLocked = false;
                holdsLock = false;
                hasMergeFailed = false;
                isUser = false;
                isGroup = false;
                canReadAC = false;
                hasActivity = false;
                if (Boolean.parseBoolean(ctx.getRepository().getDescriptor("option.activities.supported"))) {
                    hasActivity = repSession.getWorkspace().getVersionManager().getActivity() != null;
                }
                isActivity = false;
                authorizableTree = null;
                nodeType = "";
                try {
                    item = ctx.getItem();
                    if (item == null) break block25;
                    v0 = canSave = item.isModified() != false && item.isNew() == false;
                    if (!item.isNode()) ** GOTO lbl60
                    isNode = true;
                    canDelete = currentNode.getDefinition().isProtected() == false && currentNode.isCheckedOut() != false;
                    canEdit = currentNode.getDefinition().isProtected() == false && currentNode.isCheckedOut() != false;
                    arrpropertyDefinition = defs = currentNode.getPrimaryNodeType().getPropertyDefinitions();
                    n = 0;
                    n2 = arrpropertyDefinition.length;
                    ** GOTO lbl142
lbl60: // 1 sources:
                    prop = (Property)item;
                    canDelete = prop.getDefinition().isProtected() == false && prop.getParent().isCheckedOut() != false;
                    canEdit = prop.getDefinition().isProtected() == false && prop.getParent().isCheckedOut() != false;
                    nodeType = prop.getParent().getPrimaryNodeType().getName();
                    isUser = prop.getParent().isNodeType("rep:User");
                    isProperty = true;
                    if (!repSession.hasPermission(prop.getPath(), "set_property")) {
                        canDelete = false;
                        canEdit = false;
                    }
                }
                catch (RepositoryException v1) {}
            }
lbl72: // 5 sources:
            do {
                path = req.getParameter("Path");
                out.write("<html><head>\n<script type=\"text/javascript\">\n    var obj = new Object();\n    obj.path = \"");
                out.print(StringEscapeUtils.escapeHtml4((String)StringEscapeUtils.escapeJava((String)path)));
                out.write("\";\n    obj.hasPendingChanges = ");
                out.print(repSession.hasPendingChanges());
                out.write(";\n    obj.canSave = ");
                out.print(canSave);
                out.write(";\n    obj.canDelete = ");
                out.print(canDelete);
                out.write(";\n    obj.canEdit = ");
                out.print(canEdit);
                out.write(";\n    obj.isNode = ");
                out.print(isNode);
                out.write(";\n    obj.isProperty = ");
                out.print(isProperty);
                out.write(";\n    obj.hasVersions = ");
                out.print(hasVersions);
                out.write(";\n    obj.isVersion = ");
                out.print(isVersion);
                out.write(";\n    obj.isCheckedOut = ");
                out.print(isCheckedOut);
                out.write(";\n    obj.enableNewProperty = ");
                out.print(enableNewProperty);
                out.write(";\n    obj.enableNewNode = ");
                out.print(enableNewNode);
                out.write(";\n    obj.nodeType= \"");
                out.print(StringEscapeUtils.escapeHtml4((String)nodeType));
                out.write("\";\n    obj.isLockable = ");
                out.print(isLockable);
                out.write(";\n    obj.isLocked = ");
                out.print(isLocked);
                out.write(";\n    obj.holdsLock = ");
                out.print(holdsLock);
                out.write(";\n    obj.hasMergeFailed = ");
                out.print(hasMergeFailed);
                out.write(";\n    obj.isUser = ");
                out.print(isUser);
                out.write(";\n    obj.isGroup = ");
                out.print(isGroup);
                out.write("\n    obj.canReadAC = ");
                out.print(canReadAC);
                out.write(";\n    obj.belowUserGroup = \"");
                out.print(StringEscapeUtils.escapeHtml4((String)authorizableTree));
                out.write("\";\n    obj.hasActivity = ");
                out.print(hasActivity);
                out.write(";\n    obj.isActivity = ");
                out.print(isActivity);
                out.write(";\nwindow.parent.setItemInfo(obj);\n</script>\n</head><body></body></html>");
                return;
                break;
            } while (true);
        }
        catch (Throwable t) {
            try {
                if (t instanceof SkipPageException != false) return;
                out = _jspx_out;
                if (out != null && out.getBufferSize() != 0) {
                    out.clearBuffer();
                }
                if (_jspx_page_context == null) return;
                _jspx_page_context.handlePageException(t);
                return;
            }
            catch (Throwable throwable) {
                throw throwable;
            }
            finally {
                if (_jspxFactory != null) {
                    _jspxFactory.releasePageContext(_jspx_page_context);
                }
            }
        }
lbl-1000: // 1 sources:
        {
            def = arrpropertyDefinition[n];
            if (def.getName().equals("*")) {
                enableNewProperty = true;
                break;
            }
            ++n;
lbl142: // 2 sources:
            ** while (n < n2)
        }
lbl143: // 2 sources:
        if (!canEdit) {
            enableNewProperty = false;
        }
        if (request.getParameter("disableNewProperty") != null) {
            enableNewProperty = false;
        }
        arrnodeDefinition = ndefs = currentNode.getPrimaryNodeType().getChildNodeDefinitions();
        n2 = 0;
        n3 = arrnodeDefinition.length;
        while (n2 < n3) {
            ndef = arrnodeDefinition[n2];
            if (ndef.getName().equals("*")) {
                enableNewNode = true;
                break;
            }
            ++n2;
        }
        if (request.getParameter("disableNewNode") != null) {
            enableNewNode = false;
        }
        hasVersions = currentNode.isNodeType("mix:versionable") != false && currentNode.hasProperty("jcr:baseVersion") != false || currentNode.isNodeType("mix:simpleVersionable") != false;
        isUser = currentNode.isNodeType("rep:User");
        isGroup = currentNode.isNodeType("rep:Group");
        hasMergeFailed = currentNode.hasProperty("jcr:mergeFailed");
        isCheckedOut = currentNode.isCheckedOut();
        nodeType = currentNode.getPrimaryNodeType().getName();
        isLockable = currentNode.isNodeType("mix:lockable");
        isLocked = currentNode.isLocked();
        holdsLock = currentNode.holdsLock();
        isActivity = currentNode.isNodeType("nt:activity");
        isVersion = currentNode.isNodeType("nt:version");
        try {
            path = currentNode.getPath();
            acMgr = repSession.getAccessControlManager();
            canReadAC = acMgr.hasPrivileges(path, new Privilege[]{acMgr.privilegeFromName("{http://www.jcp.org/jcr/1.0}readAccessControl")});
            if (acMgr.hasPrivileges(path, new Privilege[]{acMgr.privilegeFromName("{http://www.jcp.org/jcr/1.0}addChildNodes")})) {
                // empty if block
            }
            if (!path.startsWith("/home/groups")) ** GOTO lbl179
            authorizableTree = "groups";
            ** GOTO lbl72
lbl179: // 1 sources:
            if (!path.startsWith("/home/users")) ** GOTO lbl72
            authorizableTree = "users";
        }
        catch (RepositoryException v2) {
            ** continue;
        }
    }
}