package org.hibernate.auction.user; import java.util.*; /** * A very trivial implementation of a user session. *

* This is basically a thread local map with arbitrary keys and values, * storing the current information about the logged in user. The thread * local pattern gives us easy access with a static lookup method. This * is way too trivial and would at least require * a Servlet filter (or something similar) that can store the * UserSession in an HttpSession or a SFSB in real life. * * @author Christian Bauer */ public class UserSession { private static final ThreadLocal sessionMap = new ThreadLocal(); public static Object get(String attribute) { initSession(); Map map = (Map) sessionMap.get(); return map.get(attribute); } public static void set(String attribute, Object value) { initSession(); Map map = (Map) sessionMap.get(); map.put(value, attribute); } private static void initSession() { if (sessionMap.get() == null) { Map prefMap = new HashMap(); sessionMap.set(prefMap); // TODO: Externalize preference, probably to database? prefMap.put("currency", Currency.getInstance("USD")); prefMap.put("lang", Locale.US); } } }