1 package org.jahia.taglibs.html.session; 2 3 import java.io.IOException ; 4 import java.util.Enumeration ; 5 import javax.servlet.http.HttpServletRequest ; 6 import javax.servlet.http.HttpSession ; 7 import javax.servlet.jsp.JspWriter ; 8 import javax.servlet.jsp.tagext.TagSupport ; 9 import java.util.Map ; 10 import java.util.Iterator ; 11 import org.jahia.utils.JahiaTools; 12 13 22 23 public class SessionViewerTag extends TagSupport { 24 25 private static org.apache.log4j.Logger logger = 26 org.apache.log4j.Logger.getLogger(SessionViewerTag.class); 27 28 public SessionViewerTag() { 29 } 30 31 public int doStartTag() { 32 33 try { 34 JspWriter out = pageContext.getOut(); 35 HttpServletRequest request = (HttpServletRequest ) pageContext.getRequest(); 36 HttpSession session = request.getSession(); 37 out.println("<div class=\"session\">"); 38 Enumeration attrNameEnum = session.getAttributeNames(); 39 if (attrNameEnum.hasMoreElements()) { 40 out.print(getPadding(2)); 41 out.println("<ol class=\"attribute\">"); 42 out.print(getPadding(4)); 43 out.println("<li>Name</li>"); 44 out.print(getPadding(4)); 45 out.println("<li>Type</li>"); 46 out.print(getPadding(4)); 47 out.println("<li>Value</li>"); 48 out.print(getPadding(2)); 49 out.println("</ol>"); 50 } 51 while (attrNameEnum.hasMoreElements()) { 52 String curAttrName = (String ) attrNameEnum.nextElement(); 53 Object curAttrObject = session.getAttribute(curAttrName); 54 handleAttrDisplay(out, curAttrName, curAttrObject); 55 } 56 out.println("</div>"); 57 } catch (IOException ioe) { 58 logger.error("Error while displaying session content", ioe); 59 } 60 return SKIP_BODY; 61 } 62 63 69 private void handleAttrDisplay (JspWriter out, String curAttrName, Object curAttrObject) throws IOException { 70 out.println("<ol class=\"attribute\">"); 71 out.print (" <li class=\"name\">"); 72 out.print (curAttrName); 73 out.println("</li>"); 74 out.print (" <li class=\"type\">"); 75 out.print (curAttrObject.getClass().getName()); 76 out.println("</li>"); 77 out.print (" <li class=\"value\">"); 78 if (curAttrObject instanceof Map ) { 79 handleMapDisplay(out, (Map ) curAttrObject, 4); 80 } else { 81 out.print(curAttrObject.toString()); 82 } 83 out.println("</li>"); 84 out.println("</ol>"); 85 } 86 87 private void handleMapDisplay(JspWriter out, Map map, int indent) throws IOException { 88 Iterator entryIter = map.entrySet().iterator(); 89 out.print(getPadding(indent)); 90 out.println("<div class=\"map\">"); 91 if (entryIter.hasNext()) { 92 out.print(getPadding(indent+2)); 93 out.println("<ol class=\"entry\">"); 94 out.print(getPadding(indent+4)); 95 out.print("<li class=\"key\">"); 96 out.print("Key"); 97 out.println("</li>"); 98 out.print(getPadding(indent+4)); 99 out.print("<li class=\"key-type\">"); 100 out.print("Key type"); 101 out.println("</li>"); 102 out.print(getPadding(indent+4)); 103 out.print("<li class=\"value-type\">"); 104 out.print("Value type"); 105 out.println("</li>"); 106 out.print(getPadding(indent+4)); 107 out.print("<li class=\"value\">"); 108 out.print("Value"); 109 out.println("</li>"); 110 out.print(getPadding(indent+2)); 111 out.println("</ol>"); 112 } 113 while (entryIter.hasNext()) { 114 Map.Entry curEntry = (Map.Entry ) entryIter.next(); 115 Object key = curEntry.getKey(); 116 Object value = curEntry.getValue(); 117 out.print(getPadding(indent+2)); 118 out.println("<ol class=\"entry\">"); 119 out.print(getPadding(indent+4)); 120 out.print("<li class=\"key\">"); 121 out.print(key); 122 out.println("</li>"); 123 out.print(getPadding(indent+4)); 124 out.print("<li class=\"key-type\">"); 125 out.print(key.getClass().getName()); 126 out.println("</li>"); 127 out.print(getPadding(indent+4)); 128 out.print("<li class=\"value-type\">"); 129 out.print(value.getClass().getName()); 130 out.println("</li>"); 131 out.print(getPadding(indent+4)); 132 out.print("<li class=\"value\">"); 133 if (value instanceof Map ) { 134 handleMapDisplay(out, (Map ) value, indent+4); 135 } else { 136 out.print(JahiaTools.text2XMLEntityRef(value.toString(), 0)); 137 } 138 out.println("</li>"); 139 out.print(getPadding(indent+2)); 140 out.println("</ol>"); 141 } 142 out.print(getPadding(indent)); 143 out.println("</div>"); 144 } 145 146 private String getPadding(int indent) { 147 StringBuffer paddingBuf = new StringBuffer (indent); 148 for (int i=0; i < indent; i++) { 149 paddingBuf.append(' '); 150 } 151 return paddingBuf.toString(); 152 } 153 154 } 155 | Popular Tags |