Skip to content
Snippets Groups Projects
Commit 5bef24fc authored by brinn's avatar brinn
Browse files

Make the transaction manager set the EoDSQL managed transaction.

SVN: 27566
parent fec3b273
No related branches found
No related tags found
No related merge requests found
...@@ -20,9 +20,12 @@ import java.lang.reflect.InvocationTargetException; ...@@ -20,9 +20,12 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.WeakHashMap; import java.util.WeakHashMap;
import net.lemnik.eodsql.QueryTool;
import org.hibernate.Interceptor; import org.hibernate.Interceptor;
import org.hibernate.Transaction; import org.hibernate.Transaction;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.jdbc.datasource.JdbcTransactionObjectSupport;
import org.springframework.orm.hibernate3.HibernateTransactionManager; import org.springframework.orm.hibernate3.HibernateTransactionManager;
import org.springframework.orm.hibernate3.SessionHolder; import org.springframework.orm.hibernate3.SessionHolder;
import org.springframework.transaction.support.DefaultTransactionStatus; import org.springframework.transaction.support.DefaultTransactionStatus;
...@@ -32,8 +35,12 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory; ...@@ -32,8 +35,12 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder;
/** /**
* The implementation of {@link HibernateTransactionManager}, that creates a new * An implementation of {@link HibernateTransactionManager} that:
* EntityValidationInterceptor for each hibernate session. * <ul>
* <li>creates a new EntityValidationInterceptor for each hibernate session,</li>
* <li>injects (and clears) the connection of the current transaction as default managed database
* connection into EoDSQL.</li> </li>
* </ul>
* *
* @author Jakub Straszewski * @author Jakub Straszewski
*/ */
...@@ -61,9 +68,23 @@ public class OpenBISHibernateTransactionManager extends HibernateTransactionMana ...@@ -61,9 +68,23 @@ public class OpenBISHibernateTransactionManager extends HibernateTransactionMana
WeakHashMap<Transaction, String> rolledBackTransactions = WeakHashMap<Transaction, String> rolledBackTransactions =
new WeakHashMap<Transaction, String>(); new WeakHashMap<Transaction, String>();
@Override
protected Object doGetTransaction()
{
final JdbcTransactionObjectSupport transaction =
(JdbcTransactionObjectSupport) super.doGetTransaction();
if (isExistingTransaction(transaction) == false && transaction.hasConnectionHolder())
{
QueryTool.setManagedDatabaseConnection(transaction.getConnectionHolder()
.getConnection());
}
return transaction;
}
@Override @Override
public void rollbackTransaction(Transaction tx, String reason) public void rollbackTransaction(Transaction tx, String reason)
{ {
QueryTool.clearManagedDatabaseConnection();
tx.rollback(); tx.rollback();
rolledBackTransactions.put(tx, reason); rolledBackTransactions.put(tx, reason);
} }
...@@ -81,6 +102,7 @@ public class OpenBISHibernateTransactionManager extends HibernateTransactionMana ...@@ -81,6 +102,7 @@ public class OpenBISHibernateTransactionManager extends HibernateTransactionMana
@Override @Override
protected void doCommit(DefaultTransactionStatus status) protected void doCommit(DefaultTransactionStatus status)
{ {
QueryTool.clearManagedDatabaseConnection();
Transaction tx = null; Transaction tx = null;
try try
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment