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));
}