package org.jboss.pitbull.servlet.internal.session;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionContext;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class DefaultHttpSession implements HttpSession, Serializable
{
private long creationTime = System.currentTimeMillis();
private String id;
private long lastAccessTime = System.currentTimeMillis();
private boolean invalidated;
private Map<String, Object> attributes = new HashMap<String, Object>();
private transient ServletContext servletContext;
private int maxIntervalTime = 300;
public DefaultHttpSession()
{
}
void checkInvalidation()
{
if (invalidated) throw new IllegalStateException("HttpSession was invalidated.");
}
void updateAccessTime()
{
lastAccessTime = System.currentTimeMillis();
}
@Override
public long getCreationTime()
{
return creationTime;
}
@Override
public String getId()
{
return id;
}
@Override
public long getLastAccessedTime()
{
return lastAccessTime;
}
@Override
public ServletContext getServletContext()
{
return null;
}
public void setServletContext(ServletContext servletContext)
{
this.servletContext = servletContext;
}
@Override
public void setMaxInactiveInterval(int interval)
{
this.maxIntervalTime = interval;
}
@Override
public int getMaxInactiveInterval()
{
return maxIntervalTime;
}
@Override
public HttpSessionContext getSessionContext()
{
return new HttpSessionContext()
{
@Override
public HttpSession getSession(String sessionId)
{
return DefaultHttpSession.this;
}
@Override
public Enumeration<String> getIds()
{
return new Enumeration<String>()
{
@Override
public boolean hasMoreElements()
{
return false;
}
@Override
public String nextElement()
{
return null;
}
};
}
};
}
@Override
public Object getAttribute(String name)
{
return attributes.get(name);
}
@Override
public Object getValue(String name)
{
return attributes.get(name);
}
@Override
public Enumeration<String> getAttributeNames()
{
final Iterator<String> it = attributes.keySet().iterator();
return new Enumeration<String>()
{
@Override
public boolean hasMoreElements()
{
return it.hasNext();
}
@Override
public String nextElement()
{
return it.next();
}
};
}
@Override
public String[] getValueNames()
{
String[] names = new String[attributes.keySet().size()];
return new String[0];
}
@Override
public void setAttribute(String name, Object value)
{
}
@Override
public void putValue(String name, Object value)
{
}
@Override
public void removeAttribute(String name)
{
}
@Override
public void removeValue(String name)
{
}
@Override
public void invalidate()
{
}
@Override
public boolean isNew()
{
return false;
}
}