package org.nutz.mvc;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import org.nutz.log.Log;
import org.nutz.log.Logs;

/**
 * 如果你的应用，在 Session 中保存了一些需要注销的对象，比如你在 Ioc 容器中将一个 DataSource 对象的范围设成
 * "session"，那么请启用本的监听器，它会在一个 session 注销时，关闭 DataSource
 * <p>
 * 启用的方法是在 web.xml 中，添加下面的代码：
 * 
 * <pre>
 * &lt;listener&gt;
 * &lt;listerner-class&gt;org.nutz.mvc.NutSessionListener&lt;/listerner-class&gt;
 * &lt;/listener&gt;
 * </pre>
 * 
 * <h4 style=color:red>注意:</h4><br>
 * 如果你的 IocProvider 返回是 Ioc 而不是 Ioc2，那么 这个监听器是没有意义的。因为Nutz.Mvc 不会为 Session 创建
 * IocContext，因此也就不需要注销
 * 
 * @author zozoh(zozohtnt@gmail.com)
 * @author wendal(wendal1985@gmail.com)
 */
public final class NutSessionListener implements HttpSessionListener {
	
	private static final Log log = Logs.get();
	
	public static boolean isSessionScopeEnable = false;

	public NutSessionListener() {
		isSessionScopeEnable = true;
		log.info("NutIoc SessionScope is Enable.");
	}
	
    public void sessionCreated(HttpSessionEvent se) {}

    public void sessionDestroyed(HttpSessionEvent se) {
        Mvcs.deposeSession(se.getSession());
    }

}

@@ -798,20 +798,22 @@
 ener %7B%0D%0A
-%09
 %0D%0A
-%09
+    
 private 
@@ -852,12 +852,188 @@
 );%0D%0A
-%09%0D%0A%09
+%0D%0A    /**%0D%0A     * %E5%A6%82%E6%9E%9C%E4%BD%A0%E5%9C%A8 web.xml %E9%85%8D%E7%BD%AE%E4%BA%86%E8%BF%99%E4%B8%AA%E7%9B%91%E5%90%AC%E5%99%A8%EF%BC%8C%E9%82%A3%E4%B9%88%E6%88%91%E4%BB%AC%E7%90%86%E8%A7%A3%E4%BD%A0%E7%9A%84%E6%84%8F%E5%9B%BE%E5%B0%B1%E6%98%AF%E8%A6%81%E8%87%AA%E5%8A%A8%E5%88%9B%E5%BB%BA session %3Cbr%3E%0D%0A     * %E5%90%A6%E5%88%99%E4%BD%A0%E5%B0%B1%E4%B8%8D%E9%9C%80%E8%A6%81%E8%87%AA%E5%8A%A8%E5%88%9B%E5%BB%BA session%E3%80%82%3Cbr%3E%0D%0A     * %E5%9C%A8 Nutz %E9%BB%98%E8%AE%A4%E7%9A%84 ModuleProcessor %E9%87%8C%EF%BC%8C%E4%BC%9A%E6%A0%B9%E6%8D%AE%E8%BF%99%E4%B8%AA%E5%8F%98%E9%87%8F%E6%9D%A5%E5%86%B3%E5%AE%9A%E6%98%AF%E5%90%A6%E8%87%AA%E5%8A%A8%E5%88%9B%E5%BB%BAsession%E7%9A%84%0D%0A     */%0D%0A    
 publ
@@ -1083,17 +1083,20 @@
 lse;%0D%0A%0D%0A
-%09
+    
 public N
@@ -1118,18 +1118,24 @@
 er() %7B%0D%0A
-%09%09
+        
 isSessio
@@ -1160,10 +1160,16 @@
 e;%0D%0A
-%09%09
+        
 log.
@@ -1213,13 +1213,15 @@
 );%0D%0A
-%09
+    
 %7D%0D%0A
-%09
 %0D%0A  

add JavaDoc for issue #506 and commit 1c001af