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 ar...@apache.org on 2006/07/11 18:41:29 UTC

svn commit: r420920 - /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java

Author: arminw
Date: Tue Jul 11 09:41:28 2006
New Revision: 420920

URL: http://svn.apache.org/viewvc?rev=420920&view=rev
Log:
fix OJB-118, use new methods for better state detection

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java?rev=420920&r1=420919&r2=420920&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java Tue Jul 11 09:41:28 2006
@@ -22,9 +22,9 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.lang.SystemUtils;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
-import org.apache.commons.lang.SystemUtils;
 import org.apache.ojb.broker.Identity;
 import org.apache.ojb.broker.OJBRuntimeException;
 import org.apache.ojb.broker.OptimisticLockException;
@@ -42,7 +42,7 @@
 import org.apache.ojb.broker.util.logging.LoggerFactory;
 import org.apache.ojb.odmg.link.LinkEntry;
 import org.apache.ojb.odmg.link.LinkEntryMtoN;
-import org.apache.ojb.odmg.states.StateOldClean;
+import org.apache.ojb.odmg.states.ModificationState;
 import org.odmg.LockNotGrantedException;
 import org.odmg.ODMGRuntimeException;
 import org.odmg.Transaction;
@@ -151,14 +151,14 @@
             while(iter.hasNext())
             {
                 ObjectEnvelope mod = (ObjectEnvelope) iter.next();
-                if(!needsCommit || (mod.getModificationState() == StateOldClean.getInstance()
-                        || mod.getModificationState().isTransient()))
+                ModificationState state = mod.getModificationState();
+                if(!needsCommit || (state.isClean() && !state.isNew()) || state.isTransient())
                 {
                     // nothing to do
                 }
                 else
                 {
-                    mod.setModificationState(mod.getModificationState().markClean());
+                    mod.setModificationState(state.markClean());
                 }
             }
         }
@@ -298,8 +298,9 @@
         while(iter.hasNext())
         {
             ObjectEnvelope mod = (ObjectEnvelope) iter.next();
-            // only non transient objects should be performed
-            if(!mod.getModificationState().isTransient())
+            // transient and NewDelete objects must NOT performed
+            ModificationState state = mod.getModificationState();
+            if(!state.isTransient() && !(state.isNew() && state.isDelete()))
             {
                 mod.markReferenceElements(broker);
             }
@@ -320,8 +321,13 @@
         while(iter.hasNext())
         {
             mod = (ObjectEnvelope) iter.next();
+            // no need to lock new objects
+            if(mod.getModificationState().isNew())
+            {
+                needsCommit = true;
+            }
             // ignore transient objects
-            if(!mod.getModificationState().isTransient())
+            else if(!mod.getModificationState().isTransient())
             {
                 /*
                 now we check if all modified objects has a write lock. On insert of new



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org