You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by do...@apache.org on 2007/10/18 05:11:44 UTC

svn commit: r585813 - in /ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction: JNDIFactory.java TransactionUtil.java

Author: doogie
Date: Wed Oct 17 20:11:44 2007
New Revision: 585813

URL: http://svn.apache.org/viewvc?rev=585813&view=rev
Log:
Java 1.5 markup for entity transaction classes.

Modified:
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/JNDIFactory.java
    ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/JNDIFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/JNDIFactory.java?rev=585813&r1=585812&r2=585813&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/JNDIFactory.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/JNDIFactory.java Wed Oct 17 20:11:44 2007
@@ -21,7 +21,6 @@
 
 import java.sql.Connection;
 import java.sql.SQLException;
-import java.util.HashMap;
 import java.util.Map;
 
 import javax.naming.InitialContext;
@@ -32,6 +31,8 @@
 import javax.transaction.TransactionManager;
 import javax.transaction.UserTransaction;
 
+import javolution.util.FastMap;
+
 import org.ofbiz.base.config.GenericConfigException;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
@@ -54,7 +55,7 @@
     static UserTransaction userTransaction = null;
 
     // protected static UtilCache dsCache = new UtilCache("entity.JndiDataSources", 0, 0);
-    protected static Map dsCache = new HashMap();
+    protected static Map<String, DataSource> dsCache = FastMap.newInstance();
 
     public TransactionManager getTransactionManager() {
         if (transactionManager == null) {
@@ -156,7 +157,7 @@
     
     public static Connection getJndiConnection(String jndiName, String jndiServerName) throws SQLException, GenericEntityException {
         // if (Debug.verboseOn()) Debug.logVerbose("Trying JNDI name " + jndiName, module);
-        Object ds;
+        DataSource ds;
 
         ds = dsCache.get(jndiName);
         if (ds != null) {
@@ -165,9 +166,7 @@
 
                 return TransactionUtil.enlistConnection(xads.getXAConnection());
             } else {
-                DataSource nds = (DataSource) ds;
-
-                return nds.getConnection();
+                return ds.getConnection();
             }
         }
 
@@ -180,9 +179,7 @@
 
                     return TransactionUtil.enlistConnection(xads.getXAConnection());
                 } else {
-                    DataSource nds = (DataSource) ds;
-
-                    return nds.getConnection();
+                    return ds.getConnection();
                 }
             }
 
@@ -191,7 +188,7 @@
                 InitialContext ic = JNDIContextFactory.getInitialContext(jndiServerName);
 
                 if (ic != null) {
-                    ds = ic.lookup(jndiName);
+                    ds = (DataSource) ic.lookup(jndiName);
                 } else {
                     Debug.logWarning("Initial Context returned was NULL for server name " + jndiServerName, module);
                 }
