SLING-9620 - ResourceMapperImpl.getAllMappings does not respect multi-valued sling:alias

Read mult-valued aliases also when optimised alias resolution is enabled.
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java
index 89f2859..1bd69b2 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java
@@ -25,7 +25,9 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.function.UnaryOperator;
+import java.util.stream.Collectors;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -226,18 +228,14 @@
             
             final Map<String, String> aliases = mapEntries.getAliasMap(parentPath);
             
-            if ( aliases == null ) 
+            if ( aliases == null || !aliases.containsValue(current.getName()) ) 
                 return Collections.emptyList();
             
-            if ( aliases.containsValue(current.getName()) ) {
-                for ( Map.Entry<String,String> entry : aliases.entrySet() ) {
-                    if (current.getName().equals(entry.getValue())) {
-                        // TODO - support multi-valued entries
-                        return Collections.singletonList(entry.getKey());
-                    }
-                }
-            }
-            return Collections.emptyList();
+            return aliases.entrySet().stream()
+                .filter( e -> current.getName().contentEquals(e.getValue()) )
+                .map( Entry::getKey )
+                .collect(Collectors.toList());
+            
         } else {
             logger.debug("map: Optimize Alias Resolution is Disabled");
             String[] aliases = ResourceResolverControl.getProperty(current, ResourceResolverImpl.PROP_ALIAS, String[].class);
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImplTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImplTest.java
index e267be5..77f6ca2 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImplTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImplTest.java
@@ -25,12 +25,10 @@
 import static org.hamcrest.Matchers.notNullValue;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
-import static org.junit.Assume.assumeFalse;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -47,7 +45,6 @@
 import org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl;
 import org.apache.sling.spi.resource.provider.ResourceProvider;
 import org.apache.sling.testing.mock.osgi.junit.OsgiContext;
-import org.jetbrains.annotations.NotNull;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -208,8 +205,6 @@
     @Test
     public void mapResourceWithMultivaluedAlias() {
         
-        assumeFalse(optimiseAliasResolution);
-
         ExpectedMappings.existingResource("/there-multiple")
                 .singleMapping("/alias-value-3")
                 .singleMappingWithRequest("/app/alias-value-3")