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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to