@@ -209,9 +206,8 @@
                         con = TransactionUtil.enlistConnection(xac);
                     } else {
                         if (Debug.infoOn()) Debug.logInfo("Got DataSource for name " + jndiName, module);
-                        DataSource nds = (DataSource) ds;
 
-                        con = nds.getConnection();
+                        con = ds.getConnection();
                     }
 
                     /* NOTE: This code causes problems because settting the transaction isolation level after a transaction has started is a no-no

Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java?rev=585813&r1=585812&r2=585813&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/transaction/TransactionUtil.java Wed Oct 17 20:11:44 2007
@@ -23,6 +23,7 @@
 import java.sql.Timestamp;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -30,10 +31,12 @@
 import javax.transaction.*;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
 
 import org.apache.commons.collections.map.ListOrderedMap;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilDateTime;
+import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilValidate;
 
 /**
@@ -43,7 +46,7 @@
 public class TransactionUtil implements Status {
     // Debug module name
     public static final String module = TransactionUtil.class.getName();
-    public static Map debugResMap = new HashMap();
+    public static Map<Xid, DebugXaResource> debugResMap = new HashMap<Xid, DebugXaResource>();
     public static boolean debugResources = true;
 
     /** Begins a transaction in the current thread IF transactions are available; only
@@ -455,10 +458,7 @@
     public static void logRunningTx() {
         if (debugResources) {
             if (debugResMap != null && debugResMap.size() > 0) {
-                Iterator i = debugResMap.keySet().iterator();
-                while (i.hasNext()) {
-                    Object o = i.next();
-                    DebugXaResource dxa = (DebugXaResource) debugResMap.get(o);
+                for (DebugXaResource dxa: debugResMap.values()) {
                     dxa.log();
                 }
             }
@@ -489,7 +489,7 @@
 
     // =======================================
     // =======================================
-    private static ThreadLocal suspendedTxStack = new ThreadLocal();
+    private static ThreadLocal<List<Transaction>> suspendedTxStack = new ThreadLocal<List<Transaction>>();
 
     /** BE VERY CARFUL WHERE YOU CALL THIS!! */
     public static int cleanSuspendedTransactions() throws GenericTransactionException {
@@ -505,7 +505,7 @@
         return num;
     }
     public static boolean suspendedTransactionsHeld() {
-        List tl = (List) suspendedTxStack.get();
+        List<Transaction> tl = suspendedTxStack.get();
         if (tl != null && tl.size() > 0) {
             return true;
         } else {
@@ -513,9 +513,9 @@
         }
     }
     protected static void pushSuspendedTransaction(Transaction t) {
-        List tl = (List) suspendedTxStack.get();
+        List<Transaction> tl = suspendedTxStack.get();
         if (tl == null) {
-            tl = new LinkedList();
+            tl = new LinkedList<Transaction>();
             suspendedTxStack.set(tl);
         }
         tl.add(0, t);
@@ -523,17 +523,17 @@
         pushTransactionStartStamp(t);
     }
     protected static Transaction popSuspendedTransaction() {
-        List tl = (List) suspendedTxStack.get();
+        List<Transaction> tl = suspendedTxStack.get();
         if (tl != null && tl.size() > 0) {
             // restore the transaction start stamp
             popTransactionStartStamp();
-            return (Transaction) tl.remove(0);
+            return tl.remove(0);
         } else {
             return null;
         }
     }
     protected static void removeSuspendedTransaction(Transaction t) {
-        List tl = (List) suspendedTxStack.get();
+        List<Transaction> tl = suspendedTxStack.get();
         if (tl != null && tl.size() > 0) {
             tl.remove(t);
             popTransactionStartStamp(t);
@@ -542,21 +542,21 @@
 
     // =======================================
     // =======================================
-    private static ThreadLocal transactionBeginStack = new ThreadLocal();
-    private static ThreadLocal transactionBeginStackSave = new ThreadLocal();
+    private static ThreadLocal<Exception> transactionBeginStack = new ThreadLocal<Exception>();
+    private static ThreadLocal<List<Exception>> transactionBeginStackSave = new ThreadLocal<List<Exception>>();
 
     private static void pushTransactionBeginStackSave(Exception e) {
-        List el = (List) transactionBeginStackSave.get();
+        List<Exception> el = transactionBeginStackSave.get();
         if (el == null) {
-            el = new LinkedList();
+            el = new LinkedList<Exception>();
             transactionBeginStackSave.set(el);
         }
         el.add(0, e);
     }
     private static Exception popTransactionBeginStackSave() {
-        List el = (List) transactionBeginStackSave.get();
+        List<Exception> el = transactionBeginStackSave.get();
         if (el != null && el.size() > 0) {
-            return (Exception) el.remove(0);
+            return el.remove(0);
         } else {
             return null;
         }
@@ -568,7 +568,7 @@
     }
     private static void setTransactionBeginStack(Exception newExc) {
         if (transactionBeginStack.get() != null) {
-            Exception e = (Exception) transactionBeginStack.get();
+            Exception e = transactionBeginStack.get();
             Debug.logWarning(e, "WARNING: In setTransactionBeginStack a stack placeholder was already in place, here is where the transaction began: ", module);
             Exception e2 = new Exception("Current Stack Trace");
             Debug.logWarning(e2, "WARNING: In setTransactionBeginStack a stack placeholder was already in place, here is the current location: ", module);
@@ -576,7 +576,7 @@
         transactionBeginStack.set(newExc);
     }
     private static Exception clearTransactionBeginStack() {
-        Exception e = (Exception) transactionBeginStack.get();
+        Exception e = transactionBeginStack.get();
         if (e == null) {
             Exception e2 = new Exception("Current Stack Trace");
             Debug.logWarning(e2, "WARNING: In clearTransactionBeginStack no stack placeholder was in place, here is the current location: ", module);
@@ -587,7 +587,7 @@
         }
     }
     public static Exception getTransactionBeginStack() {
-        Exception e = (Exception) transactionBeginStack.get();
+        Exception e = transactionBeginStack.get();
         if (e == null) {
             Exception e2 = new Exception("Current Stack Trace");
             Debug.logWarning(e2, "WARNING: In getTransactionBeginStack no stack placeholder was in place, here is the current location: ", module);
@@ -610,21 +610,21 @@
         public boolean isEmpty() { return (UtilValidate.isEmpty(this.getCauseMessage()) && this.getCauseThrowable() == null); }
     }
     
-    private static ThreadLocal setRollbackOnlyCause = new ThreadLocal();
-    private static ThreadLocal setRollbackOnlyCauseSave = new ThreadLocal();
+    private static ThreadLocal<RollbackOnlyCause> setRollbackOnlyCause = new ThreadLocal<RollbackOnlyCause>();
+    private static ThreadLocal<List<RollbackOnlyCause>> setRollbackOnlyCauseSave = new ThreadLocal<List<RollbackOnlyCause>>();
 
     private static void pushSetRollbackOnlyCauseSave(RollbackOnlyCause e) {
-        List el = (List) setRollbackOnlyCauseSave.get();
+        List<RollbackOnlyCause> el = setRollbackOnlyCauseSave.get();
         if (el == null) {
-            el = new LinkedList();
+            el = new LinkedList<RollbackOnlyCause>();
             setRollbackOnlyCauseSave.set(el);
         }
         el.add(0, e);
     }
     private static RollbackOnlyCause popSetRollbackOnlyCauseSave() {
-        List el = (List) setRollbackOnlyCauseSave.get();
+        List<RollbackOnlyCause> el = setRollbackOnlyCauseSave.get();
         if (el != null && el.size() > 0) {
-            return (RollbackOnlyCause) el.remove(0);
+            return el.remove(0);
         } else {
             return null;
         }
@@ -636,7 +636,7 @@
     }
     private static void setSetRollbackOnlyCause(RollbackOnlyCause newRoc) {
         if (setRollbackOnlyCause.get() != null) {
-            RollbackOnlyCause roc = (RollbackOnlyCause) setRollbackOnlyCause.get();
+            RollbackOnlyCause roc = setRollbackOnlyCause.get();
             roc.logError("WARNING: In setSetRollbackOnlyCause a stack placeholder was already in place, here is the original rollbackOnly cause: ");
             Exception e2 = new Exception("Current Stack Trace");
             Debug.logWarning(e2, "WARNING: In setSetRollbackOnlyCause a stack placeholder was already in place, here is the current location: ", module);
@@ -644,7 +644,7 @@
         setRollbackOnlyCause.set(newRoc);
     }
     private static RollbackOnlyCause clearSetRollbackOnlyCause() {
-        RollbackOnlyCause roc = (RollbackOnlyCause) setRollbackOnlyCause.get();
+        RollbackOnlyCause roc = setRollbackOnlyCause.get();
         if (roc == null) {
             /* this is an obnoxious message, leaving out for now; could be added manually if a problem with this is suspected
             if (Debug.verboseOn()) {
@@ -663,7 +663,7 @@
             Exception e = new Exception("Current Stack Trace");
             Debug.logWarning(e, "WARNING: In getSetRollbackOnlyCause no stack placeholder was in place, here is the current location: ", module);
         }
-        return (RollbackOnlyCause) setRollbackOnlyCause.get();
+        return setRollbackOnlyCause.get();
     }
 
     // =======================================
@@ -672,9 +672,9 @@
     /**
      * Maintain the suspended transactions together with their timestamps
      */
-    private static ThreadLocal suspendedTxStartStamps = new ThreadLocal() {
-        public Object initialValue() {
-            return new ListOrderedMap();
+    private static ThreadLocal<Map<Transaction, Timestamp>> suspendedTxStartStamps = new ThreadLocal<Map<Transaction, Timestamp>>() {
+        public Map<Transaction, Timestamp> initialValue() {
+            return UtilGenerics.checkMap(new ListOrderedMap());
         }
     };
     
@@ -683,8 +683,8 @@
     * @param t transaction just suspended
     */
     private static void pushTransactionStartStamp(Transaction t) {
-        Map map = (Map) suspendedTxStartStamps.get();
-        Timestamp stamp = (Timestamp) transactionStartStamp.get();
+        Map<Transaction, Timestamp> map = suspendedTxStartStamps.get();
+        Timestamp stamp = transactionStartStamp.get();
         if (stamp != null) {
             map.put(t, stamp);
         } else {
@@ -697,7 +697,7 @@
     * Method called when the suspended stack gets cleaned by {@link #cleanSuspendedTransactions()}.
     */
     private static void clearTransactionStartStampStack() {
-        ((Map) suspendedTxStartStamps.get()).clear();
+        suspendedTxStartStamps.get().clear();
     }
 
     /**
@@ -706,9 +706,9 @@
     * @param t transaction just resumed
     */
     private static void popTransactionStartStamp(Transaction t) {
-        Map map = (Map) suspendedTxStartStamps.get();
+        Map<Transaction, Timestamp> map = suspendedTxStartStamps.get();
         if (map.size() > 0) {
-            Timestamp stamp = (Timestamp) map.remove(t);
+            Timestamp stamp = map.remove(t);
             if (stamp != null) {
                 transactionStartStamp.set(stamp);
             } else {
@@ -724,18 +724,18 @@
     private static void popTransactionStartStamp() {
         ListOrderedMap map = (ListOrderedMap) suspendedTxStartStamps.get();
         if (map.size() > 0) {
-            transactionStartStamp.set(map.remove(map.lastKey()));
+            transactionStartStamp.set((Timestamp) map.remove(map.lastKey()));
         } else {
             Debug.logError("Error in transaction handling - no saved start stamp found - using NOW.", module);
             transactionStartStamp.set(UtilDateTime.nowTimestamp());
         }
     }
 
-    private static ThreadLocal transactionStartStamp = new ThreadLocal();
-    private static ThreadLocal transactionLastNowStamp = new ThreadLocal();
+    private static ThreadLocal<Timestamp> transactionStartStamp = new ThreadLocal<Timestamp>();
+    private static ThreadLocal<Timestamp> transactionLastNowStamp = new ThreadLocal<Timestamp>();
 
     public static Timestamp getTransactionStartStamp() {
-        Timestamp curStamp = (Timestamp) transactionStartStamp.get();
+        Timestamp curStamp = transactionStartStamp.get();
         if (curStamp == null) {
             curStamp = UtilDateTime.nowTimestamp();
             transactionStartStamp.set(curStamp);
@@ -751,7 +751,7 @@
     }
 
     public static Timestamp getTransactionUniqueNowStamp() {
-        Timestamp lastNowStamp = (Timestamp) transactionLastNowStamp.get();
+        Timestamp lastNowStamp = transactionLastNowStamp.get();
         Timestamp nowTimestamp = UtilDateTime.nowTimestamp();
 
         // check for an overlap with the lastNowStamp, or if the lastNowStamp is in the future because of incrementing to make each stamp unique