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]