Browse Source

Remove duplicate entries in Path.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267781 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 25 years ago
parent
commit
cf4c2f0187
3 changed files with 54 additions and 3 deletions
  1. +20
    -2
      src/main/org/apache/tools/ant/Path.java
  2. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/Java.java
  3. +33
    -0
      src/testcases/org/apache/tools/ant/PathTest.java

+ 20
- 2
src/main/org/apache/tools/ant/Path.java View File

@@ -107,11 +107,26 @@ public class Path {
*/
public void setLocation(String location) {
if (location != null && location.length() > 0) {
definition.addElement(translateFile(location));
String element = translateFile(location);
if (definition.indexOf(element) == -1) {
definition.addElement(element);
}
}
}


/**
* Append the contents of the other Path instance to this.
*/
public void append(Path other) {
String[] l = other.list();
for (int i=0; i<l.length; i++) {
if (definition.indexOf(l[i]) == -1) {
definition.addElement(l[i]);
}
}
}

/**
* Parses a path definition and creates single PathElements.
* @param path the path definition.
@@ -119,7 +134,10 @@ public class Path {
public void setPath(String path) {
final Vector elements = translatePath(path);
for (int i=0; i < elements.size(); i++) {
definition.addElement(elements.elementAt(i));
String element = (String) elements.elementAt(i);
if (definition.indexOf(element) == -1) {
definition.addElement(element);
}
}
}



+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/Java.java View File

@@ -130,7 +130,7 @@ public class Java extends Exec {
if (this.classpath == null) {
this.classpath = s;
} else {
this.classpath.setPath(s.toString());
this.classpath.append(s);
}
}


+ 33
- 0
src/testcases/org/apache/tools/ant/PathTest.java View File

@@ -167,6 +167,39 @@ public class PathTest extends TestCase {
p.setPath("\\d;\\e");
l = p.list();
assertEquals("5 after setPath", 5, l.length);
p.append(new Path("\\f"));
l = p.list();
assertEquals("6 after append", 6, l.length);
}

public void testEmpyPath() {
Path p = new Path("");
String[] l = p.list();
assertEquals("0 after construction", 0, l.length);
p.setLocation("");
l = p.list();
assertEquals("0 after setLocation", 0, l.length);
p.setPath("");
l = p.list();
assertEquals("0 after setPath", 0, l.length);
p.append(new Path());
l = p.list();
assertEquals("0 after append", 0, l.length);
}

public void testUnique() {
Path p = new Path("/a:/a");
String[] l = p.list();
assertEquals("1 after construction", 1, l.length);
p.setLocation("\\a");
l = p.list();
assertEquals("1 after setLocation", 1, l.length);
p.setPath("\\a;/a");
l = p.list();
assertEquals("1 after setPath", 1, l.length);
p.append(new Path("/a;\\a:\\a"));
l = p.list();
assertEquals("1 after append", 1, l.length);
}

}

Loading…
Cancel
Save