ingo@1022: /* ingo@1022: * Copyright (c) 2010 by Intevation GmbH ingo@1022: * ingo@1022: * This program is free software under the LGPL (>=v2.1) ingo@1022: * Read the file LGPL.txt coming with the software for details ingo@1022: * or visit http://www.gnu.org/licenses/ if it does not exist. ingo@1022: */ ingo@1022: tim@8: package de.intevation.gnv.action.sessionmodel; tim@8: tim@8: import javax.servlet.http.HttpServletRequest; tim@8: tim@8: import org.apache.log4j.Logger; tim@8: tim@8: /** ingo@690: * Creates and restores SessionModel objects from ingo@690: * HttpServletRequest. sascha@699: * sascha@684: * @author Tim Englich tim@8: */ tim@8: public class SessionModelFactory { tim@36: tim@954: /** tim@954: * The id of the SessionModel that must be used to lookup the tim@954: * model from the given HttpSession of the request. tim@954: */ tim@954: public final static String SESSION_MODEL_ID = "de.intevation.gnv.action." + tim@954: "sessionmodel.SessionModel.ID"; tim@954: tim@8: /** tim@8: * the logger, used to log exceptions and additonaly information tim@8: */ tim@8: private static Logger log = Logger.getLogger(SessionModelFactory.class); tim@8: tim@8: /** tim@8: * The singleton Instance of this Factory. tim@8: */ tim@8: private static SessionModelFactory instance = null; tim@8: tim@8: /** tim@8: * Constructor tim@8: */ tim@8: private SessionModelFactory() { tim@8: super(); tim@8: } tim@8: tim@8: /** tim@8: * This Method provides an singleton Instance of this Class. tim@8: * @return an singleton Instance of this Class tim@8: */ ingo@394: public synchronized static SessionModelFactory getInstance() { tim@954: log.debug("SessionModelFactory.getInstance"); tim@36: if (instance == null) { tim@8: instance = new SessionModelFactory(); tim@8: } tim@8: return instance; tim@8: } tim@36: tim@8: /** tim@8: * Getting the ArtifactDatabaseClient tim@954: * @param request the tequest from which the SessionModel should be read. tim@8: * @return the ArtifactDatabaseClient tim@8: */ tim@36: public SessionModel getSessionModel(HttpServletRequest request) { tim@954: log.debug("SessionModelFactory.getSessionModel"); ingo@394: synchronized (request) { tim@8: SessionModel sm = null; ingo@394: Object obj = request.getSession().getAttribute(SESSION_MODEL_ID); ingo@394: if (obj instanceof SessionModel) { ingo@394: sm = (SessionModel) obj; tim@36: } else { ingo@706: sm = new DefaultSessionModel(request.getLocale()); tim@8: request.getSession().setAttribute(SESSION_MODEL_ID, sm); tim@8: } tim@36: tim@8: return sm; tim@36: } tim@8: } tim@8: } sascha@700: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :