You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by th...@apache.org on 2003/01/17 19:03:35 UTC
cvs commit: jakarta-ojb/src/java/org/apache/ojb/odmg ObjectEnvelopeTable.java
thma 2003/01/17 10:03:35
Modified: src/java/org/apache/ojb/odmg ObjectEnvelopeTable.java
Log:
only mark onject implicitely dirty if they have not been marked during the transaction already.
Safes time and improves semantics!
Revision Changes Path
1.14 +9 -5 jakarta-ojb/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java
Index: ObjectEnvelopeTable.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ObjectEnvelopeTable.java 9 Jan 2003 17:05:42 -0000 1.13
+++ ObjectEnvelopeTable.java 17 Jan 2003 18:03:34 -0000 1.14
@@ -182,12 +182,16 @@
ObjectEnvelope mod = (ObjectEnvelope) mhtObjectEnvelopes.get(iter.next());
if (log.isDebugEnabled()) log.debug("commit: " + mod);
// if the Object has been modified by transaction, mark object as dirty
- if (mod.hasChanged())
+ // but only if it has not been marked during tx already !!
+ if ( (! mod.needsDelete()) && (! mod.needsInsert()) && (! mod.needsUpdate()) )
{
- // implicitely acquire a write lock !
- transaction.lock(mod.getObject(), Transaction.UPGRADE);
- // mark object dirty
- mod.setModificationState(mod.getModificationState().markDirty());
+ if (mod.hasChanged())
+ {
+ // implicitely acquire a write lock !
+ transaction.lock(mod.getObject(), Transaction.UPGRADE);
+ // mark object dirty
+ mod.setModificationState(mod.getModificationState().markDirty());
+ }
}
}