Author: mikedd
Date: Sat Aug 20 19:02:08 2011
New Revision: 1159899

URL: http://svn.apache.org/viewvc?rev=1159899&view=rev
Log:
Update TestNamedQueryLockMode to handle DB2 lock clauses

Modified:
    
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java

Modified: 
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
URL: 
http://svn.apache.org/viewvc/openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java?rev=1159899&r1=1159898&r2=1159899&view=diff
==============================================================================
--- 
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
 (original)
+++ 
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
 Sat Aug 20 19:02:08 2011
@@ -22,6 +22,7 @@ import javax.persistence.EntityManager;
 import javax.persistence.LockModeType;
 import javax.persistence.Query;
 
+import org.apache.openjpa.jdbc.sql.DB2Dictionary;
 import org.apache.openjpa.persistence.FetchPlan;
 import org.apache.openjpa.persistence.OpenJPAEntityManager;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
@@ -44,12 +45,12 @@ public class TestNamedQueryLockMode exte
             "openjpa.LockManager", "pessimistic", 
             "openjpa.Optimistic", "false"
             );
-        lockClause = getForUpdateClause();
     }
 
     public void testForUpdateClausePresentInNamedQueryWithLockMode() {
         EntityManager em = emf.createEntityManager();
         em.getTransaction().begin();
+        lockClause = getForUpdateClause();
         assertClausePresentInSQL(lockClause, 
em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0));
         em.getTransaction().rollback();
         em.getTransaction().begin();
@@ -75,15 +76,26 @@ public class TestNamedQueryLockMode exte
     public void testForUpdateClausePresentInQueryWithDefault() {
         EntityManager em = emf.createEntityManager();
         em.getTransaction().begin();
-        assertClausePresentInSQL(lockClause, 
em.createNamedQuery("findEmployeeById").setParameter("id", 0));
-        assertClausePresentInSQL(lockClause, 
em.createNamedQuery("findEmployeeById").setParameter("id", 0));        
+        lockClause = getForUpdateClause();
+               if 
(!DB2Dictionary.class.isAssignableFrom(getDBDictionary().getClass())) {
+                       // Skip test because "for update" clause in DB2 depends 
on LockMode type (i.e. WITH RR/RS)
+                       // plus dict.forUpdateClause is not sensitive to this 
implementation.  
+            assertClausePresentInSQL(lockClause, 
em.createNamedQuery("findEmployeeById").setParameter("id", 0));
+            assertClausePresentInSQL(lockClause, 
em.createNamedQuery("findEmployeeById").setParameter("id", 0));
+        }
+        
+        OpenJPAEntityManager oem = (OpenJPAEntityManager)em;
+        OpenJPAQuery<?> q = 
oem.createNamedQuery("findEmployeeById").setParameter("id", 0); 
+        FetchPlan fp = q.getFetchPlan();
+        fp.setReadLockMode(LockModeType.NONE);
+
         em.getTransaction().commit();
     }
     
     public void testForUpdateClauseAbsentInQueryWithFetchPlanNoneLockMode() {
         OpenJPAEntityManagerSPI em = emf.createEntityManager();
-        em.getTransaction().begin();
-        
+        em.getTransaction().begin();        
+        lockClause = getForUpdateClause();
         OpenJPAQuery<?> q = 
em.createNamedQuery("findEmployeeById").setParameter("id", 0); 
         FetchPlan fp = q.getFetchPlan();
         fp.setReadLockMode(LockModeType.NONE);
@@ -101,6 +113,7 @@ public class TestNamedQueryLockMode exte
     public void testForUpdateClauseAbsentInQueryWithExplictNoLock() {
         EntityManager em = emf.createEntityManager();
         em.getTransaction().begin();
+        lockClause = getForUpdateClause();
         assertClauseAbsentInSQL(lockClause, 
em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
         assertClauseAbsentInSQL(lockClause, 
em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0));
         em.getTransaction().commit();


Reply via email to