001    // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 
002    // The Molly framework is freely distributable under the terms of an
003    // MIT-style license. For details, see the molly pages web site at:
004    // http://www.mollypages.org/. Use, modify, have fun !
005    
006    package fc.web.servlet;
007    
008    import javax.servlet.*;
009    import javax.servlet.http.*;
010    import java.io.*;
011    import java.util.*;
012    
013    import fc.io.*;
014    
015    /** 
016    For debugging session attribute set/get events. Enable this listener in the
017    server configuration file to ease <i>development time</i> debugging.
018    
019    @author hursh jain
020    **/
021    public class DebugSessionListener implements 
022           HttpSessionListener, HttpSessionAttributeListener
023    {
024    Log log;
025    
026    void initLog(HttpSession session)
027      {
028      if (log == null) {
029        log = Log.getDefault();
030        }
031      }
032    
033    //Session Listener
034    public void sessionCreated(HttpSessionEvent event)
035      {
036      synchronized (this) { 
037        HttpSession session = event.getSession();
038        initLog(session); 
039        log.bug("session CREATED=", session); 
040        }
041      }
042    
043    public void sessionDestroyed(HttpSessionEvent event)
044      {
045      synchronized (this) { 
046        HttpSession session = event.getSession();
047        initLog(session); 
048        log.bug("session DESTROYED=", session); 
049        }
050      }
051    
052    //AttributeListener 
053    public void attributeAdded(HttpSessionBindingEvent event) 
054      {
055      synchronized (this) { 
056        HttpSession session = event.getSession();
057        initLog(session); 
058        log.bug("attribute ADDED to session=", session,
059          "name=", event.getName(),
060          "value=", event.getValue());
061        }
062      }
063      
064    public void attributeRemoved(HttpSessionBindingEvent event) 
065      {
066      synchronized (this) { 
067        HttpSession session = event.getSession();
068        initLog(session); 
069        log.bug("attribute REMOVED to session=", session, 
070          "name=", event.getName(),
071          "value=", event.getValue());
072        }
073      }
074    
075    public void attributeReplaced(HttpSessionBindingEvent event) {
076      synchronized (this) { 
077        HttpSession session = event.getSession();
078        initLog(session); 
079        log.bug("attribute REPLACED to session=", session, 
080          "name=", event.getName(),
081          "value=", event.getValue());
082        }
083      }
084    }