package cn.org.rapid_framework.web.session.wrapper;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.http.HttpSession;
import cn.org.rapid_framework.web.session.store.SessionStore;
@SuppressWarnings("unchecked")
public class HttpSessionSessionStoreWrapper extends HttpSessionWrapper{
String sessionId;
Map sessionData;
SessionStore store;
public HttpSessionSessionStoreWrapper(HttpSession session,SessionStore store,String sessionId,Map sessionData) {
super(session);
this.store = store;
this.sessionId = sessionId;
this.sessionData = sessionData;
}
@Override
public void invalidate() {
sessionData.clear();
store.deleteSession(getId());
}
@Override
public String getId() {
return sessionId;
}
@Override
public Object getAttribute(String key) {
return this.sessionData.get(key);
}
@Override
public Enumeration getAttributeNames() {
return Collections.enumeration(sessionData.keySet());
}
@Override
public void removeAttribute(String key) {
sessionData.remove(key);
store.onRemoveAttribute(sessionId,key,sessionData,getMaxInactiveInterval());
}
@Override
public void setAttribute(String key, Object value) {
sessionData.put(key, value);
store.onSetAttribute(sessionId,key,sessionData,getMaxInactiveInterval());
}
}