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;
+ }
+
+}