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