You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2010/02/25 08:04:58 UTC
svn commit: r916158 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/ test/java/org/apache/cayenne/
test/java/org/apache/cayenne/access/
Author: aadamchik
Date: Thu Feb 25 07:04:58 2010
New Revision: 916158
URL: http://svn.apache.org/viewvc?rev=916158&view=rev
Log:
CAY-1397 ROP: Missing the COMMIT state when deleting HOLLOW object
patch by Ksenia Khailenko
(my previous trunk commit didn't have the actual patch)
(cherry picked from commit b0cafdd188d903ba213e5faf8f233e710c0f3905)
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java?rev=916158&r1=916157&r2=916158&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContextDeleteAction.java Thu Feb 25 07:04:58 2010
@@ -79,6 +79,11 @@
context.prepareForAccess(object, null, false);
+ // 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/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java?rev=916158&r1=916157&r2=916158&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextTest.java Thu Feb 25 07:04:58 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/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java?rev=916158&r1=916157&r2=916158&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextTest.java Thu Feb 25 07:04:58 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());
+ }
+
}