Author: aadamchik
Date: Thu Feb 25 07:03:07 2010
New Revision: 916156
URL: http://svn.apache.org/viewvc?rev=916156&view=rev
Log:
CAY-1397 ROP: Missing the COMMIT state when deleting HOLLOW object
patch by Ksenia Khailenko
Modified:
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
Modified:
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL:
http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=916156&r1=916155&r2=916156&view=diff
==============================================================================
---
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt
(original)
+++
cayenne/main/branches/STABLE-3.0/docs/doc/src/main/resources/RELEASE-NOTES.txt
Thu Feb 25 07:03:07 2010
@@ -22,10 +22,11 @@
CAY-1385 Modeler: error dialog doesn't show the correct version
CAY-1390 DataRowStore.processRemoteEvent processInvalidatedIDs typo
CAY-1396 merge: unneeded cast to SQLServerAdapter
+CAY-1397 ROP: Missing the COMMIT state when deleting HOLLOW object
----------------------------------
Release: 3.0 RC 2
-Date:
+Date: 5 February 2010
----------------------------------
Changes/New Features Since 3.0RC1:
Modified:
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java
URL:
http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java?rev=916156&r1=916155&r2=916156&view=diff
==============================================================================
---
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java
(original)
+++
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java
Thu Feb 25 07:03:07 2010
@@ -70,6 +70,11 @@
+ context);
}
+ // must resolve HOLLOW objects before delete... needed
+ // to process relationships and optimistic locking...
+
+ context.prepareForAccess(object, null, false);
+
if (oldState == PersistenceState.NEW) {
deleteNew(object);
}
Modified:
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java
URL:
http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java?rev=916156&r1=916155&r2=916156&view=diff
==============================================================================
---
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java
(original)
+++
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java
Thu Feb 25 07:03:07 2010
@@ -326,5 +326,32 @@
.getGlobalAttribute1Direct());
assertEquals(PersistenceState.COMMITTED, hollow.getPersistenceState());
}
+
+ public void testBeforeHollowDeleteShouldChangeStateToCommited() {
+
+ ObjectId gid = new ObjectId("MtTable1", "a", "b");
+ final ClientMtTable1 inflated = new ClientMtTable1();
+ inflated.setPersistenceState(PersistenceState.COMMITTED);
+ inflated.setObjectId(gid);
+ inflated.setGlobalAttribute1("abc");
+
+ MockClientConnection connection = new MockClientConnection(new
GenericResponse(
+ Arrays.asList(inflated)));
+ ClientChannel channel = new ClientChannel(connection);
+
+ CayenneContext context = new CayenneContext(channel);
+ context.setEntityResolver(getDomain()
+ .getEntityResolver()
+ .getClientEntityResolver());
+ ClientMtTable1 hollow = (ClientMtTable1) context.localObject(gid,
null);
+ assertEquals(PersistenceState.HOLLOW, hollow.getPersistenceState());
+
+ // testing this...
+ context.deleteObject(hollow);
+ assertSame(hollow, context.getGraphManager().getNode(gid));
+ assertEquals(inflated.getGlobalAttribute1Direct(), hollow
+ .getGlobalAttribute1Direct());
+ assertEquals(PersistenceState.DELETED, hollow.getPersistenceState());
+ }
}
Modified:
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
URL:
http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java?rev=916156&r1=916155&r2=916156&view=diff
==============================================================================
---
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
(original)
+++
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
Thu Feb 25 07:03:07 2010
@@ -536,4 +536,23 @@
assertNull(context.getObjectStore().getCachedSnapshot(oid));
assertSame(object, context.getObjectStore().getNode(oid));
}
+
+ public void testBeforeHollowDeleteShouldChangeStateToCommited() throws
Exception {
+ ObjectId gid = new ObjectId("Artist","ARTIST_ID",33001);
+ final Artist inflated = new Artist();
+ inflated.setPersistenceState(PersistenceState.COMMITTED);
+ inflated.setObjectId(gid);
+ inflated.setArtistName("artist1");
+
+ Artist hollow = (Artist) context.localObject(gid, null);
+ assertEquals(PersistenceState.HOLLOW, hollow.getPersistenceState());
+
+ // testing this...
+ context.deleteObject(hollow);
+ assertSame(hollow, context.getGraphManager().getNode(gid));
+ assertEquals(inflated.getArtistName(), hollow.getArtistName());
+
+ assertEquals(PersistenceState.DELETED, hollow.getPersistenceState());
+ }
+
}