[Mulgara-svn] r574 - branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver

andrae at mulgara.org andrae at mulgara.org
Wed Nov 21 11:20:05 UTC 2007


Author: andrae
Date: 2007-11-21 05:20:05 -0600 (Wed, 21 Nov 2007)
New Revision: 574

Modified:
   branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java
Log:
Minor cleanups and the ability to check if a session holds the write-lock.



Modified: branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java
===================================================================
--- branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java	2007-11-21 11:18:53 UTC (rev 573)
+++ branches/mgr-73/src/jar/resolver/java/org/mulgara/resolver/MulgaraTransactionManager.java	2007-11-21 11:20:05 UTC (rev 574)
@@ -22,13 +22,8 @@
 package org.mulgara.resolver;
 
 // Java2 packages
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.ReentrantLock;
-import javax.transaction.SystemException;
 
 // Third party packages
 import org.apache.log4j.Logger;
@@ -88,10 +83,8 @@
     this.mutex = new ReentrantLock();
     this.writeLockCondition = this.mutex.newCondition();
 
-    this.internalFactory = new MulgaraInternalTransactionFactory(this, transactionManagerFactory)
-    this.externalFactory = new MulgaraExternalTransactionFactory(this)
-
-    this.managers = new HashMap<DatabaseSession, MulgaraXAManager>
+    this.internalFactory = new MulgaraInternalTransactionFactory(this, transactionManagerFactory);
+    this.externalFactory = new MulgaraExternalTransactionFactory(this);
   }
 
 
@@ -128,8 +121,17 @@
     }
   }
 
+  boolean isHoldingWriteLock(DatabaseSession session) {
+    acquireMutex();
+    try {
+      return sessionHoldingWriteLock == session;
+    } finally {
+      releaseMutex();
+    }
+  }
 
-  void releaseWriteLock(DatabaseSession session) MulgaraTransactionException {
+
+  void releaseWriteLock(DatabaseSession session) throws MulgaraTransactionException {
     acquireMutex();
     try {
       if (sessionHoldingWriteLock == null) {
@@ -140,17 +142,14 @@
       }
       sessionHoldingWriteLock = null;
       writeLockCondition.signal();
+    } finally {
+      releaseMutex();
     }
   }
 
 
   public void setTransactionTimeout(int transactionTimeout) {
-    try {
-      internalFactory.setTransactionTimeout(transactionTimeout);
-      externalFactory.setTransactionTimeout(transactionTimeout);
-    } catch (SystemException es) {
-      logger.warn("Unable to set transaction timeout: " + transactionTimeout, es);
-    }
+    internalFactory.setTransactionTimeout(transactionTimeout);
   }
 
   /**
@@ -213,11 +212,6 @@
       throw new IllegalStateException("Attempt to release mutex without holding mutex");
     }
 
-    if (mutex.getHoldCount() == 1 && Thread.currentThread().equals(reservingThread)) {
-      reservingThread = null;
-      reserveCondition.signal();
-    }
-
     mutex.unlock();
   }
 }




More information about the Mulgara-svn mailing list