You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2011/05/25 19:02:04 UTC

svn commit: r1127585 - /labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java

Author: simoneg
Date: Wed May 25 17:02:04 2011
New Revision: 1127585

URL: http://svn.apache.org/viewvc?rev=1127585&view=rev
Log:
Avoid persisting useless orphans that never made it to the db

Modified:
    labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java

Modified: labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java?rev=1127585&r1=1127584&r2=1127585&view=diff
==============================================================================
--- labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java (original)
+++ labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java Wed May 25 17:02:04 2011
@@ -365,11 +365,18 @@ public class Transaction {
 			if (part == null) continue;
 			Map<MongoEntity,MainState> mains = ent.findMainEntities(CascadeType.PERSIST);
 			for (Map.Entry<MongoEntity, MainState> entry : mains.entrySet()) {
-				if (entry.getValue().equals(MainState.DELETEORPHAN)) {
-					todelete.add(entry.getKey());
-				} else {
-					todelete.remove(entry.getKey());
-					tosave.add(entry.getKey());
+				MainState state = entry.getValue();
+				MongoEntity entity = entry.getKey();
+				if (state.equals(MainState.DELETEORPHAN)) {
+					todelete.add(entity);
+				} else if (state.equals(MainState.CASCADED)){
+					todelete.remove(entity);
+					tosave.add(entity);
+				} else if (state.equals(MainState.ORPHAN)) {
+					// Avoid persisting detached orphans which were not from db or were deleted explicitly
+					if (entity.isFromDb() && !todelete.contains(entity)) {
+						tosave.add(entity);						
+					}
 				}
 			}
 			



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org