KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jahia > taglibs > html > session > SessionViewerTag


1 package org.jahia.taglibs.html.session;
2
3 import java.io.IOException JavaDoc;
4 import java.util.Enumeration JavaDoc;
5 import javax.servlet.http.HttpServletRequest JavaDoc;
6 import javax.servlet.http.HttpSession JavaDoc;
7 import javax.servlet.jsp.JspWriter JavaDoc;
8 import javax.servlet.jsp.tagext.TagSupport JavaDoc;
9 import java.util.Map JavaDoc;
10 import java.util.Iterator JavaDoc;
11 import org.jahia.utils.JahiaTools;
12
13 /**
14  * <p>Title: Debugging tool that displays the content of the current HTTP
15 * session.</p>
16  * <p>Description: </p>
17  * <p>Copyright: Copyright (c) 2002</p>
18  * <p>Company: Jahia Ltd</p>
19  * @author Serge Huber
20  * @version 1.0
21  */

22
23 public class SessionViewerTag extends TagSupport JavaDoc {
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 JavaDoc out = pageContext.getOut();
35             HttpServletRequest JavaDoc request = (HttpServletRequest JavaDoc) pageContext.getRequest();
36             HttpSession JavaDoc session = request.getSession();
37             out.println("<div class=\"session\">");
38             Enumeration JavaDoc 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 JavaDoc curAttrName = (String JavaDoc) attrNameEnum.nextElement();
53                 Object JavaDoc curAttrObject = session.getAttribute(curAttrName);
54                 handleAttrDisplay(out, curAttrName, curAttrObject);
55             }
56             out.println("</div>");
57         } catch (IOException JavaDoc ioe) {
58             logger.error("Error while displaying session content", ioe);
59         }
60         return SKIP_BODY;
61     }
62
63     /**
64      * handleObjectDisplay
65      *
66      * @param curAttrName String
67      * @param curAttrObject Object
68      */

69     private void handleAttrDisplay (JspWriter JavaDoc out, String JavaDoc curAttrName, Object JavaDoc curAttrObject) throws IOException JavaDoc {
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 JavaDoc) {
79             handleMapDisplay(out, (Map JavaDoc) 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 JavaDoc out, Map JavaDoc map, int indent) throws IOException JavaDoc {
88         Iterator JavaDoc 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 JavaDoc curEntry = (Map.Entry JavaDoc) entryIter.next();
115             Object JavaDoc key = curEntry.getKey();
116             Object JavaDoc 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 JavaDoc) {
134                 handleMapDisplay(out, (Map JavaDoc) 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 JavaDoc getPadding(int indent) {
147         StringBuffer JavaDoc paddingBuf = new StringBuffer JavaDoc(indent);
148         for (int i=0; i < indent; i++) {
149             paddingBuf.append(' ');
150         }
151         return paddingBuf.toString();
152     }
153
154 }
155
Popular Tags