-
Notifications
You must be signed in to change notification settings - Fork 229
Expand file tree
/
Copy pathNameUnionAntType.java
More file actions
34 lines (31 loc) · 1.16 KB
/
NameUnionAntType.java
File metadata and controls
34 lines (31 loc) · 1.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package org.python.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.types.ResourceCollection;
import org.apache.tools.ant.types.resources.BaseResourceCollectionContainer;
/**
* Unions several resource collections by the name of their contained resources.
*/
public class NameUnionAntType extends BaseResourceCollectionContainer {
@SuppressWarnings("unchecked")
@Override
protected Collection<Resource> getCollection() {
List<ResourceCollection> collections = getResourceCollections();
// preserve order-encountered using a list; keep track of the items with a set
Set<String> seenNames = Generic.set();
List<Resource> union = new ArrayList();
for (ResourceCollection rc : collections) {
for (Iterator<Resource> resources = rc.iterator(); resources.hasNext();) {
Resource r = resources.next();
if (seenNames.add(r.getName())) {
union.add(r);
}
}
}
return union;
}
}