summaryrefslogtreecommitdiff
path: root/src/main/org/apache/tools/ant/types/resources/Intersect.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/org/apache/tools/ant/types/resources/Intersect.java')
-rw-r--r--src/main/org/apache/tools/ant/types/resources/Intersect.java27
1 files changed, 13 insertions, 14 deletions
diff --git a/src/main/org/apache/tools/ant/types/resources/Intersect.java b/src/main/org/apache/tools/ant/types/resources/Intersect.java
index cdbeed0f7..667d259ae 100644
--- a/src/main/org/apache/tools/ant/types/resources/Intersect.java
+++ b/src/main/org/apache/tools/ant/types/resources/Intersect.java
@@ -22,11 +22,14 @@ import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.types.ResourceCollection;
+
/**
* ResourceCollection representing the intersection
* of multiple nested ResourceCollections.
@@ -38,27 +41,23 @@ public class Intersect extends BaseResourceCollectionContainer {
* Calculate the intersection of the nested ResourceCollections.
* @return a Collection of Resources.
*/
+ @Override
protected Collection<Resource> getCollection() {
List<ResourceCollection> rcs = getResourceCollections();
int size = rcs.size();
if (size < 2) {
- throw new BuildException("The intersection of " + size
- + " resource collection" + ((size == 1) ? "" : "s")
- + " is undefined.");
+ throw new BuildException(
+ "The intersection of %d resource %s is undefined.", size,
+ size == 1 ? "collection" : "collections");
}
+
+ final Function<ResourceCollection, Set<Resource>> toSet =
+ c -> c.stream().collect(Collectors.toSet());
+
Iterator<ResourceCollection> rc = rcs.iterator();
- Set<Resource> s = new LinkedHashSet<Resource>(collect(rc.next()));
- while (rc.hasNext()) {
- s.retainAll(collect(rc.next()));
- }
+ Set<Resource> s = new LinkedHashSet<>(toSet.apply(rc.next()));
+ rc.forEachRemaining(c -> s.retainAll(toSet.apply(c)));
return s;
}
- private Set<Resource> collect(ResourceCollection rc) {
- Set<Resource> result = new LinkedHashSet<Resource>();
- for (Resource r : rc) {
- result.add(r);
- }
- return result;
- }
}