jsfdeveloperaidservlet.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 841 行 · 第 1/2 页

JAVA
841
字号
          //need view for resolving property bundles.          context.setViewRoot(uiViewRoot);          printEvaluated(context,                         request,                         out,                         valueExpression,                         viewId,                         phaseId);          out.println("<br/>");          out.println("<em><a href=\"" +                      request.getContextPath() +                      "/caucho.jsf.developer.aid;jsessionid=" +                      session.getId() +                      "?viewId=" + viewId +                      "&phaseId=" + phaseId + "\">" +                      "<<< Back" +                      "</a></em>");        }        else if (phaseId == null) {          out.println("<table>");          out.println("<thead>");          out.println(            "<tr><td colspan=\"2\" align=\"center\"><strong>Snoop</strong></td></tr>");          out.println(            "<tr><td><strong>Name</strong></td><td><strong>Value</strong></td></tr>");          out.println("</thead>");          out.println("<tbody>");          //headers          out.println(            "<tr><td colspan=\"2\" align=\"center\"><em>Headers</em></td></tr>");          Map<String, String> headers = snapshot.getHeaderMap();          for (String header : headers.keySet()) {            String value = headers.get(header);            out.println("<tr><td><em>" +                        header +                        "</em></td><td><em>" +                        value +                        "</em></td></tr>");          }          //parameters          out.println(            "<tr><td colspan=\"2\" align=\"center\"><em>Parameters</em></td></tr>");          Map<String, String> parameters = snapshot.getParameterMap();          for (String parameter : parameters.keySet()) {            String value = parameters.get(parameter);            out.println("<tr><td><em>" +                        parameter +                        "</em></td><td><em>" +                        value +                        "</em></td></tr>");          }          out.println("</tbody>");          out.println("</table>");        }        else {          out.println(" <div id=\"view\">");          printComponentTree(request, out, viewRoot, null, viewId, phaseId, 0);          out.println(" </div>");          //snoop          out.println(" <table>");          out.println(" <thead>");          out.println(            " <tr><td colspan=\"2\" align=\"center\"><strong>Snoop</strong></td></tr>");          out.println(            " <tr><td><strong>Name</strong></td><td><strong>Value</strong></td></tr>");          out.println(" </thead>");          out.println(" <tbody>");          //request          out.println(            " <tr><td colspan=\"2\" align=\"center\"><em>Request</em></td></tr>");          printBeanMap(out, viewRoot.getRequestMap());          //session          out.println(            " <tr><td colspan=\"2\" align=\"center\"><em>Session</em></td></tr>");          printBeanMap(out, viewRoot.getSessionMap());          //application          out.println(            " <tr><td colspan=\"2\" align=\"center\"><em>Application</em></td></tr>");          printBeanMap(out, viewRoot.getApplicationMap());          out.println(" </tbody>");          out.println(" </table>");        }        out.println(" </div>");        printControls(out, request, session);        out.println(" </body>");        out.println("</html>");      }      out.flush();    }    catch (IOException e) {      throw e;    }    finally {      if (context != null)        context.release();      FacesContext.setCurrentInstance(oldContext);    }  }  private void printBeanMap(PrintWriter out, Map<String, JsfDeveloperAid.Bean> map)  {    for (String key : map.keySet()) {      JsfDeveloperAid.Bean bean = map.get(key);      if (bean == null) {        out.println(" <tr><td><em>" +                    key +                    "</em></td><td><em>null</em></td></tr>");      }      else if (bean.isSimple()) {        out.println(" <tr><td><em>" +                    key +                    "</em></td><td><em>" +                    bean.getClassName() + '(' + bean.getToString() + ')' +                    "</em></td></tr>");      }      else if (bean.isArray()) {        out.println(" <tr><td><em>" +                    key +                    "</em></td><td><em>" +                    bean.getClassName() + '[' + bean.getLength() + ']' +                    "</em></td></tr>");      }      else {        out.print(" <tr><td><em>" +                  key +                  "</em></td><td><em>" +                  bean.getClassName() + '(' + bean.getToString() + ')');        out.print(": </em>");        Map<String, String> beanAttributes = bean.getAttributes();        if (beanAttributes != null) {          for (String attribute : beanAttributes.keySet()) {            out.print("<br/>&nbsp;&nbsp;&nbsp;<em>" +                      attribute +                      "</em>=");            String value = beanAttributes.get(attribute);            if (value == null) {              out.print("<em>null</em>");            }            else {              out.print("<em>");              printEscaped(out, value);              out.print("</em>");            }          }        }        out.println("</td></tr>");      }    }  }  private void serveAidMap(Map<String, com.caucho.jsf.dev.JsfDeveloperAid.JsfRequestSnapshot> aidMap,                           ServletResponse res)    throws IOException  {    res.setContentType("application/x-caucho-jsf-developer-aid");    Hessian2Output out = new Hessian2Output(res.getOutputStream());    out.writeObject(aidMap);    out.flush();  }  private void printEvaluated(FacesContext context,                              HttpServletRequest request,                              PrintWriter out,                              String expression,                              String viewId,                              String phaseId  )    throws UnsupportedEncodingException  {    ELContext elContext = context.getELContext();    ValueExpression valueExpression = context.getApplication()      .getExpressionFactory()      .createValueExpression(elContext, expression, Object.class);    Object obj = valueExpression.getValue(elContext);    out.print("<strong>");    out.print(expression);    out.print("</strong>=");    if (obj == null) {      out.println("null");      out.println("<br/>");    }    else {      if (obj instanceof String          || obj instanceof Boolean          || obj instanceof Character          || obj instanceof Number          || obj instanceof Date        ) {        out.println(obj.toString());      }      else {        out.print("<strong>");        out.print(obj.getClass().toString());        out.print("[" + obj.toString() + "]");        out.println("</strong>");        Field []fields = obj.getClass().getDeclaredFields();        out.println("<br/>");        for (Field field : fields) {          try {            field.setAccessible(true);            Object value = field.get(obj);            out.print("&nbsp;&nbsp;&nbsp;");            printAttribute(request,                           out,                           field.getName(),                           String.valueOf(value),                           viewId,                           phaseId);            out.println("<br/>");          }          catch (IllegalAccessException e) {          }        }      }    }  }  private void printComponentTree(HttpServletRequest request,                                  PrintWriter out,                                  com.caucho.jsf.dev.JsfDeveloperAid.Component component,                                  String facetName,                                  String viewId,                                  String phaseId,                                  int depth)    throws UnsupportedEncodingException  {    for (int i = 0; i < depth * 3; i++)      out.print("&nbsp;");    out.print("&lt;<strong>" + component.getUiComponentClass() + "</strong>");    printAttribute(request,                   out,                   "clientId",                   component.getClientId(),                   viewId,                   phaseId);    if (component.isValueHolder()) {      printAttribute(request,                     out,                     "value",                     component.getValue(),                     viewId,                     phaseId);      printAttribute(request,                     out,                     "localValue",                     component.getLocalValue(),                     viewId, phaseId);    }    if (component.isEditableValueHolder())      printAttribute(request, out, "submittedValue",                     component.getSubmittedValue(), viewId, phaseId      );    if (facetName != null)      printAttribute(request,                     out,                     "enclosingFacet",                     facetName,                     viewId,                     phaseId);    Map<String, String> attributes = component.getAttributes();    if (attributes != null)      for (String attr : attributes.keySet()) {        String value = attributes.get(attr);        if (value != null)          printAttribute(request, out, attr, value, viewId, phaseId);      }    out.println("><br/>");    List<com.caucho.jsf.dev.JsfDeveloperAid.Component> children      = component.getChildren();    Map<String, com.caucho.jsf.dev.JsfDeveloperAid.Component> facets = component      .getFacets();    if (children != null)      for (com.caucho.jsf.dev.JsfDeveloperAid.Component child : children)        printComponentTree(request,                           out,                           child,                           null,                           viewId,                           phaseId,                           depth + 1);    if (facets != null)      for (String facet : facets.keySet())        printComponentTree(request,                           out,                           facets.get(facet),                           facet,                           viewId,                           phaseId,                           depth + 1);  }  private void printAttribute(HttpServletRequest request,                              PrintWriter out,                              String name,                              String value,                              String viewId,                              String phaseId)    throws UnsupportedEncodingException  {    out.print(' ');    out.print("<em>" + name);    out.print("</em>=\"");    if (value == null)      out.print("null");    else if (value.indexOf("#{") > -1 && value.indexOf("}") > -1) {      out.print("<a href=\"" +                request.getContextPath() +                "/caucho.jsf.developer.aid;jsessionid=" +                request.getSession().getId() +                "?viewId=" +                viewId +                "&phaseId=" +                phaseId +                "&valueExpression=" +                URLEncoder.encode(value, "UTF-8") +                "\">" +                value +                "</a>");    }    else      printEscaped(out, value);    out.print("\"");  }  public void printEscaped(PrintWriter out, String value)  {    char []valueChars = value.toCharArray();    boolean wasSpace = false;    for (char valueChar : valueChars) {      switch (valueChar) {      case ' ':        wasSpace = true;        break;      case '\n':        if (wasSpace)          out.print(' ');        wasSpace = false;        out.print('\n');        break;      case '\r':        if (wasSpace)          out.print(' ');        wasSpace = false;        out.print('\r');        break;      case '<':        if (wasSpace)          out.print(' ');        wasSpace = false;        out.print("&lt;");        break;      default:        if (wasSpace)          out.print(' ');        wasSpace = false;        out.write(valueChar);      }    }  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?