Return-Path: Delivered-To: apmail-db-ojb-dev-archive@www.apache.org Received: (qmail 38019 invoked from network); 11 Jul 2006 16:41:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 11 Jul 2006 16:41:50 -0000 Received: (qmail 73630 invoked by uid 500); 11 Jul 2006 16:41:50 -0000 Delivered-To: apmail-db-ojb-dev-archive@db.apache.org Received: (qmail 73606 invoked by uid 500); 11 Jul 2006 16:41:50 -0000 Mailing-List: contact ojb-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "OJB Developers List" Reply-To: "OJB Developers List" Delivered-To: mailing list ojb-dev@db.apache.org Received: (qmail 73595 invoked by uid 500); 11 Jul 2006 16:41:50 -0000 Received: (qmail 73592 invoked by uid 99); 11 Jul 2006 16:41:50 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Jul 2006 09:41:50 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Jul 2006 09:41:49 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 6630E1A981A; Tue, 11 Jul 2006 09:41:29 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r420920 - /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/odmg/ObjectEnvelopeTable.java Date: Tue, 11 Jul 2006 16:41:29 -0000 To: ojb-commits@db.apache.org From: arminw@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060711164129.6630E1A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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