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