Package org.nutz.mongo.session

Source Code of org.nutz.mongo.session.MongoHttpSession

package org.nutz.mongo.session;

import java.util.Enumeration;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionContext;

import org.bson.types.ObjectId;

import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;

/**
* 兼容J2EE中的HttpSession的MongoSession实现
* @author wendal(wendal1985@gmail.com)
*/
@SuppressWarnings("deprecation")
public class MongoHttpSession extends MongoSession implements HttpSession {

  public MongoHttpSession(ManagerContext context, ObjectId id) {
    super(context, id);
  }

  private ServletContext servletContext;

  private HttpSessionContext httpSessionContext;

  public ServletContext getServletContext() {
    return servletContext;
  }

  protected void setServletContext(final ServletContext servletContext) {
    this.servletContext = servletContext;
    httpSessionContext = new HttpSessionContext() {

      public HttpSession getSession(String id) {
        MongoHttpSession session = new MongoHttpSession(context, new ObjectId(id));
        session.setServletContext(servletContext);
        return session;
      }

      public Enumeration<String> getIds() {
        final DBCursor cur = sessions.find(new BasicDBObject(),
            new BasicDBObject("_id", 1));
        return new Enumeration<String>() {

          public boolean hasMoreElements() {
            return cur.hasNext();
          }

          public String nextElement() {
            return cur.next().get("_id").toString();
          }

          protected void finalize() throws Throwable {
            cur.close();
            super.finalize();
          }
        };
      }
    };
  }

  public HttpSessionContext getSessionContext() {
    return httpSessionContext;
  }

}
TOP

Related Classes of org.nutz.mongo.session.MongoHttpSession

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.