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

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

commit a5f2be110506de5ee7a473e8a4ee61fe2c6bec26
Author: Robert Munteanu <[email protected]>
AuthorDate: Mon Aug 17 11:44:55 2020 +0200

    SLING-9620 - ResourceMapperImpl.getAllMappings does not respect 
multi-valued sling:alias
    
    Read mult-valued aliases also when optimised alias resolution is enabled.
---
 .../impl/mapping/ResourceMapperImpl.java               | 18 ++++++++----------
 .../impl/mapping/ResourceMapperImplTest.java           |  5 -----
 2 files changed, 8 insertions(+), 15 deletions(-)

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.Collections;
 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 @@ public class ResourceMapperImpl implements ResourceMapper 
{
             
             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.is;
 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.resourceresolver.impl.ResourceResolverFactoryActivator;
 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 @@ public class ResourceMapperImplTest {
     @Test
     public void mapResourceWithMultivaluedAlias() {
         
-        assumeFalse(optimiseAliasResolution);
-
         ExpectedMappings.existingResource("/there-multiple")
                 .singleMapping("/alias-value-3")
                 .singleMappingWithRequest("/app/alias-value-3")

Reply via email to