You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by as...@apache.org on 2014/11/17 12:06:47 UTC

svn commit: r1640141 - /sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java

Author: asanso
Date: Mon Nov 17 11:06:46 2014
New Revision: 1640141

URL: http://svn.apache.org/r1640141
Log:
SLING-3844 - Resolver.map() spends too much time looking up sling:alias

Modified:
    sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java

Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java?rev=1640141&r1=1640140&r2=1640141&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java Mon Nov 17 11:06:46 2014
@@ -437,7 +437,24 @@ public class ResourceResolverImpl extend
             while (path != null) {
                 String alias = null;
                 if (current != null && !path.endsWith(JCR_CONTENT_LEAF)) {
-                    alias = ResourceResolverContext.getProperty(current, PROP_ALIAS);
+                    if (factory.getMapEntries().isOptimizeAliasResolutionEnabled()) {
+                        logger.debug("map: Optimize Alias Resolution is Enabled");
+                        String parentPath = ResourceUtil.getParent(path);    
+                        if (parentPath != null) {         
+                            final Map<String, String> aliases = factory.getMapEntries().getAliasMap(parentPath);
+                            if (aliases!= null && aliases.containsValue(current.getName())) {
+                                for (String key:aliases.keySet()) {
+                                    if (current.getName().equals(aliases.get(key))) {
+                                        alias = key;
+                                        break;
+                                    }
+                                }
+                            } 
+                        }
+                    } else {
+                        logger.debug("map: Optimize Alias Resolution is Disabled");
+                        alias = ResourceResolverContext.getProperty(current, PROP_ALIAS);
+                    }                    
                 }
                 if (alias == null || alias.length() == 0) {
                     alias = ResourceUtil.getName(path);