You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by jo...@apache.org on 2022/09/24 17:42:13 UTC

[sling-org-apache-sling-servlets-resolver] 01/05: introduce LocationCollector

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 <jo...@joerghoh.de>
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;
+    }
+
+}