HttpSessionWrapper.java 2.86 KB
package fi.codecrew.moya.web.helper;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Set;

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

public class HttpSessionWrapper implements HttpSession
{
	private final HttpSession session;

	public HttpSessionWrapper(HttpSession session)
	{
		this.session = session;
	}

	@Override
	public Object getAttribute(String attr) {
		return session.getAttribute(attr);
	}

	@Override
	public Enumeration<String> getAttributeNames() {
		return session.getAttributeNames();
	}

	@Override
	public long getCreationTime() {
		return session.getCreationTime();
	}

	public Date getCreationDateTime() {
		Date ret = null;
		try {
			ret = new Date(session.getCreationTime());
		} catch (Throwable t) {
			ret = null;
		}
		return ret;
	}

	@Override
	public String getId() {
		return session.getId();
	}

	@Override
	public long getLastAccessedTime() {
		return session.getLastAccessedTime();
	}

	public Date getLastAccessedDateTime() {
		Date ret = null;
		try {
			ret = new Date(session.getLastAccessedTime());
		} catch (Throwable t) {
			ret = null;
		}
		return ret;
	}

	@Override
	public int getMaxInactiveInterval() {
		return session.getMaxInactiveInterval();
	}

	@Override
	public ServletContext getServletContext() {
		return session.getServletContext();
	}

	@Override
	public HttpSessionContext getSessionContext() {
		return session.getSessionContext();
	}

	@Override
	public Object getValue(String arg0) {
		return session.getValue(arg0);
	}

	@Override
	public String[] getValueNames() {
		return session.getValueNames();
	}

	@Override
	public void invalidate() {
		session.invalidate();
	}

	@Override
	public boolean isNew() {
		return session.isNew();
	}

	@Override
	public void putValue(String arg0, Object arg1) {
		session.putValue(arg0, arg1);

	}

	@Override
	public void removeAttribute(String arg0) {
		session.removeAttribute(arg0);

	}

	@Override
	public void removeValue(String arg0) {
		session.removeValue(arg0);
	}

	@Override
	public void setAttribute(String arg0, Object arg1) {
		session.setAttribute(arg0, arg1);
	}

	@Override
	public void setMaxInactiveInterval(int arg0) {
		session.setMaxInactiveInterval(arg0);
	}

	public static List<HttpSessionWrapper> wrap(Set<HttpSession> sessions) {
		ArrayList<HttpSessionWrapper> ret = new ArrayList<>();
		for (HttpSession s : sessions) {
			ret.add(new HttpSessionWrapper(s));
		}
		Collections.sort(ret, new LastSeenComparator());

		return ret;
	}

	private static class LastSeenComparator implements Comparator<HttpSessionWrapper>
	{

		@Override
		public int compare(HttpSessionWrapper o1, HttpSessionWrapper o2) {
			return Long.compare(o1.getLastAccessedTime(), o2.getLastAccessedTime());
		}
	}

}