|
From: <hib...@li...> - 2006-03-27 15:49:19
|
Author: epbernard
Date: 2006-03-27 10:48:23 -0500 (Mon, 27 Mar 2006)
New Revision: 9685
Modified:
trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/AbstractEntityManagerImpl.java
trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/transaction/JoinableCMTTransaction.java
Log:
Fix some nasty bugs regarding transaction joining and postponned closing
Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/AbstractEntityManagerImpl.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/AbstractEntityManagerImpl.java 2006-03-27 08:51:36 UTC (rev 9684)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/AbstractEntityManagerImpl.java 2006-03-27 15:48:23 UTC (rev 9685)
@@ -446,7 +446,7 @@
boolean flush = false;
TransactionFactory.Context ctx = null;
try {
- ctx = (TransactionFactory.Context) getSession();
+ ctx = (TransactionFactory.Context) session;
JoinableCMTTransaction joinable = (JoinableCMTTransaction) session.getTransaction();
flush = !ctx.isFlushModeNever() &&
//ctx.isFlushBeforeCompletionEnabled() &&
Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/transaction/JoinableCMTTransaction.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/transaction/JoinableCMTTransaction.java 2006-03-27 08:51:36 UTC (rev 9684)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/transaction/JoinableCMTTransaction.java 2006-03-27 15:48:23 UTC (rev 9685)
@@ -20,14 +20,25 @@
private JoinStatus status;
public JoinableCMTTransaction( JDBCContext jdbcContext, TransactionFactory.Context transactionContext ) {
super( jdbcContext, transactionContext );
- status = JoinStatus.MARKED_FOR_JOINED;
- tryJoiningTransaction();
+ //status = JoinStatus.MARKED_FOR_JOINED;
+ //tryJoiningTransaction();
}
public boolean isTransactionInProgress(
JDBCContext jdbcContext,
TransactionFactory.Context transactionContext) {
try {
+ return status == JoinStatus.JOINED && JTAHelper.isTransactionInProgress(
+ transactionContext.getFactory().getTransactionManager().getTransaction()
+ );
+ }
+ catch( SystemException se ) {
+ throw new TransactionException( "Unable to check transaction status", se );
+ }
+ }
+
+ private boolean isTransactionInProgress() {
+ try {
return JTAHelper.isTransactionInProgress(
transactionContext.getFactory().getTransactionManager().getTransaction()
);
@@ -39,7 +50,7 @@
void tryJoiningTransaction() {
if (status == JoinStatus.MARKED_FOR_JOINED) {
- if ( isTransactionInProgress(jdbcContext, transactionContext) ) {
+ if ( isTransactionInProgress() ) {
status = JoinStatus.JOINED;
}
else {
|