List Info

Thread: svn commit: r578769 - in /ant/core/trunk/src/main/org/apache/tools/ant: ./ property/ taskdefs/




svn commit: r578769 - in /ant/core/trunk/src/main/org/apache/tool s/ant: ./ property/ taskdefs/
country flaguser name
United States
2007-09-24 06:56:34
Author: peterreilly
Date: Mon Sep 24 04:56:34 2007
New Revision: 578769

URL: 
http://svn.apache.org/viewvc?rev=578769&view=rev
Log:
Some cleanups of property expansion
* extact expand property from PropertyExpander
* extact resolve property map from Property task
* remove use of ThreadLocal from Property task
* remove need of cloning of PropertyHelper when resolving
properties
  in a map.


Added:
   
ant/core/trunk/src/main/org/apache/tools/ant/property/GetPro
perty.java   (with props)
   
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseN
extProperty.java   (with props)
   
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseP
roperties.java   (with props)
   
ant/core/trunk/src/main/org/apache/tools/ant/property/Proper
tyExpander.java   (with props)
   
ant/core/trunk/src/main/org/apache/tools/ant/property/Resolv
ePropertyMap.java   (with props)
Modified:
   
ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.
java
   
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Proper
ty.java

Modified:
ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelper.
java
URL: http://svn.apache.org/view
vc/ant/core/trunk/src/main/org/apache/tools/ant/PropertyHelp
er.java?rev=578769&r1=578768&r2=578769&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 Mon Sep 24 04:56:34 2007
 -27,8
+27,13 
 import java.util.Set;
 import java.util.Vector;
 import java.util.Enumeration;
+import java.util.Collection;
 
 import org.apache.tools.ant.property.NullReturn;
+import org.apache.tools.ant.property.GetProperty;
+import org.apache.tools.ant.property.ParseNextProperty;
+import org.apache.tools.ant.property.PropertyExpander;
+import org.apache.tools.ant.property.ParseProperties;
 
 /* ISSUES:
  - ns param. It could be used to provide
"namespaces" for properties, which
 -60,7
+65,7 
  *
  * since Ant 1.6
  */
