annotate flys-backend/src/main/java/de/intevation/flys/backend/SessionHolder.java @ 4569:276d9bd3c77d

Workaround for NPE in FloodMapState.
author Christian Lins <christian.lins@intevation.de>
date Tue, 20 Nov 2012 12:53:14 +0100
parents 76c75c8b9ee0
children
rev   line source
466
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.backend;
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
2
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 import org.apache.log4j.Logger;
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
4
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
5 import org.hibernate.Session;
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
6 import org.hibernate.SessionFactory;
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
7
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 public class SessionHolder
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10 {
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 466
diff changeset
11 private static Logger log =
466
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 Logger.getLogger(SessionHolder.class);
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 public static final ThreadLocal<Session> HOLDER =
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 new ThreadLocal<Session>() {
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 466
diff changeset
16 @Override
466
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 protected Session initialValue() {
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 return create();
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 }
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 };
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 private SessionHolder() {
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 }
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 public synchronized static Session create() {
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 466
diff changeset
26 log.debug("create");
466
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 SessionFactory sessionFactory =
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 SessionFactoryProvider.getSessionFactory();
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 return sessionFactory.openSession();
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 }
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32 public static Session acquire() {
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 466
diff changeset
33 log.debug("acquire");
466
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 Session session = create();
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 HOLDER.set(session);
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 return session;
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 }
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 public static void release() {
3333
76c75c8b9ee0 SedDB: Make access to SedDB configurable over conf.xml and provide access to sessions.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 466
diff changeset
40 log.debug("release");
466
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 HOLDER.remove();
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42 }
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 }
8bd50b41dea6 Moved the SessionHolder from flys-artifacts to flys-backend.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org