Return-Path: Delivered-To: apmail-ant-notifications-archive@locus.apache.org Received: (qmail 69566 invoked from network); 17 Jun 2008 14:48:02 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 17 Jun 2008 14:48:02 -0000 Received: (qmail 53023 invoked by uid 500); 17 Jun 2008 14:48:04 -0000 Delivered-To: apmail-ant-notifications-archive@ant.apache.org Received: (qmail 52999 invoked by uid 500); 17 Jun 2008 14:48:04 -0000 Mailing-List: contact notifications-help@ant.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ant.apache.org Delivered-To: mailing list notifications@ant.apache.org Received: (qmail 52990 invoked by uid 99); 17 Jun 2008 14:48:04 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Jun 2008 07:48:04 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 17 Jun 2008 14:47:23 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 896302388A31; Tue, 17 Jun 2008 07:47:11 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r668686 - /ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.java Date: Tue, 17 Jun 2008 14:47:11 -0000 To: notifications@ant.apache.org From: mbenson@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080617144711.896302388A31@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mbenson Date: Tue Jun 17 07:47:11 2008 New Revision: 668686 URL: http://svn.apache.org/viewvc?rev=668686&view=rev Log: scale back synchronization Modified: ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.java Modified: ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.java?rev=668686&r1=668685&r2=668686&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.java Tue Jun 17 07:47:11 2008 @@ -323,7 +323,7 @@ /** * Get the expanders. - * @return the exapanders. + * @return the expanders. */ public Collection getExpanders() { return getDelegates(PropertyExpander.class); @@ -524,41 +524,34 @@ * @param verbose If this is true output extra log messages. * @return true if the property is set. */ - public synchronized boolean setProperty(String name, Object value, boolean verbose) { - for (Iterator iter = getDelegates(PropertySetter.class).iterator(); - iter.hasNext();) { + public boolean setProperty(String name, Object value, boolean verbose) { + for (Iterator iter = getDelegates(PropertySetter.class).iterator(); iter.hasNext();) { PropertySetter setter = (PropertySetter) iter.next(); if (setter.set(name, value, this)) { return true; } } - // user (CLI) properties take precedence - if (null != userProperties.get(name)) { + synchronized (this) { + // user (CLI) properties take precedence + if (userProperties.containsKey(name)) { + if (verbose) { + project.log("Override ignored for user property \"" + name + "\"", + Project.MSG_VERBOSE); + } + return false; + } if (verbose) { - project.log("Override ignored for user property \"" + name - + "\"", Project.MSG_VERBOSE); + if (properties.containsKey(name)) { + project.log("Overriding previous definition of property \"" + name + "\"", + Project.MSG_VERBOSE); + } + project.log("Setting project property: " + name + " -> " + value, Project.MSG_DEBUG); } - return false; - } - -// boolean done = setPropertyHook(ns, name, value, false, false, false); -// if (done) { -// return true; -// } - - if (null != properties.get(name) && verbose) { - project.log("Overriding previous definition of property \"" + name - + "\"", Project.MSG_VERBOSE); - } - - if (verbose) { - project.log("Setting project property: " + name + " -> " - + value, Project.MSG_DEBUG); - } - if (name != null && value != null) { - properties.put(name, value); + if (name != null && value != null) { + properties.put(name, value); + } + return true; } - return true; } /** @@ -589,7 +582,7 @@ * Must not be null. * @since Ant 1.8 */ - public synchronized void setNewProperty(String name, Object value) { + public void setNewProperty(String name, Object value) { for (Iterator iter = getDelegates(PropertySetter.class).iterator(); iter.hasNext();) { PropertySetter setter = (PropertySetter) iter.next(); @@ -597,17 +590,15 @@ return; } } - if (null != properties.get(name)) { - project.log("Override ignored for property \"" + name + "\"", Project.MSG_VERBOSE); - return; - } -// boolean done = setPropertyHook(ns, name, value, false, false, true); -// if (done) { -// return; -// } - project.log("Setting project property: " + name + " -> " + value, Project.MSG_DEBUG); - if (name != null && value != null) { - properties.put(name, value); + synchronized (this) { + if (properties.containsKey(name)) { + project.log("Override ignored for property \"" + name + "\"", Project.MSG_VERBOSE); + return; + } + project.log("Setting project property: " + name + " -> " + value, Project.MSG_DEBUG); + if (name != null && value != null) { + properties.put(name, value); + } } } @@ -633,15 +624,12 @@ * @param value The new value of the property. * Must not be null. */ - public synchronized void setUserProperty(String name, Object value) { + public void setUserProperty(String name, Object value) { project.log("Setting ro project property: " + name + " -> " + value, Project.MSG_DEBUG); - userProperties.put(name, value); - -// boolean done = setPropertyHook(ns, name, value, false, true, false); -// if (done) { -// return; -// } - properties.put(name, value); + synchronized (this) { + userProperties.put(name, value); + properties.put(name, value); + } } /** @@ -672,17 +660,14 @@ * @param value The new value of the property. * Must not be null. */ - public synchronized void setInheritedProperty(String name, Object value) { - inheritedProperties.put(name, value); - + public void setInheritedProperty(String name, Object value) { project.log("Setting ro project property: " + name + " -> " + value, Project.MSG_DEBUG); - userProperties.put(name, value); -// boolean done = setPropertyHook(ns, name, value, true, false, false); -// if (done) { -// return; -// } - properties.put(name, value); + synchronized (this) { + inheritedProperties.put(name, value); + userProperties.put(name, value); + properties.put(name, value); + } } // -------------------- Getting properties -------------------- @@ -699,7 +684,7 @@ * or if a null name is provided. * @deprecated namespaces are unnecessary. */ - public synchronized Object getProperty(String ns, String name) { + public Object getProperty(String ns, String name) { return getProperty(name); } @@ -713,7 +698,7 @@ * @return the property value, or null for no match * or if a null name is provided. */ - public synchronized Object getProperty(String name) { + public Object getProperty(String name) { if (name == null) { return null; } @@ -726,10 +711,6 @@ return o; } } -// Object o = getPropertyHook(ns, name, false); -// if (o != null) { -// return o; -// } return properties.get(name); } @@ -757,16 +738,10 @@ * @return the property value, or null for no match * or if a null name is provided. */ - public synchronized Object getUserProperty(String name) { + public Object getUserProperty(String name) { if (name == null) { return null; } -/* - Object o = getPropertyHook(ns, name, true); - if (o != null) { - return o; - } -*/ return userProperties.get(name); } @@ -948,18 +923,22 @@ * @param delegate the delegate to add. * @since Ant 1.8 */ - public synchronized void add(Delegate delegate) { - for (Iterator iter = getDelegateInterfaces(delegate).iterator(); iter.hasNext();) { - Object key = iter.next(); - List list = (List) delegates.get(key); - if (list == null) { - list = new ArrayList(); - delegates.put(key, list); - } - if (list.contains(delegate)) { - list.remove(delegate); + public void add(Delegate delegate) { + synchronized (Delegate.class) { + Hashtable newDelegates = (Hashtable) delegates.clone(); + for (Iterator iter = getDelegateInterfaces(delegate).iterator(); iter.hasNext();) { + Object key = iter.next(); + List list = (List) newDelegates.get(key); + if (list == null) { + list = new ArrayList(); + newDelegates.put(key, list); + } + if (list.contains(delegate)) { + list.remove(delegate); + } + list.add(0, delegate); } - list.add(0, delegate); + delegates = newDelegates; } } @@ -969,7 +948,7 @@ * @return Collection. * @since Ant 1.8 */ - protected synchronized List getDelegates(Class type) { + protected List getDelegates(Class type) { return delegates.containsKey(type) ? (List) new ArrayList((List) delegates.get(type)) : Collections.EMPTY_LIST; } @@ -980,7 +959,7 @@ * @return Set * @since Ant 1.8 */ - protected Set getDelegateInterfaces(Delegate d) { + protected static Set getDelegateInterfaces(Delegate d) { HashSet result = new HashSet(); Class c = d.getClass(); while (c != null) {