You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by al...@apache.org on 2009/10/12 18:17:35 UTC

svn commit: r824406 - in /openjpa/trunk: openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java

Author: allee8285
Date: Mon Oct 12 16:17:34 2009
New Revision: 824406

URL: http://svn.apache.org/viewvc?rev=824406&view=rev
Log:
OPENJPA-1344 Add checks for needed exception conditions.

Modified:
    openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java
    openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java

Modified: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java?rev=824406&r1=824405&r2=824406&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java (original)
+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestEmLockMode.java Mon Oct 12 16:17:34 2009
@@ -20,6 +20,7 @@
 
 import javax.persistence.EntityManager;
 import javax.persistence.LockModeType;
+import javax.persistence.TransactionRequiredException;
 
 import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
 import org.apache.openjpa.jdbc.kernel.JDBCFetchConfigurationImpl;
@@ -261,4 +262,52 @@
 
         assertEquals(beforeIsolation, fConfig.getIsolation());
     }
+
+    /*
+     * Test em.getLockMode();
+     */
+    public void testGetLockMode() {
+        EntityManager em = emf.createEntityManager();
+
+        LockEmployee employee = em.find(LockEmployee.class, 1);
+        try {
+            em.getLockMode(employee);
+            fail("Expecting TransactionRequiredException.");
+        } catch (TransactionRequiredException tre) {
+        } catch (Exception e){
+            fail("Expecting TransactionRequiredException.");
+        }
+
+        em.getTransaction().begin();
+        try {
+            assertEquals("getLockMode only allows in transaction.",LockModeType.NONE, em.getLockMode(employee));
+        } catch (Exception e){
+            fail("Do not expecting any exception.");
+        }        
+        em.getTransaction().rollback();
+
+        em.clear();
+        em.getTransaction().begin();
+        try {
+            // getLockMode on a detached entity;
+            em.getLockMode(employee);
+            fail("Expecting IllegalArgumentException for getLockMode on a detached entity in an active transaction.");
+        } catch (IllegalArgumentException iae) {
+        } catch (Exception e){
+            fail("Expecting IllegalArgumentException for getLockMode on a detached entity in an active transaction.");
+        }        
+        em.getTransaction().rollback();
+
+        em.getTransaction().begin();
+        try {
+            employee = em.find(LockEmployee.class, 1, LockModeType.PESSIMISTIC_WRITE);
+            assertEquals("Test getLockMode on non-NONE lock mode type.", LockModeType.PESSIMISTIC_WRITE, em
+                    .getLockMode(employee));
+        } catch (Exception e){
+            fail("Do not expecting any exception.");
+        }        
+        em.getTransaction().rollback();
+
+        em.close();
+    }
 }

Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java?rev=824406&r1=824405&r2=824406&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java Mon Oct 12 16:17:34 2009
@@ -1124,6 +1124,8 @@
 
     public LockModeType getLockMode(Object entity) {
         assertNotCloseInvoked();
+        _broker.assertActiveTransaction();
+        assertValidAttchedEntity(entity);
         return MixedLockLevelsHelper.fromLockLevel(
             _broker.getLockLevel(entity));
     }