This is an automated email from the ASF dual-hosted git repository. joerghoh pushed a commit to branch SLING-11558-remove-iterator in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git
commit fb96745996a6dc5491609ea8e4a8550a75512136 Author: Jörg Hoh <[email protected]> AuthorDate: Sat Sep 24 10:42:52 2022 +0200 introduce LocationCollector --- .../internal/helper/AbstractResourceCollector.java | 11 +++++---- .../internal/helper/LocationCollector.java | 26 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java b/src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java index 03c0535..4772e88 100644 --- a/src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java +++ b/src/main/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollector.java @@ -95,11 +95,10 @@ public abstract class AbstractResourceCollector { } return o1.compareTo(o2); }); - final Iterator<String> locations = new LocationIterator(resourceType, resourceSuperType, - baseResourceType, resolver); - while (locations.hasNext()) { - final String location = locations.next(); - + + + List<String> locations = LocationCollector.getLocations(resourceType, resourceSuperType, baseResourceType, resolver); + locations.forEach(location -> { // get the location resource, use a synthetic resource if there // is no real location. There may still be children at this // location @@ -111,7 +110,7 @@ public abstract class AbstractResourceCollector { } final Resource locationRes = getResource(resolver, path); getWeightedResources(resources, locationRes); - } + }); List<Resource> result = new ArrayList<>(resources.size()); result.addAll(resources); diff --git a/src/main/java/org/apache/sling/servlets/resolver/internal/helper/LocationCollector.java b/src/main/java/org/apache/sling/servlets/resolver/internal/helper/LocationCollector.java new file mode 100644 index 0000000..ff265e4 --- /dev/null +++ b/src/main/java/org/apache/sling/servlets/resolver/internal/helper/LocationCollector.java @@ -0,0 +1,26 @@ +package org.apache.sling.servlets.resolver.internal.helper; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.apache.sling.api.resource.ResourceResolver; + +public class LocationCollector { + + + public static List<String> getLocations(String resourceType, String resourceSuperType, String baseResourceType, + ResourceResolver resolver) { + + List<String> result = new ArrayList<>(); + + final Iterator<String> locations = new LocationIterator(resourceType, resourceSuperType, + baseResourceType, resolver); + + while (locations.hasNext()) { + result.add(locations.next()); + } + return result; + } + +}
