Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 4929 invoked from network); 12 Nov 2004 13:38:48 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 12 Nov 2004 13:38:48 -0000 Received: (qmail 63048 invoked by uid 500); 12 Nov 2004 13:38:47 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 62983 invoked by uid 500); 12 Nov 2004 13:38:47 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 62971 invoked by uid 99); 12 Nov 2004 13:38:47 -0000 Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Fri, 12 Nov 2004 05:38:47 -0800 Received: (qmail 4851 invoked by uid 65534); 12 Nov 2004 13:38:45 -0000 Date: 12 Nov 2004 13:38:45 -0000 Message-ID: <20041112133845.4849.qmail@minotaur.apache.org> From: sylvain@apache.org To: cvs@cocoon.apache.org Subject: svn commit: rev 57517 - cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Author: sylvain Date: Fri Nov 12 05:38:45 2004 New Revision: 57517 Modified: cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java Log: Optimize lazy parsing of value. Tim, I think we finally got it :-) Modified: cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java ============================================================================== --- cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java (original) +++ cocoon/trunk/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java Fri Nov 12 05:38:45 2004 @@ -201,14 +201,18 @@ // Only convert if the text value actually changed. Otherwise, keep the old value // and/or the old validation error (allows to keep errors when clicking on actions) if (!(newEnteredValue == null ? "" : newEnteredValue).equals((enteredValue == null ? "" : enteredValue))) { - // Make sure the old value has been parsed and validated. - Object oldValue = getValue(); + + // If we have some value-changed listeners, we must make sure the current value has been + // parsed, to fill the event. Otherwise, we don't need to spend that extra CPU time. + boolean hasListeners = hasValueChangedListeners(); + Object oldValue = hasListeners ? getValue() : null; + enteredValue = newEnteredValue; validationError = null; value = null; this.valueState = VALUE_UNPARSED; - if (hasValueChangedListeners()) { + if (hasListeners) { // Throw an event that will hold the old value and // will lazily compute the new value only if needed. getForm().addWidgetEvent(new DeferredValueChangedEvent(this, oldValue));