package org.nutz.weixin.session.memory;
import java.util.Collections;
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
import org.nutz.weixin.spi.WxSession;
public class MemoryWxSession implements WxSession {
protected String id;
protected long createTime;
protected long lastAccessedTime;
protected int maxInactiveInterval;
protected Map<String, Object> attrs;
protected boolean valid;
protected MemorySessionManager manager;
protected MemoryWxSession() {
valid = true;
attrs = new LinkedHashMap<String, Object>();
}
public MemoryWxSession(String id, MemorySessionManager manager) {
this();
this.id = id;
this.manager = manager;
}
public String getId() {
return id;
}
public long getCreationTime() {
return createTime;
}
public Object getAttribute(String name) {
checkValid();
return attrs.get(name);
}
public void setAttribute(String name, Object value) {
checkValid();
attrs.put(name, value);
}
public Enumeration<String> getAttributeNames() {
checkValid();
return Collections.enumeration(attrs.keySet());
}
public void setMaxInactiveInterval(int interval) {
checkValid();
this.maxInactiveInterval = interval;
}
public int getMaxInactiveInterval() {
return maxInactiveInterval;
}
public long getLastAccessedTime() {
return lastAccessedTime;
}
protected void setId(String id) {
this.id = id;
}
protected void setCreateTime(long createTime) {
this.createTime = createTime;
}
protected void setLastAccessedTime(long lastAccessedTime) {
this.lastAccessedTime = lastAccessedTime;
}
protected void setAttrs(Map<String, Object> attrs) {
this.attrs = attrs;
}
public void invalidate() {
valid = false;
manager.remove(id);
}
protected void checkValid() {
if (!valid)
throw new IllegalStateException(String.format("session(%s) had been invalidate", id));
}
}