readTree_jsp.java 13.1 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.jcr.Credentials
 *  javax.jcr.Item
 *  javax.jcr.Node
 *  javax.jcr.NodeIterator
 *  javax.jcr.Property
 *  javax.jcr.PropertyIterator
 *  javax.jcr.Repository
 *  javax.jcr.RepositoryException
 *  javax.jcr.Session
 *  javax.jcr.SimpleCredentials
 *  javax.jcr.Value
 *  javax.jcr.nodetype.PropertyDefinition
 *  javax.jcr.util.TraversingItemVisitor
 *  javax.jcr.util.TraversingItemVisitor$Default
 *  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.testing;

import com.day.crx.explorer.impl.j2ee.CRXContext;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.jcr.Credentials;
import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Property;
import javax.jcr.PropertyIterator;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.Value;
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.util.TraversingItemVisitor;
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 readTree_jsp
extends HttpJspBase
implements JspSourceDependent {
    private static List _jspx_dependants;

    private void msg(JspWriter out, String msg) throws IOException {
        out.print(msg);
        out.println("<br>");
        out.flush();
    }

    private void getStats(JspWriter out, Node node, boolean readProps, int[] stats) throws RepositoryException, IOException {
        this.msg(out, "Reading stats for " + node.getPath() + ".");
        NodeIterator iter = node.getNodes();
        while (iter.hasNext()) {
            int[] arrn = stats;
            arrn[0] = arrn[0] + 1;
            Node child = iter.nextNode();
            this.getStats(out, child, readProps, stats);
        }
        PropertyIterator pi = node.getProperties();
        while (pi.hasNext()) {
            Value v;
            Property p = pi.nextProperty();
            int[] arrn = stats;
            arrn[1] = arrn[1] + 1;
            if (!readProps) continue;
            if (p.getDefinition().isMultiple()) {
                Value[] arrvalue = p.getValues();
                int n = 0;
                int n2 = arrvalue.length;
                while (n < n2) {
                    v = arrvalue[n];
                    if (v.getType() != 2) {
                        v.getString();
                    }
                    ++n;
                }
                continue;
            }
            v = p.getValue();
            if (v.getType() == 2) continue;
            v.getString();
        }
    }

    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 {
        block20 : {
            block19 : {
                _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 block19;
                if (_jspxFactory == null) return;
                _jspxFactory.releasePageContext(_jspx_page_context);
                return;
            }
            response.setContentType("text/html; charset=utf-8");
            ctx = CRXContext.getInstance(pageContext, request);
            repSession = ctx.getSession();
            if (repSession != null) break block20;
            if (_jspxFactory == null) return;
            _jspxFactory.releasePageContext(_jspx_page_context);
            return;
        }
        try {
            cmd = request.getParameter("cmd");
            out.write("<html>\n<head>\n    <style>\n        body {\n            font-family:Verdana;\n            font-size:10px;\n            line-height:14px;\n        }\n    </style>\n</head>\n<body>\n    <h1>Read Tree Utility</h1>\n        ");
            try {
                if (cmd == null) {
                    out.write("<p>\n        This utility can be used to read a complete tree of nodes and properties.\n        </p>\n        <hr>\n        <form method=\"post\">\n            <h2>Read parameters</h2>\n            Editing session: ");
                    out.print(repSession.getUserID());
                    out.write("<p/>\n\n            Target node path: <input type=\"text\" name=\"targetPath\" value=\"/testRoot\"><br>\n            Read property values: <input type=\"checkbox\" name=\"readProps\" value=\"false\"><br>\n            Read random items: <input type=\"text\" name=\"randomNumber\" value=\"100000\"><br>\n            <input type=\"checkbox\" name=\"randomNodes\" value=\"true\"> Nodes<br>\n            <input type=\"checkbox\" name=\"randomProperties\" value=\"true\"> Properties<br>\n            <br>\n            <input type=\"submit\" name=\"cmd\" value=\"readTree\">\n        </form>");
                    return;
                }
                if ("readTree".equals(cmd) == false) return;
                targetPath = request.getParameter("targetPath");
                randomNodes = Boolean.valueOf(request.getParameter("randomNodes"));
                randomProps = Boolean.valueOf(request.getParameter("randomProperties"));
                if (!randomNodes && !randomProps) {
                    targetNode = repSession.getNode(targetPath);
                    readProps = Boolean.valueOf(request.getParameter("readProps"));
                    out.write("<h3>Parameters</h3>\n            Editing Session: ");
                    out.print(StringEscapeUtils.escapeHtml4((String)repSession.getUserID()));
                    out.write("<br>\n            Target node path: ");
                    out.print(StringEscapeUtils.escapeHtml4((String)request.getParameter("targetPath")));
                    out.write("<br>\n            Read property values: ");
                    out.print(readProps);
                    out.write("<br>\n\n            <p/>\n            <h3>Stats</h3>\n            ");
                    out.write("Read tree starting at ");
                    out.print(StringEscapeUtils.escapeHtml4((String)targetPath));
                    out.write("....<br>");
                    out.flush();
                    start = System.currentTimeMillis();
                    stats = new int[2];
                    this.getStats(out, targetNode, readProps, stats);
                    end = System.currentTimeMillis();
                    this.msg(out, String.valueOf(stats[0]) + " nodes, " + stats[1] + " properties.");
                    out.write("Overall read time: ");
                    out.print(end - start);
                    out.write(" ms<br>");
                    return;
                }
                out.write("<h3>Parameters</h3>\n            Editing Session: ");
                out.print(repSession.getUserID());
                out.write("<br>\n            Target node path: ");
                out.print(StringEscapeUtils.escapeHtml4((String)request.getParameter("targetPath")));
                out.write("<br>");
                cnt = Integer.valueOf(request.getParameter("randomNumber"));
                type = randomNodes != false && randomProps != false ? "items" : (randomNodes != false ? "nodes" : "properties");
                out.write("Random: ");
                out.print(type);
                out.write(32);
                out.write(40);
                out.print(cnt);
                out.write(" items)<br>");
                admin = repSession.getRepository().login((Credentials)new SimpleCredentials("admin", "admin".toCharArray()));
                paths = new ArrayList<E>();
                v = new TraversingItemVisitor.Default(){

                    protected void entering(Node node, int i) throws RepositoryException {
                        if (randomNodes) {
                            paths.add(node.getPath());
                        }
                        super.entering(node, i);
                    }

                    protected void entering(Property prop, int i) throws RepositoryException {
                        if (randomProps) {
                            paths.add(prop.getPath());
                        }
                        super.entering(prop, i);
                    }
                };
                targetNode = admin.getNode(targetPath);
                v.visit(targetNode);
                size = paths.size();
                out.write("<p/>\n            <h3>Stats</h3>\n            ");
                out.write("Random reading ");
                out.print(cnt);
                out.print(type);
                out.write(" below ");
                out.print(targetPath);
                out.write("....<br>");
                out.flush();
                stats = new int[2];
                start = System.currentTimeMillis();
                i = 0;
                do {
                    if (i >= cnt) {
                        end = System.currentTimeMillis();
                        this.msg(out, String.valueOf(stats[0]) + " nodes, " + stats[1] + " properties.");
                        out.write("Overall read time: ");
                        out.print(end - start);
                        out.write(" ms<br>");
                        return;
                    }
                    rand = (double)size * Math.random();
                    index = (int)Math.floor(rand);
                    path = (String)paths.get(index);
                    item = repSession.getItem(path);
                    if (item.isNode()) {
                        this.msg(out, String.valueOf(index) + " - Reading Node: " + path + ".");
                        v0 = stats;
                        v0[0] = v0[0] + 1;
                    } else {
                        this.msg(out, String.valueOf(index) + " - Reading Prop: " + path + ".");
                        v1 = stats;
                        v1[1] = v1[1] + 1;
                    }
                    ++i;
                } while (true);
            }
            catch (Exception e) {
                out.println("<pre>");
                out.println(StringEscapeUtils.escapeHtml4((String)e.toString()));
                type = e.getStackTrace();
                randomProps = 0;
                cnt = type.length;
                ** GOTO lbl144
            }
        }
        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 var30_40) {
                throw var30_40;
            }
            finally {
                if (_jspxFactory != null) {
                    _jspxFactory.releasePageContext(_jspx_page_context);
                }
            }
        }
lbl-1000: // 1 sources:
        {
            el = type[randomProps];
            out.println(StringEscapeUtils.escapeHtml4((String)el.toString()));
            ++randomProps;
lbl144: // 2 sources:
            ** while (randomProps < cnt)
        }
lbl145: // 1 sources:
        out.println("</pre>");
    }

}