[Yanel-commits] rev 57771 - public/yanel/trunk/src/contributions/resources/sessionmanager/src/java/org/wyona/yanel/impl/resources/sessionmanager

michi at wyona.com michi at wyona.com
Mon Apr 11 10:03:16 CEST 2011


Author: michi
Date: 2011-04-11 10:03:16 +0200 (Mon, 11 Apr 2011)
New Revision: 57771

Modified:
   public/yanel/trunk/src/contributions/resources/sessionmanager/src/java/org/wyona/yanel/impl/resources/sessionmanager/SessionManagerResource.java
Log:
string builder replaced by DOM

Modified: public/yanel/trunk/src/contributions/resources/sessionmanager/src/java/org/wyona/yanel/impl/resources/sessionmanager/SessionManagerResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/sessionmanager/src/java/org/wyona/yanel/impl/resources/sessionmanager/SessionManagerResource.java	2011-04-11 07:31:32 UTC (rev 57770)
+++ public/yanel/trunk/src/contributions/resources/sessionmanager/src/java/org/wyona/yanel/impl/resources/sessionmanager/SessionManagerResource.java	2011-04-11 08:03:16 UTC (rev 57771)
@@ -14,6 +14,9 @@
 
 import org.apache.log4j.Logger;
 
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
 /**
  * Session manager resource
  */
@@ -21,40 +24,68 @@
     
     private static Logger log = Logger.getLogger(SessionManagerResource.class);
     
+    private String NAMESPACE = "http://www.wyona.org/yanel/1.0";
+
     /**
-     *
+     * @see org.wyona.yanel.impl.resources.BasicXMLResource#getContentXML(String)
      */
-    protected InputStream getContentXML(String viewId) {
+    @Override
+    protected InputStream getContentXML(String viewId) throws Exception {
         if (log.isDebugEnabled()) {
             log.debug("requested viewId: " + viewId);
         }
-        StringBuffer sb = new StringBuffer("<?xml version=\"1.0\"?>");
-        sb.append("<session-manager xmlns=\"http://www.wyona.org/yanel/1.0\">");
+
+        Document doc = org.wyona.commons.xml.XMLHelper.createDocument(NAMESPACE, "session-manager");
+        Element rootEl = doc.getDocumentElement();
+
+        //StringBuffer sb = new StringBuffer("<?xml version=\"1.0\"?>");
+        //sb.append("<session-manager xmlns=\"http://www.wyona.org/yanel/1.0\">");
+
         javax.servlet.http.HttpSession[] activeSessions = org.wyona.yanel.servlet.SessionCounter.getActiveSessions();
-        sb.append("<number-of-sessions>" + activeSessions.length + "</number-of-sessions>");
+        Element numberOfSessionsEl = doc.createElementNS(NAMESPACE, "number-of-sessions");
+        numberOfSessionsEl.appendChild(doc.createTextNode("" + activeSessions.length));
+        rootEl.appendChild(numberOfSessionsEl);
+        //sb.append("<number-of-sessions>" + activeSessions.length + "</number-of-sessions>");
 
         java.text.DateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:SSZ");
         for (int i = 0; i < activeSessions.length; i++) {
             try {
-                sb.append("<session id=\"" + activeSessions[i].getId() + "\" creation-time=\"" + dateFormat.format(new Date(activeSessions[i].getCreationTime())) + "\" last-accessed-time=\"" + dateFormat.format(new Date(activeSessions[i].getLastAccessedTime())) + "\">");
+                Element sessionEl = doc.createElementNS(NAMESPACE, "session");
+                sessionEl.setAttribute("id", activeSessions[i].getId());
+                sessionEl.setAttribute("creation-time", dateFormat.format(new Date(activeSessions[i].getCreationTime())));
+                sessionEl.setAttribute("last-accessed-time", dateFormat.format(new Date(activeSessions[i].getLastAccessedTime())));
+                //sb.append("<session id=\"" + activeSessions[i].getId() + "\" creation-time=\"" + dateFormat.format(new Date(activeSessions[i].getCreationTime())) + "\" last-accessed-time=\"" + dateFormat.format(new Date(activeSessions[i].getLastAccessedTime())) + "\">");
+                rootEl.appendChild(sessionEl);
 
                 // TODO ...
                 IdentityMap identityMap = (IdentityMap) activeSessions[i].getAttribute(org.wyona.yanel.servlet.YanelServlet.IDENTITY_MAP_KEY);
                 if (identityMap != null) {
-                    sb.append("<identities>" + identityMap.toString() + "</identities>");
+                    Element identitiesEl = doc.createElementNS(NAMESPACE, "identities");
+                    identitiesEl.appendChild(doc.createTextNode(identityMap.toString()));
+                    sessionEl.appendChild(identitiesEl);
+                    //sb.append("<identities>" + identityMap.toString() + "</identities>");
                 } else {
-                    sb.append("<no-identity-yet/>");
+                    sessionEl.appendChild(doc.createElementNS(NAMESPACE, "no-identity-yet"));
+                    //sb.append("<no-identity-yet/>");
                 }
                 String lastAccessedURL = (String) activeSessions[i].getAttribute(YanelServlet.YANEL_LAST_ACCESS_ATTR);
                 if(lastAccessedURL != null) {
-                    sb.append("<last-accessed-url>" + lastAccessedURL + "</last-accessed-url>");
+                    Element lastAccessedURLEl = doc.createElementNS(NAMESPACE, "last-accessed-url");
+                    lastAccessedURLEl.appendChild(doc.createTextNode(lastAccessedURL));
+                    sessionEl.appendChild(lastAccessedURLEl);
+                    //sb.append("<last-accessed-url>" + lastAccessedURL + "</last-accessed-url>");
                 }
-                sb.append("</session>");
+                //sb.append("</session>");
             } catch (Exception e) {
-                sb.append("<exception session-id=\"" + activeSessions[i].getId() + "\">" + e.getMessage() + "</exception>");
+                Element exceptionEl = doc.createElementNS(NAMESPACE, "exception");
+                exceptionEl.setAttribute("session-id", activeSessions[i].getId());
+                exceptionEl.appendChild(doc.createTextNode(e.getMessage()));
+                rootEl.appendChild(exceptionEl);
+                //sb.append("<exception session-id=\"" + activeSessions[i].getId() + "\">" + e.getMessage() + "</exception>");
             }
         }
-        sb.append("</session-manager>");
-        return new ByteArrayInputStream(sb.toString().getBytes());
+        //sb.append("</session-manager>");
+        //return new ByteArrayInputStream(sb.toString().getBytes());
+        return org.wyona.commons.xml.XMLHelper.getInputStream(doc, false, false, null);
     }
 }



More information about the Yanel-commits mailing list