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 2024/02/20 12:17:02 UTC
(sling-org-apache-sling-servlets-resolver) branch SLING-12255 created (now 058e28a)
This is an automated email from the ASF dual-hosted git repository.
joerghoh pushed a change to branch SLING-12255
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git
at 058e28a SLING-12255 fix formatting
This branch includes the following new commits:
new 058e28a SLING-12255 fix formatting
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(sling-org-apache-sling-servlets-resolver) 01/01: SLING-12255 fix formatting
Posted by jo...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
joerghoh pushed a commit to branch SLING-12255
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git
commit 058e28a65d23b0b255806ae2be0290a339b5d232
Author: Joerg Hoh <jo...@apache.org>
AuthorDate: Tue Feb 20 13:16:49 2024 +0100
SLING-12255 fix formatting
---
.../internal/helper/AbstractResourceCollector.java | 124 +++++++++---------
.../helper/AbstractResourceCollectorTest.java | 140 ++++++++++-----------
2 files changed, 132 insertions(+), 132 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 2179d37..11e4e18 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
@@ -45,10 +45,10 @@ import org.slf4j.LoggerFactory;
* script to handle a request to the given resource.
*/
public abstract class AbstractResourceCollector {
-
+
private static final Logger LOG = LoggerFactory.getLogger(AbstractResourceCollector.class);
protected static final String CACHE_KEY_CHILDREN_LIST = AbstractResourceCollector.class.getName() + ".childrenList";
-
+
protected static final String CACHE_KEY_RESOURCES = AbstractResourceCollector.class.getName() + ".resources";
// the most generic resource type to use. This may be null in which
@@ -65,7 +65,7 @@ public abstract class AbstractResourceCollector {
protected final String resourceSuperType;
protected final String[] executionPaths;
-
+
protected boolean useResourceCaching;
protected AbstractResourceCollector(final String baseResourceType,
@@ -110,10 +110,10 @@ public abstract class AbstractResourceCollector {
}
return o1.compareTo(o2);
});
-
-
+
+
List<Resource> locations = LocationCollector.getLocations(resourceType, resourceSuperType,
- baseResourceType, resolver, this.useResourceCaching);
+ baseResourceType, resolver, this.useResourceCaching);
locations.forEach(locationRes -> getWeightedResources(resources, locationRes));
List<Resource> result = new ArrayList<>(resources.size());
@@ -122,7 +122,7 @@ public abstract class AbstractResourceCollector {
}
protected abstract void getWeightedResources(final Set<WeightedResource> resources,
- final Resource location);
+ final Resource location);
/**
* Creates a {@link WeightedResource} and adds it to the set of resources.
@@ -143,7 +143,7 @@ public abstract class AbstractResourceCollector {
final int numSelectors,
final int methodPrefixWeight) {
final WeightedResource lr = new WeightedResource(resources.size(), resource,
- numSelectors, methodPrefixWeight);
+ numSelectors, methodPrefixWeight);
resources.add(lr);
}
@@ -159,8 +159,8 @@ public abstract class AbstractResourceCollector {
* synthetic resource representing the path location.
*/
protected final @NotNull Resource getResource(@NotNull final ResourceResolver resolver,
- @NotNull String path,
- boolean useCaching) {
+ @NotNull String path,
+ boolean useCaching) {
Resource res = getResourceOrNull(resolver,path, useCaching);
if (res == null) {
@@ -180,9 +180,9 @@ public abstract class AbstractResourceCollector {
}
final AbstractResourceCollector o = (AbstractResourceCollector)obj;
return stringEquals(resourceType, o.resourceType)
- && stringEquals(resourceSuperType, o.resourceSuperType)
- && stringEquals(extension, o.extension)
- && stringEquals(baseResourceType, o.baseResourceType);
+ && stringEquals(resourceSuperType, o.resourceSuperType)
+ && stringEquals(extension, o.extension)
+ && stringEquals(baseResourceType, o.baseResourceType);
}
@Override
@@ -210,7 +210,7 @@ public abstract class AbstractResourceCollector {
}
return null;
}
-
+
/**
* Retrieves the list of children for a resource; if useCaching is set to true, it is
* tried to read the result from a cache, and persist any non-cached result there as well.
@@ -220,17 +220,17 @@ public abstract class AbstractResourceCollector {
*/
@SuppressWarnings("unchecked")
static @NotNull List<Resource> getChildrenList(@NotNull Resource parent, boolean useCaching) {
-
+
List<Resource> childList = new ArrayList<>();
if (useCaching) {
-
+
// init the caching structure
Map<String,List<Resource>> childrenListMap = new HashMap<>();
Map<String,Object> cache = parent.getResourceResolver().getPropertyMap();
if (!cache.containsKey(CACHE_KEY_CHILDREN_LIST)) {
childrenListMap = new HashMap<>();
cache.put(CACHE_KEY_CHILDREN_LIST, childrenListMap);
-
+
} else {
Object entry = cache.get(CACHE_KEY_CHILDREN_LIST);
if (entry instanceof HashMap) {
@@ -241,7 +241,7 @@ public abstract class AbstractResourceCollector {
CACHE_KEY_CHILDREN_LIST, entry.getClass().getName());
}
}
-
+
// cache lookup
if (childrenListMap.containsKey(parent.getPath())) {
// this is a cache hit
@@ -259,23 +259,23 @@ public abstract class AbstractResourceCollector {
LOG.trace("getChildrenList cache-miss for {} with {} child resources", parent.getPath(),childList.size());
return childList;
}
-
+
/* Clear all caching structures
* @param resolver
*/
public static void clearCache(@NotNull ResourceResolver resolver) {
- Object o1 = resolver.getPropertyMap().get(CACHE_KEY_CHILDREN_LIST);
- if (o1 instanceof HashMap) {
- Map<String,List<Resource>> childrenListMap = (HashMap) o1;
- childrenListMap.clear();
- }
- Object o2 = resolver.getPropertyMap().get(CACHE_KEY_RESOURCES);
- if (o2 instanceof HashMap) {
- Map<String,Resource> resourceMap = (HashMap<String,Resource>) o2;
- resourceMap.clear();
- }
+ Object o1 = resolver.getPropertyMap().get(CACHE_KEY_CHILDREN_LIST);
+ if (o1 instanceof HashMap) {
+ Map<String,List<Resource>> childrenListMap = (HashMap) o1;
+ childrenListMap.clear();
+ }
+ Object o2 = resolver.getPropertyMap().get(CACHE_KEY_RESOURCES);
+ if (o2 instanceof HashMap) {
+ Map<String,Resource> resourceMap = (HashMap<String,Resource>) o2;
+ resourceMap.clear();
+ }
}
-
+
/**
* Resolvers a resource or null if there is no resource resolved from the given path.
* @param resolver the resourceResolver to use
@@ -284,38 +284,38 @@ public abstract class AbstractResourceCollector {
* @return a resource or null if no resource can be resolved
*/
public static @Nullable Resource getResourceOrNull(@NotNull ResourceResolver resolver, @NotNull String path, boolean useCaching) {
- Object o = resolver.getPropertyMap().get(CACHE_KEY_RESOURCES);
- if (useCaching) {
- if (o instanceof Map) {
- // cache structure already initialized
- final Map<String,Resource> resourceMap = (Map<String,Resource>) o;
- if (resourceMap.containsKey(path)) {
- // cache hit
- LOG.trace("getResourceOrNull cache-hit for path {}", path);
- return resourceMap.get(path);
- } else {
- // cache miss
- LOG.trace("getResourceOrNull cache-miss for path {}", path);
- final Resource resource = resolver.getResource(path);
- resourceMap.put(path, resource);
- return resource;
- }
- }
- if (o == null) {
- // cache structure not initialized yet
- LOG.trace("getResourceOrNull cache-miss on init for path {}", path);
- final Map<String,Resource> resourceMap = new HashMap<>();
- resolver.getPropertyMap().put(CACHE_KEY_RESOURCES, resourceMap);
- final Resource resource = resolver.getResource(path);
- resourceMap.put(path, resource);
- return resource;
- }
- // key already used by someone else
- LOG.debug("Found key '{}' used with the unexpected type '{}', not caching the resource for path {}",
- CACHE_KEY_RESOURCES, o.getClass().getName(), path);
- }
- return resolver.getResource(path);
+ Object o = resolver.getPropertyMap().get(CACHE_KEY_RESOURCES);
+ if (useCaching) {
+ if (o instanceof Map) {
+ // cache structure already initialized
+ final Map<String,Resource> resourceMap = (Map<String,Resource>) o;
+ if (resourceMap.containsKey(path)) {
+ // cache hit
+ LOG.trace("getResourceOrNull cache-hit for path {}", path);
+ return resourceMap.get(path);
+ } else {
+ // cache miss
+ LOG.trace("getResourceOrNull cache-miss for path {}", path);
+ final Resource resource = resolver.getResource(path);
+ resourceMap.put(path, resource);
+ return resource;
+ }
+ }
+ if (o == null) {
+ // cache structure not initialized yet
+ LOG.trace("getResourceOrNull cache-miss on init for path {}", path);
+ final Map<String,Resource> resourceMap = new HashMap<>();
+ resolver.getPropertyMap().put(CACHE_KEY_RESOURCES, resourceMap);
+ final Resource resource = resolver.getResource(path);
+ resourceMap.put(path, resource);
+ return resource;
+ }
+ // key already used by someone else
+ LOG.debug("Found key '{}' used with the unexpected type '{}', not caching the resource for path {}",
+ CACHE_KEY_RESOURCES, o.getClass().getName(), path);
+ }
+ return resolver.getResource(path);
}
-
+
}
diff --git a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollectorTest.java b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollectorTest.java
index d4bf5ed..d2b9a29 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollectorTest.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/internal/helper/AbstractResourceCollectorTest.java
@@ -35,11 +35,11 @@ import org.mockito.Mockito;
public class AbstractResourceCollectorTest {
-
+
@Rule
public SlingContext context = new SlingContext();
-
-
+
+
@Before
public void setup() {
context.create().resource("/parent");
@@ -47,114 +47,114 @@ public class AbstractResourceCollectorTest {
context.create().resource("/parent/child2");
context.create().resource("/parent/child3");
}
-
+
@Test
public void testGetChildrenWithCachingEnabled() {
-
+
Resource spy = Mockito.spy(context.resourceResolver().getResource("/parent"));
-
+
List<Resource> children = AbstractResourceCollector.getChildrenList(spy, true);
assertEquals(3,children.size());
children = AbstractResourceCollector.getChildrenList(spy, true);
Mockito.verify(spy,Mockito.times(1)).listChildren();
-
+
Map<String,List<Resource>> map = (Map<String, List<Resource>>)
- context.resourceResolver().getPropertyMap().get(AbstractResourceCollector.CACHE_KEY_CHILDREN_LIST);
+ context.resourceResolver().getPropertyMap().get(AbstractResourceCollector.CACHE_KEY_CHILDREN_LIST);
assertEquals(1, map.values().size());
AbstractResourceCollector.clearCache(context.resourceResolver());
assertEquals(0, map.values().size());
}
-
-
+
+
@Test
public void testGetChildrenWithCachingDisabled() {
-
+
Resource spy = Mockito.spy(context.resourceResolver().getResource("/parent"));
-
+
List<Resource> children = AbstractResourceCollector.getChildrenList(spy, false);
assertEquals(3,children.size());
children = AbstractResourceCollector.getChildrenList(spy, false);
Mockito.verify(spy,Mockito.times(2)).listChildren();
}
-
+
@Test
public void testGetChildrenWithCachingWithAlreadyUsedCacheKey() {
-
+
Resource spy = Mockito.spy(context.resourceResolver().getResource("/parent"));
String payload = "some payload";
context.resourceResolver().getPropertyMap().put(AbstractResourceCollector.CACHE_KEY_CHILDREN_LIST, payload);
-
+
List<Resource> children = AbstractResourceCollector.getChildrenList(spy, true);
assertEquals(3,children.size());
children = AbstractResourceCollector.getChildrenList(spy, true);
Mockito.verify(spy,Mockito.times(2)).listChildren();
assertEquals(payload, context.resourceResolver().getPropertyMap().get(AbstractResourceCollector.CACHE_KEY_CHILDREN_LIST));
-
+
AbstractResourceCollector.clearCache(context.resourceResolver());
assertEquals(payload, context.resourceResolver().getPropertyMap().get(AbstractResourceCollector.CACHE_KEY_CHILDREN_LIST));
}
-
-
+
+
@Test
public void testGetResourceOrNullWithCachingEnabled() {
- ResourceResolver spyResolver = Mockito.spy(context.resourceResolver());
-
- // not yet initialized
- Resource res1 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
- assertNotNull(res1);
- Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child1");
- // cache hit
- Resource res2 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
- assertNotNull(res2);
- Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child1");
- assertEquals(res1,res2);
-
- // cache miss
- Resource res3 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child2",true);
- assertNotNull(res2);
- Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child2");
-
- // cache miss
- assertNull(AbstractResourceCollector.getResourceOrNull(spyResolver, "/parent/nonExistingChild", true));
- assertNull(AbstractResourceCollector.getResourceOrNull(spyResolver, "/parent/nonExistingChild", true));
- Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/nonExistingChild");
-
- // when the cache is cleared, it should read again via the ResourceResolver
- AbstractResourceCollector.clearCache(spyResolver);
- Mockito.reset(spyResolver);
- Resource res4 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
- assertNotNull(res4);
- Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child1");
+ ResourceResolver spyResolver = Mockito.spy(context.resourceResolver());
+
+ // not yet initialized
+ Resource res1 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
+ assertNotNull(res1);
+ Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child1");
+ // cache hit
+ Resource res2 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
+ assertNotNull(res2);
+ Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child1");
+ assertEquals(res1,res2);
+
+ // cache miss
+ Resource res3 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child2",true);
+ assertNotNull(res2);
+ Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child2");
+
+ // cache miss
+ assertNull(AbstractResourceCollector.getResourceOrNull(spyResolver, "/parent/nonExistingChild", true));
+ assertNull(AbstractResourceCollector.getResourceOrNull(spyResolver, "/parent/nonExistingChild", true));
+ Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/nonExistingChild");
+
+ // when the cache is cleared, it should read again via the ResourceResolver
+ AbstractResourceCollector.clearCache(spyResolver);
+ Mockito.reset(spyResolver);
+ Resource res4 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
+ assertNotNull(res4);
+ Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child1");
}
-
+
@Test
public void testGetResourceOrNullWithAlreadyUsedCacheKey() {
- ResourceResolver spyResolver = Mockito.spy(context.resourceResolver());
-
- String payload = "some payload";
- spyResolver.getPropertyMap().put(AbstractResourceCollector.CACHE_KEY_RESOURCES, payload);
-
- // not yet initialized
- Resource res1 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
- Resource res2 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
- Mockito.verify(spyResolver,Mockito.times(2)).getResource("/parent/child1");
-
- assertEquals(payload, spyResolver.getPropertyMap().get(AbstractResourceCollector.CACHE_KEY_RESOURCES));
- AbstractResourceCollector.clearCache(spyResolver);
+ ResourceResolver spyResolver = Mockito.spy(context.resourceResolver());
+
+ String payload = "some payload";
+ spyResolver.getPropertyMap().put(AbstractResourceCollector.CACHE_KEY_RESOURCES, payload);
+
+ // not yet initialized
+ Resource res1 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
+ Resource res2 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",true);
+ Mockito.verify(spyResolver,Mockito.times(2)).getResource("/parent/child1");
+
+ assertEquals(payload, spyResolver.getPropertyMap().get(AbstractResourceCollector.CACHE_KEY_RESOURCES));
+ AbstractResourceCollector.clearCache(spyResolver);
assertEquals(payload, spyResolver.getPropertyMap().get(AbstractResourceCollector.CACHE_KEY_RESOURCES));
}
-
+
@Test
public void testGetResourceOrNullCachingDisabled() {
- ResourceResolver spyResolver = Mockito.spy(context.resourceResolver());
-
- Resource res1 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",false);
- assertNotNull(res1);
- Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child1");
- Resource res2 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",false);
- assertNotNull(res2);
- Mockito.verify(spyResolver,Mockito.times(2)).getResource("/parent/child1");
+ ResourceResolver spyResolver = Mockito.spy(context.resourceResolver());
+
+ Resource res1 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",false);
+ assertNotNull(res1);
+ Mockito.verify(spyResolver,Mockito.times(1)).getResource("/parent/child1");
+ Resource res2 = AbstractResourceCollector.getResourceOrNull(spyResolver,"/parent/child1",false);
+ assertNotNull(res2);
+ Mockito.verify(spyResolver,Mockito.times(2)).getResource("/parent/child1");
}
-
-
+
+
}