aboutsummaryrefslogtreecommitdiff
path: root/id/server/moa-id-commons/src
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/moa-id-commons/src')
-rw-r--r--id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java229
1 files changed, 119 insertions, 110 deletions
diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java
index ecb13ef34..88de9ceb5 100644
--- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java
+++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java
@@ -24,62 +24,67 @@ package at.gv.egovernment.moa.id.commons.db;
import java.util.Properties;
-import org.apache.commons.lang3.StringUtils;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
-import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
-import org.hibernate.service.ServiceRegistry;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;
import at.gv.egovernment.moa.logging.Logger;
-public final class MOASessionDBUtils {
+@Transactional
+public class MOASessionDBUtils {
- private static SessionFactory sessionFactory;
- private static ServiceRegistry serviceRegistry;
-
- @SuppressWarnings("rawtypes")
- private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();
- private static boolean automaticSessionHandling = false;
- private static final String[] AUTOMATIC_SESSION_HANDLING_VALUES = new String[] { "jta", "thread" };
- private static final String SESSION_HANDLING_KEY = "hibernate.current_session_context_class";
+ private SessionFactory sessionFactory;
+// private static ServiceRegistry serviceRegistry;
- protected MOASessionDBUtils() { }
+// @SuppressWarnings("rawtypes")
+// private static final ThreadLocal THREAD_LOCAL = new ThreadLocal();
+// private static boolean automaticSessionHandling = false;
+
+// private static final String[] AUTOMATIC_SESSION_HANDLING_VALUES = new String[] { "jta", "thread" };
+// private static final String SESSION_HANDLING_KEY = "hibernate.current_session_context_class";
+ @Autowired
+ public void setSessionFactory(SessionFactory sessionFactory) {
+ this.sessionFactory = sessionFactory;
+ }
- public static void initHibernate(Configuration config, Properties hibernateProperties) {
-
- String scm = StringUtils.trimToNull(hibernateProperties.getProperty(SESSION_HANDLING_KEY));
- if (scm != null) {
- automaticSessionHandling = scm.indexOf(AUTOMATIC_SESSION_HANDLING_VALUES[0]) != -1 || scm.indexOf(AUTOMATIC_SESSION_HANDLING_VALUES[1]) != -1;
- }
- Logger.debug("Evaluating hibernate property \"" + SESSION_HANDLING_KEY + "\".");
- if (automaticSessionHandling) {
- Logger.info("Hibernate is automatically handling session context management.");
- } else {
- Logger.info("Hibernate is NOT automatically handling session context management. Using build-in ThreadLocal session handling.");
- }
- try {
- //Create the SessionFactory
- Logger.debug("Creating initial MOASession session factory...");
-
- config.configure("hibernate_moasession.cfg.xml");
- //serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
-
- serviceRegistry = new StandardServiceRegistryBuilder().
- applySettings(config.getProperties()).build();
-
- sessionFactory = config.buildSessionFactory(serviceRegistry);
- Logger.debug("Initial MOASession session factory successfully created.");
-
- } catch (Throwable ex) {
- Logger.error("Initial MOASession session factory creation failed: " + ex.getMessage());
- throw new ExceptionInInitializerError(ex);
- }
- }
+ public void initHibernate(Configuration config, Properties hibernateProperties) {
+//
+// String scm = StringUtils.trimToNull(hibernateProperties.getProperty(SESSION_HANDLING_KEY));
+// if (scm != null) {
+// automaticSessionHandling = scm.indexOf(AUTOMATIC_SESSION_HANDLING_VALUES[0]) != -1 || scm.indexOf(AUTOMATIC_SESSION_HANDLING_VALUES[1]) != -1;
+// }
+// Logger.debug("Evaluating hibernate property \"" + SESSION_HANDLING_KEY + "\".");
+// if (automaticSessionHandling) {
+// Logger.info("Hibernate is automatically handling session context management.");
+// } else {
+// Logger.info("Hibernate is NOT automatically handling session context management. Using build-in ThreadLocal session handling.");
+// }
+// try {
+// //Create the SessionFactory
+// Logger.debug("Creating initial MOASession session factory...");
+//
+// config.configure("hibernate_moasession.cfg.xml");
+// //serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
+//
+// // serviceRegistry = new StandardServiceRegistryBuilder().
+// // applySettings(config.getProperties()).build();
+//
+// //dbSessionSessionFactory = config.buildSessionFactory(serviceRegistry);
+//
+// Logger.debug("Initial MOASession session factory successfully created.");
+//
+// } catch (Throwable ex) {
+// Logger.error("Initial MOASession session factory creation failed: " + ex.getMessage());
+// throw new ExceptionInInitializerError(ex);
+// }
+ }
/**
* Checks if a session factory is currently available. If necessary a new
@@ -89,37 +94,39 @@ public final class MOASessionDBUtils {
* @throws HibernateException
* thrown if a hibernate error occurs
*/
- public static Session getCurrentSession() {
- if (automaticSessionHandling) {
- return sessionFactory.getCurrentSession();
- }
- Session session = (Session) THREAD_LOCAL.get();
- // Open a new Session, if this Thread has none yet
- if (session == null || !session.isConnected()) {
- session = getNewSession();
- }
- return session;
+ public Session getCurrentSession() {
+ return sessionFactory.getCurrentSession();
+// if (automaticSessionHandling) {
+// return dbSessionSessionFactory.getCurrentSession();
+// }
+// Session session = (Session) THREAD_LOCAL.get();
+// // Open a new Session, if this Thread has none yet
+// if (session == null || !session.isConnected()) {
+// session = getNewSession();
+// }
+// return session;
}
@SuppressWarnings("unchecked")
- public static Session getNewSession() {
- if (automaticSessionHandling) {
- Logger.warn("Session is being automatically handled by hibernate. Therefore this session maybe not being newly created. Use HibernateUtil.getCurrentSession() instead.");
- return sessionFactory.getCurrentSession();
- }
- Session session = (Session) THREAD_LOCAL.get();
- if (session != null) {
- Logger.warn("Previous MOASession session has not been closed; closing session now.");
- closeSession();
- }
- Logger.debug("Opening new MOASession hibernate session...");
- try {
- session = sessionFactory.openSession();
- THREAD_LOCAL.set(session);
- } catch (HibernateException hex) {
- Logger.error(hex.getMessage());
- }
- return session;
+ public Session getNewSession() {
+ return sessionFactory.getCurrentSession();
+// if (automaticSessionHandling) {
+// Logger.warn("Session is being automatically handled by hibernate. Therefore this session maybe not being newly created. Use HibernateUtil.getCurrentSession() instead.");
+// return dbSessionSessionFactory.getCurrentSession();
+// }
+// Session session = (Session) THREAD_LOCAL.get();
+// if (session != null) {
+// Logger.warn("Previous MOASession session has not been closed; closing session now.");
+// closeSession();
+// }
+// Logger.debug("Opening new MOASession hibernate session...");
+// try {
+// session = dbSessionSessionFactory.openSession();
+// THREAD_LOCAL.set(session);
+// } catch (HibernateException hex) {
+// Logger.error(hex.getMessage());
+// }
+// return session;
}
/**
@@ -130,61 +137,63 @@ public final class MOASessionDBUtils {
* occurs.
*/
@SuppressWarnings("unchecked")
- public static void closeSession() {
- if (automaticSessionHandling) {
- Logger.warn("Session is being automatically handled by hibernate. Therefore the current session cannot be closed on demand.");
- return;
- }
- Logger.debug("Closing current MOASession hibernate session...");
- Session session = (Session) THREAD_LOCAL.get();
- THREAD_LOCAL.set(null);
- if (session != null) {
- try {
- session.close();
-
- } catch (HibernateException hex) {
- Logger.error(hex.getMessage());
- }
- }
+ public void closeSession() {
+ return;
+// if (automaticSessionHandling) {
+// Logger.warn("Session is being automatically handled by hibernate. Therefore the current session cannot be closed on demand.");
+// return;
+// }
+// Logger.debug("Closing current MOASession hibernate session...");
+// Session session = (Session) THREAD_LOCAL.get();
+// THREAD_LOCAL.set(null);
+// if (session != null) {
+// try {
+// session.close();
+//
+// } catch (HibernateException hex) {
+// Logger.error(hex.getMessage());
+// }
+// }
}
- public static boolean saveOrUpdate(Object dbo) throws MOADatabaseException {
- Transaction tx = null;
+ public boolean saveOrUpdate(Object dbo) throws MOADatabaseException {
+ // Transaction tx = null;
try {
- Session session = MOASessionDBUtils.getCurrentSession();
-
- synchronized (session) {
- tx = session.beginTransaction();
- session.saveOrUpdate(dbo);
- tx.commit();
- }
- return true;
+ Session session = sessionFactory.getCurrentSession();
+ session.saveOrUpdate(dbo);
+ return true;
+//
+// synchronized (session) {
+// tx = session.beginTransaction();
+// session.saveOrUpdate(dbo);
+// tx.commit();
+// }
+// return true;
} catch(HibernateException e) {
Logger.warn("Error during MOASession database saveOrUpdate. Rollback.", e);
- if (tx != null)
- tx.rollback();
+
throw new MOADatabaseException(e);
}
}
- public static boolean delete(Object dbo) {
- Transaction tx = null;
+ public boolean delete(Object dbo) {
+ //Transaction tx = null;
try {
- Session session = MOASessionDBUtils.getCurrentSession();
-
- synchronized (session) {
- tx = session.beginTransaction();
- session.delete(dbo);
- tx.commit();
- }
+ Session session = sessionFactory.getCurrentSession();
+ session.delete(dbo);
+// synchronized (session) {
+// tx = session.beginTransaction();
+// session.delete(dbo);
+// tx.commit();
+// }
return true;
} catch(HibernateException e) {
Logger.warn("Error during MOASession database delete. Rollback.", e);
- if (tx != null)
- tx.rollback();
+// if (tx != null)
+// tx.rollback();
return false;
}
}