-public class PropertyHelper implements Cloneable {
+public class PropertyHelper implements GetProperty {
 
     // 
--------------------------------------------------------
     //
 -90,22
+95,6 
     }
 
     /**
-     * Describes an entity capable of expanding properties
embedded in a string.
-     * since Ant 1.8
-     */
-    public interface PropertyExpander extends Delegate {
-        /**
-         * Parse the next property name.
-         * param s the String to parse.
-         * param pos the ParsePosition in use.
-         * param propertyHelper the invoking PropertyHelper.
-         * return parsed String if any, else
<code>null</code>.
-         */
-        String parsePropertyName(
-            String s, ParsePosition pos, PropertyHelper
propertyHelper);
-    }
-
-    /**
      * Describes an entity capable of setting a property to
a value.
      * since Ant 1.8
      */
 -151,7
+140,7 
 
     private static final PropertyExpander DEFAULT_EXPANDER
= new PropertyExpander() {
         public String parsePropertyName(
-            String s, ParsePosition pos, PropertyHelper
propertyHelper) {
+            String s, ParsePosition pos, ParseNextProperty
notUsed) {
             int index = pos.getIndex();
             if (s.indexOf("${", index) == index)
{
                 int end = s.indexOf('}', index);
 -176,7
+165,8 
              */
             // CheckStyle:LineLengthCheck ON
             public String parsePropertyName(
-                String s, ParsePosition pos, PropertyHelper
propertyHelper) {
+                String s, ParsePosition pos,
ParseNextProperty notUsed) {
+                //System.out.println("parseproperty
" + s);
                 int index = pos.getIndex();
                 if (s.indexOf("$$", index) ==
index) {
                     pos.setIndex(++index);
 -331,6
+321,15 
         return helper;
     }
 
+    /**
+     * Get the expanders.
+     * return the exapanders.
+     */
+    public Collection getExpanders() {
+        return getDelegates(PropertyExpander.class);
+    }
+
+
     // --------------------  Methods to override 
--------------------
 
     /**
 -483,31
+482,8 
      *         <code>null</code> if the
original string is <code>null</code>.
      */
     public Object parseProperties(String value) throws
BuildException {
-        if (value == null || "".equals(value)) {
-            return value;
-        }
-        ParsePosition pos = new ParsePosition(0);
-        Object o = parseNextProperty(value, pos);
-        if (o != null && pos.getIndex() ==
value.length()) {
-            return o;
-        }
-        StringBuffer sb = new StringBuffer(value.length() *
2);
-        if (o == null) {
-            sb.append(value.charAt(pos.getIndex()));
-            pos.setIndex(pos.getIndex() + 1);
-        } else {
-            sb.append(o);
-        }
-        while (pos.getIndex() < value.length()) {
-            o = parseNextProperty(value, pos);
-            if (o == null) {
-                sb.append(value.charAt(pos.getIndex()));
-                pos.setIndex(pos.getIndex() + 1);
-            } else {
-                sb.append(o);
-            }
-        }
-        return sb.toString();
+        return new ParseProperties(getProject(),
getExpanders(), this)
+            .parseProperties(value);
     }
 
     /**
 -516,50
+492,8 
      * return <code>true</code> if
<code>value</code> contains property notation.
      */
     public boolean containsProperties(String value) {
-        if (value == null) {
-            return false;
-        }
-        for (ParsePosition pos = new ParsePosition(0);
pos.getIndex() < value.length();) {
-            if (parsePropertyName(value, pos) != null) {
-                return true;
-            }
-            pos.setIndex(pos.getIndex() + 1);
-        }
-        return false;
-    }
-
-    /**
-     * Return any property that can be parsed from the
specified position in the specified String.
-     * param value String to parse
-     * param pos ParsePosition
-     * return Object or null if no property is at the
current location.
-     */
-    public Object parseNextProperty(String value,
ParsePosition pos) {
-        int start = pos.getIndex();
-        String propertyName = parsePropertyName(value,
pos);
-        if (propertyName != null) {
-            Object result = getProperty(propertyName);
-            if (result != null) {
-                return result;
-            }
-            getProject().log("Property "" +
propertyName
-                    + "" has not been set",
Project.MSG_VERBOSE);
-            return value.substring(start, pos.getIndex());
-        }
-        return null;
-    }
-
-    private String parsePropertyName(String value,
ParsePosition pos) {
-        for (Iterator iter =
getDelegates(PropertyExpander.class).iterator();
-             iter.hasNext();) {
-            String propertyName = ((PropertyExpander)
iter.next())
-                .parsePropertyName(value, pos, this);
-            if (propertyName == null) {
-                continue;
-            }
-            return propertyName;
-        }
-        return null;
+        return new ParseProperties(getProject(),
getExpanders(), this)
+            .containsProperties(value);
     }
 
     // -------------------- Default implementation 
--------------------
 -1062,22
+996,4 
         return result;
     }
 
-    /**
-     * Make a clone of this PropertyHelper.
-     * return the cloned PropertyHelper.
-     * since Ant 1.8
-     */
-    public synchronized Object clone() {
-        PropertyHelper result;
-        try {
-            result = (PropertyHelper) super.clone();
-            result.delegates = (Hashtable)
delegates.clone();
-            result.properties = (Hashtable)
properties.clone();
-            result.userProperties = (Hashtable)
userProperties.clone();
-            result.inheritedProperties = (Hashtable)
inheritedProperties.clone();
-        } catch (CloneNotSupportedException e) {
-            throw new BuildException(e);
-        }
-        return result;
-    }
 }

Added:
ant/core/trunk/src/main/org/apache/tools/ant/property/GetPro
perty.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/
main/org/apache/tools/ant/property/GetProperty.java?rev=5787
69&view=auto
============================================================
==================
---
ant/core/trunk/src/main/org/apache/tools/ant/property/GetPro
perty.java (added)
+++
ant/core/trunk/src/main/org/apache/tools/ant/property/GetPro
perty.java Mon Sep 24 04:56:34 2007
 -0,0
+1,28 
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under
one or more
+ *  contributor license agreements.  See the NOTICE file
distributed with
+ *  this work for additional information regarding
copyright ownership.
+ *  The ASF licenses this file to You under the Apache
License, Version 2.0
+ *  (the "License"); you may not use this file
except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www
.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in
writing, software
+ *  distributed under the License is distributed on an
"AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
+ *  See the License for the specific language governing
permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.tools.ant.property;
+
+/** Interface to a class (normally PropertyHelper) to get a
property */
+public interface GetProperty {
+    /**
+     * Returns the value of a property if it is set.
+     * param name name of the property.
+     * return the property value, or null for no match or
for name being null.
+     */
+    Object getProperty(String name);
+}

Propchange:
ant/core/trunk/src/main/org/apache/tools/ant/property/GetPro
perty.java
------------------------------------------------------------
------------------
    svn:eol-style = native

Added:
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseN
extProperty.java
URL: http://svn.apache.org/viewvc/ant/core/trun
k/src/main/org/apache/tools/ant/property/ParseNextProperty.j
ava?rev=578769&view=auto
============================================================
==================
---
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseN
extProperty.java (added)
+++
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseN
extProperty.java Mon Sep 24 04:56:34 2007
 -0,0
+1,40 
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under
one or more
+ *  contributor license agreements.  See the NOTICE file
distributed with
+ *  this work for additional information regarding
copyright ownership.
+ *  The ASF licenses this file to You under the Apache
License, Version 2.0
+ *  (the "License"); you may not use this file
except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www
.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in
writing, software
+ *  distributed under the License is distributed on an
"AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
+ *  See the License for the specific language governing
permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.tools.ant.property;
+
+import java.text.ParsePosition;
+
+import org.apache.tools.ant.Project;
+
+/** Interface to parse a property */
+public interface ParseNextProperty {
+    /**
+     * Get the current project.
+     * return the current ant project.
+     */
+    Project getProject();
+
+    /**
+     * Return any property that can be parsed from the
specified position
+     * in the specified String.
+     * param value String to parse
+     * param pos ParsePosition
+     * return Object or null if no property is at the
current location.
+     */
+    Object parseNextProperty(String value, ParsePosition
pos);
+}

Propchange:
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseN
extProperty.java
------------------------------------------------------------
------------------
    svn:eol-style = native

Added:
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseP
roperties.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/
src/main/org/apache/tools/ant/property/ParseProperties.java?
rev=578769&view=auto
============================================================
==================
---
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseP
roperties.java (added)
+++
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseP
roperties.java Mon Sep 24 04:56:34 2007
 -0,0
+1,153 
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under
one or more
+ *  contributor license agreements.  See the NOTICE file
distributed with
+ *  this work for additional information regarding
copyright ownership.
+ *  The ASF licenses this file to You under the Apache
License, Version 2.0
+ *  (the "License"); you may not use this file
except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www
.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in
writing, software
+ *  distributed under the License is distributed on an
"AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
+ *  See the License for the specific language governing
permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.tools.ant.property;
+
+import java.text.ParsePosition;
+import java.util.Collection;
+import java.util.Iterator;
+import org.apache.tools.ant.Project;
+
+/**
+ * Parse properties using a collection of expanders.
+ */
+public class ParseProperties implements ParseNextProperty
{
+
+    private final Project project;
+    private final GetProperty getProperty;
+    private final Collection expanders;
+
+    /**
+     * Constructor with a getProperty.
+     * param project the current ant project.
+     * param expanders a sequence of exapanders
+     * param getProperty property resolver.
+     */
+    public ParseProperties(
+        Project project, Collection expanders, GetProperty
getProperty) {
+        this.project = project;
+        this.expanders = expanders;
+        this.getProperty = getProperty;
+    }
+
+    /**
+     * Get the project.
+     * return the current ant project.
+     */
+    public Project getProject() {
+        return project;
+    }
+
+    /**
+     * Decode properties from a String representation.  If
the entire
+     * contents of the String resolve to a single property,
that value
+     * is returned.  Otherwise a String is returned.
+     *
+     * param value The string to be scanned for property
references.
+     *              May be <code>null</code>,
in which case this
+     *              method returns immediately with no
effect.
+     *
+     * return the original string with the properties
replaced, or
+     *         <code>null</code> if the
original string is <code>null</code>.
+     */
+    public Object parseProperties(String value) {
+        if (value == null || "".equals(value) ||
value.indexOf('$') == -1) {
+            return value;
+        }
+        ParsePosition pos = new ParsePosition(0);
+        Object o = parseNextProperty(value, pos);
+        if (o != null && pos.getIndex() ==
value.length()) {
+            return o;
+        }
+        StringBuffer sb = new StringBuffer(value.length() *
2);
+        if (o == null) {
+            sb.append(value.charAt(pos.getIndex()));
+            pos.setIndex(pos.getIndex() + 1);
+        } else {
+            sb.append(o);
+        }
+        while (pos.getIndex() < value.length()) {
+            o = parseNextProperty(value, pos);
+            if (o == null) {
+                sb.append(value.charAt(pos.getIndex()));
+                pos.setIndex(pos.getIndex() + 1);
+            } else {
+                sb.append(o);
+            }
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Learn whether a String contains replaceable
properties.
+     * param value the String to check.
+     * return <code>true</code> if
<code>value</code> contains property notation.
+     */
+    public boolean containsProperties(String value) {
+        if (value == null) {
+            return false;
+        }
+        for (ParsePosition pos = new ParsePosition(0);
pos.getIndex() < value.length();) {
+            if (parsePropertyName(value, pos) != null) {
+                return true;
+            }
+            pos.setIndex(pos.getIndex() + 1);
+        }
+        return false;
+    }
+
+    /**
+     * Return any property that can be parsed from the
specified position
+     * in the specified String.
+     * param value String to parse
+     * param pos ParsePosition
+     * return Object or null if no property is at the
current location.
+     */
+    public Object parseNextProperty(String value,
ParsePosition pos) {
+        int start = pos.getIndex();
+        String propertyName = parsePropertyName(value,
pos);
+        if (propertyName != null) {
+            Object result = getProperty(propertyName);
+            if (result != null) {
+                return result;
+            }
+            if (project != null) {
+                project.log(
+                    "Property "" +
propertyName
+                    + "" has not been set",
Project.MSG_VERBOSE);
+            }
+            return value.substring(start, pos.getIndex());
+        }
+        return null;
+    }
+
+    private String parsePropertyName(String value,
ParsePosition pos) {
+        for (Iterator iter = expanders.iterator();
iter.hasNext();) {
+            String propertyName = ((PropertyExpander)
iter.next())
+                .parsePropertyName(value, pos, this);
+            if (propertyName == null) {
+                continue;
+            }
+            return propertyName;
+        }
+        return null;
+    }
+
+    private Object getProperty(String propertyName) {
+        return getProperty.getProperty(propertyName);
+    }
+}

Propchange:
ant/core/trunk/src/main/org/apache/tools/ant/property/ParseP
roperties.java
------------------------------------------------------------
------------------
    svn:eol-style = native

Added:
ant/core/trunk/src/main/org/apache/tools/ant/property/Proper
tyExpander.java
URL: http://svn.apache.org/viewvc/ant/core/trunk
/src/main/org/apache/tools/ant/property/PropertyExpander.jav
a?rev=578769&view=auto
============================================================
==================
---
ant/core/trunk/src/main/org/apache/tools/ant/property/Proper
tyExpander.java (added)
+++
ant/core/trunk/src/main/org/apache/tools/ant/property/Proper
tyExpander.java Mon Sep 24 04:56:34 2007
 -0,0
+1,36 
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under
one or more
+ *  contributor license agreements.  See the NOTICE file
distributed with
+ *  this work for additional information regarding
copyright ownership.
+ *  The ASF licenses this file to You under the Apache
License, Version 2.0
+ *  (the "License"); you may not use this file
except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www
.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in
writing, software
+ *  distributed under the License is distributed on an
"AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
+ *  See the License for the specific language governing
permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.tools.ant.property;
+
+import org.apache.tools.ant.PropertyHelper;
+
+import java.text.ParsePosition;
+
+/** Interface to a class (normally PropertyHelper) to get a
property */
+public interface PropertyExpander extends
PropertyHelper.Delegate {
+    /**
+     * Parse the next property name.
+     * param s the String to parse.
+     * param pos the ParsePosition in use.
+     * param parseNextProperty parse next property
+     * return parsed String if any, else
<code>null</code>.
+     */
+    String parsePropertyName(
+        String s, ParsePosition pos, ParseNextProperty
parseNextProperty);
+}
+

Propchange:
ant/core/trunk/src/main/org/apache/tools/ant/property/Proper
tyExpander.java
------------------------------------------------------------
------------------
    svn:eol-style = native

Added:
ant/core/trunk/src/main/org/apache/tools/ant/property/Resolv
ePropertyMap.java
URL: http://svn.apache.org/viewvc/ant/core/tru
nk/src/main/org/apache/tools/ant/property/ResolvePropertyMap
.java?rev=578769&view=auto
============================================================
==================
---
ant/core/trunk/src/main/org/apache/tools/ant/property/Resolv
ePropertyMap.java (added)
+++
ant/core/trunk/src/main/org/apache/tools/ant/property/Resolv
ePropertyMap.java Mon Sep 24 04:56:34 2007
 -0,0
+1,87 
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under
one or more
+ *  contributor license agreements.  See the NOTICE file
distributed with
+ *  this work for additional information regarding
copyright ownership.
+ *  The ASF licenses this file to You under the Apache
License, Version 2.0
+ *  (the "License"); you may not use this file
except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www
.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in
writing, software
+ *  distributed under the License is distributed on an
"AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
+ *  See the License for the specific language governing
permissions and
+ *  limitations under the License.
+ *
+ */
+package org.apache.tools.ant.property;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Collection;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+
+/**
+ *  Class to resolve properties in a map.
+ */
+public class ResolvePropertyMap implements GetProperty {
+    private final Set       seen = new HashSet();
+    private final ParseProperties parseProperties;
+    private final GetProperty    master;
+    private Map map;
+
+    /**
+     * Constructor with a master getproperty and a
collection of expanders.
+     * param project the current ant project.
+     * param master the master property holder (usually
PropertyHelper)
+     * param expanders a collection of expanders (usually
from PropertyHelper).
+     */
+    public ResolvePropertyMap(
+        Project project, GetProperty master, Collection
expanders) {
+        this.master = master;
+        this.parseProperties = new ParseProperties(project,
expanders, this);
+    }
+
+    /**
+     * Returns the value of a property if it is set.
+     * param name name of the property.
+     * return the property value, or null for no match or
for name being null.
+     */
+    public Object getProperty(String name) {
+        if (seen.contains(name)) {
+            throw new BuildException(
+                "Property " + name + " was
circularly " + "defined.");
+        }
+        // Note: the master overrides (even if the name is
subsequently
+        //       prefixed)
+        Object masterProperty = master.getProperty(name);
+        if (masterProperty != null) {
+            return masterProperty;
+        }
+        try {
+            seen.add(name);
+            return parseProperties.parseProperties((String)
map.get(name));
+        } finally {
+            seen.remove(name);
+        }
+    }
+
+    /**
+     * The action method - resolves all the properties in a
map.
+     * param map the map to resolve properties in.
+     */
+    public void resolveAllProperties(Map map) {
+        this.map = map; // The map gets used in the
getProperty callback
+        for (Iterator i = map.keySet().iterator();
i.hasNext();) {
+            String key = (String) i.next();
+            Object result = getProperty(key);
+            String value = result == null ? "" :
result.toString();
+            map.put(key, value);
+        }
+    }
+}

Propchange:
ant/core/trunk/src/main/org/apache/tools/ant/property/Resolv
ePropertyMap.java
------------------------------------------------------------
------------------
    svn:eol-style = native

Modified:
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Proper
ty.java
URL: http://svn.apache.org/v
iewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/
Property.java?rev=578769&r1=578768&r2=578769&vie
w=diff
============================================================
==================
---
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Proper
ty.java (original)
+++
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Proper
ty.java Mon Sep 24 04:56:34 2007
 -28,7
+28,6 
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Properties;
-import java.util.Stack;
 import java.util.Vector;
 
 import org.apache.tools.ant.BuildException;
 -38,6
+37,7 
 import org.apache.tools.ant.types.Path;
 import org.apache.tools.ant.types.Reference;
 import org.apache.tools.ant.util.FileUtils;
+import org.apache.tools.ant.property.ResolvePropertyMap;
 
 /**
  * Sets a property by name, or set of properties (from file
or
 -73,62
+73,6 
  * ant.task category="property"
  */
 public class Property extends Task {
-    private static class PropertyResolver implements
PropertyHelper.PropertyEvaluator {
-        private ThreadLocal getStack = new ThreadLocal() {
-            protected Object initialValue() {
-                return new Stack();
-            }
-        };
-        private ThreadLocal replaceStack = new
ThreadLocal() {
-            protected Object initialValue() {
-                return new Stack();
-            }
-        };
-        private Map map;
-
-        /**
-         * Construct a new Property.PropertyResolver
instance.
-         */
-        public PropertyResolver(Map map) {
-            this.map = map;
-        }
-
-        // CheckStyle:LineLengthCheck OFF see to long
-        /* (non-Javadoc)
-         * see
org.apache.tools.ant.PropertyHelper.PropertyEvaluator#evalua
te(java.lang.String, org.apache.tools.ant.PropertyHelper)
-         */
-        // CheckStyle:LineLengthCheck ON
-        public Object evaluate(String property,
PropertyHelper propertyHelper) {
-            //our feeble properties don't matter if the
PropertyHelper
-            // can resolve the property without us:
-            Stack stk = (Stack) getStack.get();
-            if (stk.contains(property)) {
-                return null;
-            }
-            stk.push(property);
-            try {
-                if (propertyHelper.getProperty(property) !=
null) {
-                    return null;
-                }
-            } finally {
-                stk.pop();
-            }
-            Object value = map.get(property);
-            if (!(value instanceof String)) {
-                return null;
-            }
-            stk = (Stack) replaceStack.get();
-            if (stk.contains(property)) {
-                throw new BuildException("Property
" + property + " was circularly defined.");
-            }
-            stk.push(property);
-            try {
-                return
propertyHelper.replaceProperties((String) value);
-            } finally {
-                stk.pop();
-            }
-        }
-    }
 
     // CheckStyle:VisibilityModifier OFF - bc
     protected String name;
 -696,16
+640,12 
      * param props properties object to resolve
      */
     private void resolveAllProperties(Map props) throws
BuildException {
-        PropertyHelper propertyHelper = (PropertyHelper)
PropertyHelper.getPropertyHelper(
-                getProject()).clone();
-        propertyHelper.add(new PropertyResolver(props));
-        for (Iterator it = props.keySet().iterator();
it.hasNext();) {
-            Object k = it.next();
-            if (k instanceof String) {
-                Object value =
propertyHelper.getProperty((String) k);
-                props.put(k, value);
-            }
-        }
+        PropertyHelper propertyHelper
+            = (PropertyHelper)
PropertyHelper.getPropertyHelper(getProject());
+        new ResolvePropertyMap(
+            getProject(),
+            propertyHelper,
+           
propertyHelper.getExpanders()).resolveAllProperties(props);
     }
 
 }



------------------------------------------------------------
---------
To unsubscribe, e-mail: dev-unsubscribeant.apache.org
For additional commands, e-mail: dev-helpant.apache.org


[1]

about | contact  Other archives ( Real Estate discussion Medical topics )