This is an automated email from the ASF dual-hosted git repository.

reschke pushed a commit to branch SLING-12879
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git

commit 096cb0e8fde8d4cbd2f37cf7dfbbd149c62c3501
Author: Julian Reschke <[email protected]>
AuthorDate: Thu Aug 7 08:45:52 2025 +0100

    SLING-12879: add wiring to handler and test class (wip)
---
 .../impl/CommonResourceResolverFactoryImpl.java       |  6 ++++++
 .../resourceresolver/impl/mapping/AliasHandler.java   |  8 +++++++-
 .../impl/mapping/MapConfigurationProvider.java        |  4 +++-
 .../impl/mapping/AliasMapEntriesTest.java             | 19 ++++++++++++++++---
 4 files changed, 32 insertions(+), 5 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
 
b/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
index 935fe244..3428e8c6 100644
--- 
a/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
+++ 
b/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
@@ -397,6 +397,12 @@ public class CommonResourceResolverFactoryImpl implements 
MapConfigurationProvid
         return 
this.activator.getVanityPathConfigurer().isVanityPathCacheInitInBackground();
     }
 
+    @Override
+    public boolean isAliasCacheInitInBackground() {
+        // wiring to config will be added later
+        return false;
+    }
+
     /**
      * get's the ServiceTracker of the ResourceAccessSecurity service
      */
diff --git 
a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/AliasHandler.java
 
b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/AliasHandler.java
index 6b0e8d53..f8f5e0f0 100644
--- 
a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/AliasHandler.java
+++ 
b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/AliasHandler.java
@@ -129,7 +129,13 @@ class AliasHandler {
             // optimization made in SLING-2521
             if (this.factory.isOptimizeAliasResolutionEnabled()) {
                 AliasInitializer ai = new AliasInitializer();
-                ai.run();
+                if (this.factory.isAliasCacheInitInBackground()) {
+                    this.log.debug("bg init starting");
+                    Thread aiinit = new Thread(ai, "AliasInitializer");
+                    aiinit.start();
+                } else {
+                    ai.run();
+                }
             }
 
             doUpdateConfiguration.run();
diff --git 
a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapConfigurationProvider.java
 
b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapConfigurationProvider.java
index b731aed6..aab6e86b 100644
--- 
a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapConfigurationProvider.java
+++ 
b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapConfigurationProvider.java
@@ -57,9 +57,11 @@ public interface MapConfigurationProvider extends 
ResourceResolverFactory {
 
     int getVanityBloomFilterMaxBytes();
 
+    boolean hasVanityPathPrecedence();
+
     boolean isOptimizeAliasResolutionEnabled();
 
-    boolean hasVanityPathPrecedence();
+    boolean isAliasCacheInitInBackground();
 
     Map<String, Object> getServiceUserAuthenticationInfo(final String 
subServiceName) throws LoginException;
 
diff --git 
a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/AliasMapEntriesTest.java
 
b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/AliasMapEntriesTest.java
index 6923a1c0..3b63302c 100644
--- 
a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/AliasMapEntriesTest.java
+++ 
b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/AliasMapEntriesTest.java
@@ -47,6 +47,8 @@ import 
org.apache.sling.resourceresolver.impl.ResourceResolverMetrics;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.mockito.stubbing.Answer;
@@ -67,6 +69,7 @@ import static org.mockito.Mockito.when;
 /**
  * Tests related to {@link MapEntries} that are specific to aliases.
  */
+@RunWith(Parameterized.class)
 public class AliasMapEntriesTest extends AbstractMappingMapEntriesTest {
 
     private MapEntries mapEntries;
@@ -92,10 +95,19 @@ public class AliasMapEntriesTest extends 
AbstractMappingMapEntriesTest {
 
     private static final Runnable NOOP = () -> {};
 
-    public AliasMapEntriesTest() {}
-
     private AutoCloseable mockCloser;
 
+    private final boolean isAliasCacheInitInBackground;
+
+    @Parameterized.Parameters(name = "isAliasCacheInitInBackground={0}")
+    public static Collection<Object[]> data() {
+        return List.of(new Object[][] {{false}, {true}});
+    }
+
+    public AliasMapEntriesTest(boolean isAliasCacheInitInBackground) {
+        this.isAliasCacheInitInBackground = isAliasCacheInitInBackground;
+    }
+
     @Override
     @SuppressWarnings({"unchecked"})
     @Before
@@ -107,7 +119,8 @@ public class AliasMapEntriesTest extends 
AbstractMappingMapEntriesTest {
         
when(resourceResolverFactory.getServiceResourceResolver(any(Map.class))).thenReturn(resourceResolver);
         when(resourceResolverFactory.isVanityPathEnabled()).thenReturn(true);
         
when(resourceResolverFactory.getVanityPathConfig()).thenReturn(List.of());
-        
when(resourceResolverFactory.isOptimizeAliasResolutionEnabled()).thenReturn(true);
+        
when(resourceResolverFactory.isOptimizeAliasResolutionEnabled()).thenReturn(isAliasCacheInitInBackground);
+        
when(resourceResolverFactory.isAliasCacheInitInBackground()).thenReturn(true);
         when(resourceResolverFactory.getObservationPaths()).thenReturn(new 
Path[] {new Path("/")});
         
when(resourceResolverFactory.getMapRoot()).thenReturn(MapEntries.DEFAULT_MAP_ROOT);
         
when(resourceResolverFactory.getMaxCachedVanityPathEntries()).thenReturn(-1L);

Reply via email to