Browse Source

embrace Java 1.4 and use LinkedHashMap instead of a Hashtable and a separate index to keep insert order

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@910874 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 15 years ago
parent
commit
e310776b9d
1 changed files with 14 additions and 25 deletions
  1. +14
    -25
      src/main/org/apache/tools/ant/taskdefs/Manifest.java

+ 14
- 25
src/main/org/apache/tools/ant/taskdefs/Manifest.java View File

@@ -27,11 +27,13 @@ import java.io.Reader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Vector;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.util.CollectionUtils;
import org.apache.tools.ant.util.FileUtils;
import org.apache.tools.ant.util.VectorSet;

/**
* Holds the data of a jar manifest.
@@ -399,10 +401,7 @@ public class Manifest {
private String name = null;

/** The section's attributes.*/
private Hashtable attributes = new Hashtable();

/** Index used to retain the attribute ordering */
private Vector attributeIndex = new VectorSet();
private Map attributes = new LinkedHashMap();

/**
* The name of the section; optional -default is the main section.
@@ -597,7 +596,7 @@ public class Manifest {
* key of an attribute of the section.
*/
public Enumeration getAttributeKeys() {
return attributeIndex.elements();
return CollectionUtils.asEnumeration(attributes.keySet().iterator());
}

/**
@@ -624,7 +623,6 @@ public class Manifest {
public void removeAttribute(String attributeName) {
String key = attributeName.toLowerCase();
attributes.remove(key);
attributeIndex.removeElement(key);
}

/**
@@ -732,9 +730,6 @@ public class Manifest {
}
String attributeKey = attribute.getKey();
attributes.put(attributeKey, attribute);
if (!attributeIndex.contains(attributeKey)) {
attributeIndex.addElement(attributeKey);
}
}

/**
@@ -782,10 +777,7 @@ public class Manifest {
private Section mainSection = new Section();

/** The named sections of this manifest */
private Hashtable sections = new Hashtable();

/** Index of sections - used to retain order of sections in manifest */
private Vector sectionIndex = new VectorSet();
private Map sections = new LinkedHashMap();

/**
* Construct a manifest from Ant's default manifest file.
@@ -899,9 +891,6 @@ public class Manifest {
throw new BuildException("Sections must have a name");
}
sections.put(sectionName, section);
if (!sectionIndex.contains(sectionName)) {
sectionIndex.addElement(sectionName);
}
}

/**
@@ -1042,9 +1031,9 @@ public class Manifest {
}
}

Enumeration e = sectionIndex.elements();
while (e.hasMoreElements()) {
String sectionName = (String) e.nextElement();
Iterator e = sections.keySet().iterator();
while (e.hasNext()) {
String sectionName = (String) e.next();
Section section = getSection(sectionName);
section.write(writer, flatten);
}
@@ -1080,9 +1069,9 @@ public class Manifest {
}

// create a vector and add in the warnings for all the sections
Enumeration e = sections.elements();
while (e.hasMoreElements()) {
Section section = (Section) e.nextElement();
Iterator e = sections.values().iterator();
while (e.hasNext()) {
Section section = (Section) e.next();
Enumeration e2 = section.getWarnings();
while (e2.hasMoreElements()) {
warnings.addElement(e2.nextElement());
@@ -1173,6 +1162,6 @@ public class Manifest {
* @return an Enumeration of section names
*/
public Enumeration getSectionNames() {
return sectionIndex.elements();
return CollectionUtils.asEnumeration(sections.keySet().iterator());
}
}

Loading…
Cancel
Save