You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2010/04/21 21:05:41 UTC

svn commit: r936445 - /openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java

Author: curtisr7
Date: Wed Apr 21 19:05:41 2010
New Revision: 936445

URL: http://svn.apache.org/viewvc?rev=936445&view=rev
Log:
OPENJPA-1638: Add new testcase.

Modified:
    openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java

Modified: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java?rev=936445&r1=936444&r2=936445&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java (original)
+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java Wed Apr 21 19:05:41 2010
@@ -19,8 +19,13 @@
 package org.apache.openjpa.persistence.lockmgr;
 
 import javax.persistence.EntityManager;
+import javax.persistence.LockModeType;
 import javax.persistence.Query;
 
+import org.apache.openjpa.persistence.FetchPlan;
+import org.apache.openjpa.persistence.OpenJPAEntityManager;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
+import org.apache.openjpa.persistence.OpenJPAQuery;
 import org.apache.openjpa.persistence.TransactionRequiredException;
 import org.apache.openjpa.persistence.test.AllowFailure;
 import org.apache.openjpa.persistence.test.SQLListenerTestCase;
@@ -57,8 +62,7 @@ public class TestNamedQueryLockMode exte
         EntityManager em = emf.createEntityManager();
         // execute without a transaction
          try {
-         em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id",
-         0).getResultList();
+         em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id", 0).getResultList();
          fail("Expected " + TransactionRequiredException.class.getName());
          } catch (TransactionRequiredException e) {
          // Expected
@@ -70,6 +74,29 @@ public class TestNamedQueryLockMode exte
         em.getTransaction().begin();
         assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeById").setParameter("id", 0));
         assertClausePresentInSQL("FOR UPDATE", 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();
+        
+        OpenJPAQuery<?> q = em.createNamedQuery("findEmployeeById").setParameter("id", 0); 
+        FetchPlan fp = q.getFetchPlan();
+        fp.setReadLockMode(LockModeType.NONE);
+        assertClauseAbsentInSQL("FOR UPDATE", q);
+        
+        q = em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0); 
+        fp = q.getFetchPlan();
+        fp.setReadLockMode(LockModeType.NONE);
+        assertClauseAbsentInSQL("FOR UPDATE", q);
+        
         em.getTransaction().commit();
     }