Replaced ContextResponder with a more generic Destroyable interface.
[jsvc.git] / src / dolda / jsvc / util / PerSession.java
index 1cbc0d7..0bb1ab0 100644 (file)
@@ -88,11 +88,19 @@ public class PerSession implements Responder {
     public void respond(Request req) {
        Session sess = Session.get(req);
        Responder resp;
-       synchronized(sess) {
+       synchronized(this) {
            resp = (Responder)sess.get(rcl, null);
            if(resp == null) {
                resp = create(sess);
                sess.put(rcl, resp);
+               if(resp instanceof Destroyable) {
+                   final Destroyable cr = (Destroyable)resp;
+                   sess.listen(new Session.Listener() {
+                           public void destroy(Session sess) {
+                               cr.destroy();
+                           }
+                       });
+               }
            }
        }
        resp.respond(req);