openjpa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mik...@apache.org
Subject svn commit: r723854 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/ openjpa-persistence-jdbc/...
Date Fri, 05 Dec 2008 20:30:06 GMT
Author: mikedd
Date: Fri Dec  5 12:30:05 2008
New Revision: 723854

URL: http://svn.apache.org/viewvc?rev=723854&view=rev
Log:
OPENJPA-817 preserve order of statements with ConstraintUpdateManager merge to trunk

Added:
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Employee.java
      - copied unchanged from r723851, openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Employee.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Story.java
      - copied unchanged from r723851, openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Story.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Task.java
      - copied unchanged from r723851, openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/Task.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestInsertOrder.java
      - copied unchanged from r723851, openjpa/branches/1.2.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/kernel/TestInsertOrder.java
Modified:
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ConstraintUpdateManager.java
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowManagerImpl.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SQLListenerTestCase.java

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ConstraintUpdateManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ConstraintUpdateManager.java?rev=723854&r1=723853&r2=723854&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ConstraintUpdateManager.java
(original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/ConstraintUpdateManager.java
Fri Dec  5 12:30:05 2008
@@ -58,7 +58,7 @@
         (ConstraintUpdateManager.class);
 
     public boolean orderDirty() {
-        return false;
+        return true;
     }
 
     protected PreparedStatementManager newPreparedStatementManager

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowManagerImpl.java?rev=723854&r1=723853&r2=723854&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowManagerImpl.java
(original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/RowManagerImpl.java
Fri Dec  5 12:30:05 2008
@@ -22,7 +22,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -39,17 +39,17 @@
 public class RowManagerImpl
     implements RowManager {
 
-    private Map _inserts = null;
-    private Map _updates = null;
-    private Map _deletes = null;
-    private Collection _secondaryUpdates = null;
-    private Collection _secondaryDeletes = null;
-    private Collection _allRowUpdates = null;
-    private Collection _allRowDeletes = null;
+    private Map<Key, PrimaryRow> _inserts = null;
+    private Map<Key, PrimaryRow> _updates = null;
+    private Map<Key, PrimaryRow> _deletes = null;
+    private Collection<SecondaryRow> _secondaryUpdates = null;
+    private Collection<SecondaryRow> _secondaryDeletes = null;
+    private Collection<Row> _allRowUpdates = null;
+    private Collection<Row> _allRowDeletes = null;
 
     // we maintain a list of the order of all primary rows if the user
     // wants to be able to fetch them in order
-    private final List _primaryOrder;
+    private final List<PrimaryRow> _primaryOrder;
 
     // track whether we're dealing with any auto-inc columns
     private boolean _auto = false;
@@ -66,7 +66,7 @@
      * @param order whether to keep track of the order in which rows are added
      */
     public RowManagerImpl(boolean order) {
-        _primaryOrder = (order) ? new ArrayList() : null;
+        _primaryOrder = (order) ? new ArrayList<PrimaryRow>() : null;
     }
 
     /**
@@ -80,61 +80,98 @@
      * Return the ordered primary rows. Only available if ordering requested
      * on construction.
      */
-    public List getOrdered() {
-        return (_primaryOrder == null) ? Collections.EMPTY_LIST : _primaryOrder;
+    public List<PrimaryRow> getOrdered() {
+        if(_primaryOrder == null ) { 
+            return Collections.emptyList();
+        }
+        else { 
+            return _primaryOrder;
+        }
     }
 
     /**
      * Return all inserted primary rows.
      */
-    public Collection getInserts() {
-        return (_inserts == null) ? Collections.EMPTY_LIST : _inserts.values();
+    public Collection<PrimaryRow> getInserts() {
+        if(_inserts == null ) {
+            return Collections.emptyList();
+        }
+        else {
+            return _inserts.values();
+        }
     }
 
     /**
      * Return all updated primary rows.
      */
-    public Collection getUpdates() {
-        return (_updates == null) ? Collections.EMPTY_LIST : _updates.values();
+    public Collection<PrimaryRow> getUpdates() {
+        if(_updates == null ){ 
+            return Collections.emptyList();
+        }
+        else { 
+            return _updates.values();
+        }
     }
 
     /**
      * Return all deleted primary rows.
      */
-    public Collection getDeletes() {
-        return (_deletes == null) ? Collections.EMPTY_LIST : _deletes.values();
+    public Collection<PrimaryRow> getDeletes() {
+        if(_deletes == null) { 
+            return Collections.emptyList();
+        }
+        else {
+            return _deletes.values();
+        }
     }
 
     /**
      * Return all inserted and updated secondary rows.
      */
-    public Collection getSecondaryUpdates() {
-        return (_secondaryUpdates == null) ? Collections.EMPTY_LIST
-            : _secondaryUpdates;
+    public Collection<SecondaryRow> getSecondaryUpdates() {
+        if(_secondaryUpdates == null) { 
+            return Collections.emptyList();
+        }
+        else { 
+            return _secondaryUpdates;
+        }
     }
 
     /**
      * Return all deleted secondary rows.
      */
-    public Collection getSecondaryDeletes() {
-        return (_secondaryDeletes == null) ? Collections.EMPTY_LIST
-            : _secondaryDeletes;
+    public Collection<SecondaryRow> getSecondaryDeletes() {
+        if(_secondaryDeletes == null) { 
+            return Collections.emptyList();
+        }
+        else { 
+            return _secondaryDeletes;
+        }
     }
 
     /**
      * Return any 'all row' updates.
      */
-    public Collection getAllRowUpdates() {
-        return (_allRowUpdates == null) ? Collections.EMPTY_LIST
-            : _allRowUpdates;
+    public Collection<Row> getAllRowUpdates() {
+        if(_allRowUpdates == null) { 
+            return Collections.emptyList();
+        }
+        else { 
+            return _allRowUpdates;
+        }
     }
 
     /**
      * Return any 'all row' deletes.
      */
-    public Collection getAllRowDeletes() {
-        return (_allRowDeletes == null) ? Collections.EMPTY_LIST
-            : _allRowDeletes;
+    public Collection<Row> getAllRowDeletes() {
+        if(_allRowDeletes == null) { 
+            return Collections.emptyList();
+        }
+        else { 
+            return _allRowDeletes;
+        }
+        
     }
 
     public Row getSecondaryRow(Table table, int action) {
@@ -149,12 +186,12 @@
         SecondaryRow srow = (SecondaryRow) row;
         if (srow.getAction() == Row.ACTION_DELETE) {
             if (_secondaryDeletes == null)
-                _secondaryDeletes = new ArrayList();
-            _secondaryDeletes.add(srow.clone());
+                _secondaryDeletes = new ArrayList<SecondaryRow>();
+            _secondaryDeletes.add((SecondaryRow) srow.clone());
         } else {
             if (_secondaryUpdates == null)
-                _secondaryUpdates = new ArrayList();
-            _secondaryUpdates.add(srow.clone());
+                _secondaryUpdates = new ArrayList<SecondaryRow>();
+            _secondaryUpdates.add((SecondaryRow) srow.clone());
         }
     }
 
@@ -169,12 +206,12 @@
         switch (row.getAction()) {
             case Row.ACTION_UPDATE:
                 if (_allRowUpdates == null)
-                    _allRowUpdates = new ArrayList();
+                    _allRowUpdates = new ArrayList<Row>();
                 _allRowUpdates.add(row);
                 break;
             case Row.ACTION_DELETE:
                 if (_allRowDeletes == null)
-                    _allRowDeletes = new ArrayList();
+                    _allRowDeletes = new ArrayList<Row>();
                 _allRowDeletes.add(row);
                 break;
             default:
@@ -192,25 +229,25 @@
             && _row != null && _row.getAction() == action)
             return _row;
 
-        Map map;
+        Map<Key, PrimaryRow> map;
         if (action == Row.ACTION_DELETE) {
             if (_deletes == null && create)
-                _deletes = new HashMap();
+                _deletes = new LinkedHashMap<Key, PrimaryRow>();
             map = _deletes;
         } else if (action == Row.ACTION_INSERT) {
             if (_inserts == null && create)
-                _inserts = new HashMap();
+                _inserts = new LinkedHashMap<Key, PrimaryRow>();
             map = _inserts;
         } else {
             if (_updates == null && create)
-                _updates = new HashMap();
+                _updates = new LinkedHashMap<Key, PrimaryRow>();
             map = _updates;
         }
         if (map == null)
             return null;
 
         _key = new Key(table, sm);
-        _row = (PrimaryRow) map.get(_key);
+        _row = map.get(_key);
 
         if (_row == null && create) {
             _row = new PrimaryRow(table, action, sm);

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SQLListenerTestCase.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SQLListenerTestCase.java?rev=723854&r1=723853&r2=723854&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SQLListenerTestCase.java
(original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/test/SQLListenerTestCase.java
Fri Dec  5 12:30:05 2008
@@ -21,7 +21,6 @@
 import java.util.Arrays;
 import java.util.List;
 import java.util.ArrayList;
-import java.util.Map;
 
 import org.apache.openjpa.lib.jdbc.AbstractJDBCListener;
 import org.apache.openjpa.lib.jdbc.JDBCEvent;
@@ -34,7 +33,7 @@
  */
 public abstract class SQLListenerTestCase
     extends SingleEMFTestCase {
-
+    private static String _nl = System.getProperty("line.separator");
     protected List<String> sql = new ArrayList<String>();
     protected int sqlCount;
     
@@ -130,4 +129,28 @@
             }
 		}
 	}
+    
+    public void assertSQLOrder(String... expected) {
+        int hits = 0;
+
+        for (String executedSQL : sql) {
+            if (executedSQL.matches(expected[hits])) {
+                hits++;
+            }
+        }
+
+        if (hits != expected.length) {
+            StringBuilder sb = new StringBuilder();
+            sb.append("Did not find SQL in expected order : ").append(_nl);
+            for (String s : expected) {
+                sb.append(s).append(_nl);
+            }
+
+            sb.append("SQL Statements issued : ");
+            for (String s : sql) {
+                sb.append(s).append(_nl);
+            }
+            fail(sb.toString());
+        }
+    }
 }



Mime
View raw message