You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by st...@apache.org on 2004/07/15 18:41:12 UTC
cvs commit: ant/src/main/org/apache/tools/ant/taskdefs/optional EchoProperties.java
stevel 2004/07/15 09:41:12
Modified: src/main/org/apache/tools/ant/taskdefs/optional
EchoProperties.java
Log:
A little extra for those people trying to debug inheritance of properties & save stuff in CVS. The XML output of <echoproperties> is now *sorted*.
Revision Changes Path
1.27 +50 -6 ant/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java
Index: EchoProperties.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/EchoProperties.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- EchoProperties.java 9 Mar 2004 16:48:14 -0000 1.26
+++ EchoProperties.java 15 Jul 2004 16:41:12 -0000 1.27
@@ -29,6 +29,10 @@
import java.util.Hashtable;
import java.util.Properties;
import java.util.Vector;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.tools.ant.BuildException;
@@ -342,20 +346,60 @@
}
}
+ /**
+ * a tuple for the sort list.
+ */
+ private static class Tuple implements Comparable{
+ public String key;
+ public String value;
+
+ public Tuple(String key, String value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ /**
+ * Compares this object with the specified object for order.
+ * @param o the Object to be compared.
+ * @return a negative integer, zero, or a positive integer as this object is
+ * less than, equal to, or greater than the specified object.
+ * @throws ClassCastException if the specified object's type prevents it
+ * from being compared to this Object.
+ */
+ public int compareTo(Object o) {
+ Tuple that=(Tuple) o;
+ return key.compareTo(that.key);
+ }
+ }
+
+ private List sortProperties(Properties props) {
+ //sort the list. Makes SCM and manual diffs easier.
+ List sorted = new ArrayList(props.size());
+ Enumeration e = props.propertyNames();
+ while (e.hasMoreElements()) {
+ String name = (String) e.nextElement();
+ sorted.add(new Tuple(name, props.getProperty(name)));
+ }
+ Collections.sort(sorted);
+ return sorted;
+ }
+
protected void xmlSaveProperties(Properties props,
OutputStream os) throws IOException {
// create XML document
Document doc = getDocumentBuilder().newDocument();
Element rootElement = doc.createElement(PROPERTIES);
+ List sorted=sortProperties(props);
+
+
// output properties
- String name;
- Enumeration e = props.propertyNames();
- while (e.hasMoreElements()) {
- name = (String) e.nextElement();
+ Iterator iten = sorted.iterator();
+ while (iten.hasNext()) {
+ Tuple tuple = (Tuple) iten.next();
Element propElement = doc.createElement(PROPERTY);
- propElement.setAttribute(ATTR_NAME, name);
- propElement.setAttribute(ATTR_VALUE, props.getProperty(name));
+ propElement.setAttribute(ATTR_NAME, tuple.key);
+ propElement.setAttribute(ATTR_VALUE, tuple.value);
rootElement.appendChild(propElement);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org