diff options
| author | Christian Maierhofer <cmaierhofer@iaik.tugraz.at> | 2016-04-28 13:35:55 +0200 | 
|---|---|---|
| committer | Christian Maierhofer <cmaierhofer@iaik.tugraz.at> | 2016-04-28 13:35:55 +0200 | 
| commit | 61661f2ea4978d56691f7a672469c6d43e9dba41 (patch) | |
| tree | 2ea7048bfffa662ee6b2d04858f00fb1cb6a2fea /id/server/moa-id-commons/src/main/java/at | |
| parent | 6f353de9f09b26440f67f62ba8186ae82f16adb5 (diff) | |
| download | moa-id-spss-61661f2ea4978d56691f7a672469c6d43e9dba41.tar.gz moa-id-spss-61661f2ea4978d56691f7a672469c6d43e9dba41.tar.bz2 moa-id-spss-61661f2ea4978d56691f7a672469c6d43e9dba41.zip | |
Modifiing MOASessionDBUtils
Diffstat (limited to 'id/server/moa-id-commons/src/main/java/at')
| -rw-r--r-- | id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/MOASessionDBUtils.java | 229 | 
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;  	  	 }  	   } | 
