You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by jr...@apache.org on 2010/03/16 17:32:14 UTC
svn commit: r923849 - in /openjpa/trunk:
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/
openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/
openjpa-persistence/src/main/java/org/apache/openjp...
Author: jrbauer
Date: Tue Mar 16 16:32:14 2010
New Revision: 923849
URL: http://svn.apache.org/viewvc?rev=923849&view=rev
Log:
OPENJPA-1562 Committing code and test updates contributed by Dianne Richards. Refresh after remove was not throwing exception dictated by spec.
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java
openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestMixedLockManagerRefreshException.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/EntityManagerImpl.java
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java?rev=923849&r1=923848&r2=923849&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/simple/TestRefresh.java Tue Mar 16 16:32:14 2010
@@ -116,6 +116,23 @@ public class TestRefresh extends SingleE
assertEquals(mode, CacheStoreMode.USE);
}
+ public void testRefreshAfterRemove() {
+ try {
+ em.getTransaction().begin();
+ Item item = new Item();
+ item.setItemData("Test Data");
+ em.persist(item);
+ em.flush();
+ em.remove(item);
+ em.flush();
+ em.refresh(item);
+ em.getTransaction().commit();
+ fail("Did not catch expected IllegalArgumentException for refresh() of removed entity");
+ } catch (IllegalArgumentException e) {
+ // Expected exception
+ }
+ }
+
void assertCached(Class<?> cls, Object oid) {
assertTrue(cls + ":" + oid + " should be in L2 cache, but not", emf.getCache().contains(cls, oid));
Modified: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestMixedLockManagerRefreshException.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestMixedLockManagerRefreshException.java?rev=923849&r1=923848&r2=923849&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestMixedLockManagerRefreshException.java (original)
+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestMixedLockManagerRefreshException.java Tue Mar 16 16:32:14 2010
@@ -255,28 +255,28 @@ public class TestMixedLockManagerRefresh
{Act.Remove},
{Act.Refresh, 1, LockModeType.NONE },
- {Act.TestException},
+ {Act.TestException, 1, IllegalArgumentException.class },
{Act.Refresh, 1, LockModeType.READ },
- {Act.TestException},
+ {Act.TestException, 1, IllegalArgumentException.class },
{Act.Refresh, 1, LockModeType.WRITE },
- {Act.TestException},
+ {Act.TestException, 1, IllegalArgumentException.class },
{Act.Refresh, 1, LockModeType.OPTIMISTIC },
- {Act.TestException},
+ {Act.TestException, 1, IllegalArgumentException.class },
{Act.Refresh, 1, LockModeType.OPTIMISTIC_FORCE_INCREMENT },
- {Act.TestException},
+ {Act.TestException, 1, IllegalArgumentException.class },
{Act.Refresh, 1, LockModeType.PESSIMISTIC_READ },
- {Act.TestException},
+ {Act.TestException, 1, IllegalArgumentException.class },
{Act.Refresh, 1, LockModeType.PESSIMISTIC_WRITE },
- {Act.TestException},
+ {Act.TestException, 1, IllegalArgumentException.class },
{Act.Refresh, 1, LockModeType.PESSIMISTIC_FORCE_INCREMENT },
- {Act.TestException},
+ {Act.TestException, 1, IllegalArgumentException.class },
{Act.RollbackTx},
};
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=923849&r1=923848&r2=923849&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 Tue Mar 16 16:32:14 2010
@@ -101,6 +101,10 @@ public class EntityManagerImpl
private static final Localizer _loc = Localizer.forPackage(EntityManagerImpl.class);
private static final Object[] EMPTY_OBJECTS = new Object[0];
+
+ private static final String GET_LOCK_MODE = "getLockMode";
+ private static final String LOCK = "lock";
+ private static final String REFRESH = "refresh";
private DelegatingBroker _broker;
private EntityManagerFactoryImpl _emf;
@@ -742,7 +746,7 @@ public class EntityManagerImpl
public void refresh(Object entity, LockModeType mode, Map<String, Object> properties) {
assertNotCloseInvoked();
- assertValidAttchedEntity("refresh", entity);
+ assertValidAttchedEntity(REFRESH, entity);
_broker.assertWriteOperation();
configureCurrentFetchPlan(pushFetchPlan(), properties, mode, true);
@@ -1144,7 +1148,7 @@ public class EntityManagerImpl
public LockModeType getLockMode(Object entity) {
assertNotCloseInvoked();
_broker.assertActiveTransaction();
- assertValidAttchedEntity("getLockMode", entity);
+ assertValidAttchedEntity(GET_LOCK_MODE, entity);
return MixedLockLevelsHelper.fromLockLevel(
_broker.getLockLevel(entity));
}
@@ -1155,13 +1159,13 @@ public class EntityManagerImpl
public void lock(Object entity) {
assertNotCloseInvoked();
- assertValidAttchedEntity("lock", entity);
+ assertValidAttchedEntity(LOCK, entity);
_broker.lock(entity, this);
}
public void lock(Object entity, LockModeType mode, int timeout) {
assertNotCloseInvoked();
- assertValidAttchedEntity("lock", entity);
+ assertValidAttchedEntity(LOCK, entity);
configureCurrentFetchPlan(pushFetchPlan(), null, mode, false);
try {
@@ -1173,7 +1177,7 @@ public class EntityManagerImpl
public void lock(Object entity, LockModeType mode, Map<String, Object> properties) {
assertNotCloseInvoked();
- assertValidAttchedEntity("lock", entity);
+ assertValidAttchedEntity(LOCK, entity);
_broker.assertActiveTransaction();
configureCurrentCacheModes(getFetchPlan(), properties);
configureCurrentFetchPlan(pushFetchPlan(), properties, mode, false);
@@ -1341,7 +1345,7 @@ public class EntityManagerImpl
*/
void assertValidAttchedEntity(String call, Object entity) {
OpenJPAStateManager sm = _broker.getStateManager(entity);
- if (sm == null || !sm.isPersistent() || sm.isDetached()) {
+ if (sm == null || !sm.isPersistent() || sm.isDetached() || (call.equals(REFRESH) && sm.isDeleted())) {
throw new IllegalArgumentException(_loc.get("invalid_entity_argument",
call, entity == null ? "null" : Exceptions.toString(entity)).getMessage());
}