Revert "SLING-7544 - Make optimized alias lookup non-blocking"

This reverts commit 0f7d6668cd746d7fff9e08df54f3fd1f4f2846b1.

This commit introduces a race condition when new aliases get
added while the intialization was still running. Reverting
pending a better solution.
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 63d6236..11c6b24 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/CommonResourceResolverFactoryImpl.java
@@ -555,14 +555,4 @@
             }
         }
     }
-
-	@Override
-	public boolean isAliasMapInitialized() {
-		return mapEntries.isAliasMapInitialized();
-	}
-
-	@Override
-	public boolean isForceNoAliasTraversal() {
-		return this.activator.isForceNoAliasTraversal();
-	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
index ced1fb8..5984363 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java
@@ -197,10 +197,6 @@
         return this.config.resource_resolver_optimize_alias_resolution();
     }
 
-	public boolean isForceNoAliasTraversal() {
-		return  this.config.force_no_alias_traversal();
-	}
-
     public boolean isLogUnclosedResourceResolvers() {
         return this.config.resource_resolver_log_unclosed();
     }
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryConfig.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryConfig.java
index 2666540..a0aa53f 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryConfig.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryConfig.java
@@ -149,12 +149,6 @@
                      " and on the alias update time if the number of aliases is huge (over 10000).")
     boolean resource_resolver_optimize_alias_resolution() default true;
 
-
-    @AttributeDefinition(name = "Force no traversal for optimized alias lookup",
-        description = "When enabled the lookup of alias map for optimized resolution enforces retry until an index is present"+
-				  "and does not traverse repository.")
-	boolean force_no_alias_traversal() default true;
-
     @AttributeDefinition(name = "Allowed Vanity Path Location",
         description ="This setting can contain a list of path prefixes, e.g. /libs/, /content/. If " +
                     "such a list is configured, only vanity paths from resources starting with this prefix " +
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
index 02b3be7..fca270e 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java
@@ -476,7 +476,7 @@
             while (path != null) {
                 String alias = null;
                 if (current != null && !path.endsWith(JCR_CONTENT_LEAF)) {
-                    if (factory.isOptimizeAliasResolutionEnabled() && factory.isAliasMapInitialized()) {
+                    if (factory.isOptimizeAliasResolutionEnabled()) {
                         logger.debug("map: Optimize Alias Resolution is Enabled");
                         String parentPath = ResourceUtil.getParent(path);
                         if (parentPath != null) {
@@ -989,7 +989,7 @@
 
         // we do not have a child with the exact name, so we look for
         // a child, whose alias matches the childName
-        if (factory.isOptimizeAliasResolutionEnabled() && factory.isAliasMapInitialized()){
+        if (factory.isOptimizeAliasResolutionEnabled()){
             logger.debug("getChildInternal: Optimize Alias Resolution is Enabled");
             //optimization made in SLING-2521
             final Map<String, String> aliases = factory.getMapEntries().getAliasMap(parent.getPath());
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 82c5827..aeb437c 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
@@ -54,8 +54,6 @@
 
     boolean isOptimizeAliasResolutionEnabled();
 
-    boolean isAliasMapInitialized();
-
     boolean hasVanityPathPrecedence();
 
     Map<String, Object> getServiceUserAuthenticationInfo(final String subServiceName) throws LoginException;
@@ -80,6 +78,4 @@
      * If <code>null</code> is returned, all paths are allowed.
      */
     List<VanityPathConfig> getVanityPathConfig();
-
-	boolean isForceNoAliasTraversal();
 }
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
index cfa261a..089c3bf 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
@@ -25,7 +25,6 @@
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -53,9 +52,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.sling.api.SlingConstants;
-import org.apache.sling.api.SlingException;
 import org.apache.sling.api.resource.LoginException;
-import org.apache.sling.api.resource.QuerySyntaxException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
@@ -78,11 +75,9 @@
 public class MapEntries implements
     MapEntriesHandler,
     ResourceChangeListener,
-    ExternalResourceChangeListener,
-    AutoCloseable {
+    ExternalResourceChangeListener {
 
     private static final String JCR_CONTENT = "jcr:content";
-    private static final int TRAVERSAL_RETRY_INTERVAL = 30000;
 
     private static final String JCR_CONTENT_PREFIX = "jcr:content/";
 
@@ -113,10 +108,6 @@
 
     private static final String JCR_SYSTEM_PREFIX = "/jcr:system/";
 
-    final static String ALIAS_QUERY_DEFAULT = "SELECT sling:alias FROM nt:base WHERE sling:alias IS NOT NULL";
-
-    final static String ALIAS_QUERY_NO_TRAVERSAL = ALIAS_QUERY_DEFAULT + " option(traversal fail)";
-
     static final String ANY_SCHEME_HOST = "[^/]+/[^/]+";
 
     /** default log */
@@ -136,7 +127,7 @@
 
     private Map <String,List <String>> vanityTargets;
 
-    private volatile Map<String, Map<String, String>> aliasMap;
+    private Map<String, Map<String, String>> aliasMap;
 
     private final ReentrantLock initializing = new ReentrantLock();
 
@@ -150,8 +141,6 @@
 
     private boolean updateBloomFilterFile = false;
 
-    private Thread aliasTraversal = null;
-
     @SuppressWarnings({ "unchecked" })
     public MapEntries(final MapConfigurationProvider factory, final BundleContext bundleContext, final EventAdmin eventAdmin)
         throws LoginException, IOException {
@@ -163,7 +152,7 @@
         this.resolveMapsMap = Collections.singletonMap(GLOBAL_LIST_KEY, (List<MapEntry>)Collections.EMPTY_LIST);
         this.mapMaps = Collections.<MapEntry> emptyList();
         this.vanityTargets = Collections.<String,List <String>>emptyMap();
-        this.aliasMap = Collections.emptyMap();
+        this.aliasMap = Collections.<String, Map<String, String>>emptyMap();
 
         doInit();
 
@@ -200,15 +189,10 @@
 
             final Map<String, List<MapEntry>> newResolveMapsMap = new ConcurrentHashMap<>();
 
-            aliasMap = Collections.emptyMap();
             //optimization made in SLING-2521
             if (this.factory.isOptimizeAliasResolutionEnabled()) {
-		aliasTraversal = new Thread(new Runnable(){
-				public void run() {
-					aliasMap = loadAliases(resolver);
-					}
-				});
-		aliasTraversal.start();
+                final Map<String, Map<String, String>> aliasMap = this.loadAliases(resolver);
+                this.aliasMap = aliasMap;
             }
 
             this.resolveMapsMap = newResolveMapsMap;
@@ -278,10 +262,6 @@
 
     }
 
-    protected int getTraversalRetryInterval(){
-	return TRAVERSAL_RETRY_INTERVAL;
-    }
-
     private boolean addResource(final String path, final AtomicBoolean resolverRefreshed) {
         this.initializing.lock();
 
@@ -654,16 +634,6 @@
         return aliasMap.get(parentPath);
     }
 
-	@Override
-	public boolean isAliasMapInitialized() {
-		// since loading the aliases is equivalent to replacing the empty map
-		// with another instance, and the reference is volatile, it's safe
-		// to equate initialization being done with the empty map being replaced
-		// note that it's not provably safe to check the map size, as we might
-		// enter the scenario where there are no aliases
-		return aliasMap != Collections.<String,Map<String,String>> emptyMap();
-	}
-
     /**
      * get the MapEnty containing all the nodes having a specific vanityPath
      */
@@ -1057,59 +1027,16 @@
      */
     private Map<String, Map<String, String>> loadAliases(final ResourceResolver resolver) {
         final Map<String, Map<String, String>> map = new ConcurrentHashMap<>();
-		String queryString = this.factory.isForceNoAliasTraversal() ? ALIAS_QUERY_NO_TRAVERSAL : ALIAS_QUERY_DEFAULT;
-		while (true){
-	        try {
-		        final Iterator<Resource> i = resolver.findResources(queryString, "sql");
-		        while (i.hasNext()) {
-		            final Resource resource = i.next();
-		            loadAlias(resource, map);
-		        }
-		        break;
-		} catch (SlingException e) {
-			Throwable cause = unwrapThrowable(e);
-			if (cause instanceof IllegalArgumentException && ALIAS_QUERY_NO_TRAVERSAL.equals(queryString)) {
-					log.debug(
-						"Expected index not available yet - will retry", e);
-					try {
-						TimeUnit.MILLISECONDS.sleep(getTraversalRetryInterval());
-					} catch (InterruptedException ex) {
-						log.warn("Interrupted while sleeping", ex);
-					}
-				} else if (cause instanceof ParseException) {
-				if (ALIAS_QUERY_NO_TRAVERSAL.equals(queryString)) {
-						log.warn("Traversal fail option set but query not accepted by queryengine, falling back to allowing traversal as queryengine might not support option", e);
-						queryString = ALIAS_QUERY_DEFAULT;
-					} else {
-						log.error("Queryengine couldn't parse query - interrupting loading of aliasmap",e);
-						break;
-					}
-					try {
-						TimeUnit.MILLISECONDS.sleep(getTraversalRetryInterval());
-					} catch (InterruptedException ex) {
-						log.warn("Interrupted while sleeping", ex);
-					}
-
-
-				} else {
-					log.error("QueryEngine not able to process query {} ", queryString, e);
-					break;
-				}
-		}
-		}
+        final String queryString = "SELECT sling:alias FROM nt:base WHERE sling:alias IS NOT NULL";
+        final Iterator<Resource> i = resolver.findResources(queryString, "sql");
+        while (i.hasNext()) {
+            final Resource resource = i.next();
+            loadAlias(resource, map);
+        }
         return map;
     }
 
     /**
-     * Extract root cause of exception
-     * @param e {@code Throwable} to be checked
-     * @return Root {@code Throwable}
-     */
-    private Throwable unwrapThrowable(Throwable e) {
-		return e.getCause() == null ? e : unwrapThrowable(e.getCause());
-	}
-
-	/**
      * Load alias given a resource
      */
     private boolean loadAlias(final Resource resource, Map<String, Map<String, String>> map) {
@@ -1625,11 +1552,4 @@
         }
     }
 
-	@Override
-	public void close() throws Exception {
-		if (aliasTraversal != null) {
-			aliasTraversal.interrupt();
-		}
-	}
-
 }
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesHandler.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesHandler.java
index e445927..df19e5d 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesHandler.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesHandler.java
@@ -51,11 +51,6 @@
         public Map<String, String> getAliasMap(String parentPath) {
             return Collections.emptyMap();
         }
-
-		@Override
-		public boolean isAliasMapInitialized() {
-			return false;
-		}
     };
 
     Map<String, String> getAliasMap(String parentPath);
@@ -72,6 +67,4 @@
      * This is for the web console plugin
      */
     List<MapEntry> getResolveMaps();
-
-	boolean isAliasMapInitialized();
 }
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
index 330b103..be2dfd5 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
@@ -235,12 +235,6 @@
             }
 
             @Override
-            public boolean force_no_alias_traversal() {
-                return true;
-            }
-
-
-            @Override
             public String[] resource_resolver_mapping() {
                 return new String[] { "/:/",
                         "/content/:/", "/system/docroot/:/", "/content.html-/$" };
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
index 490196b..8864fb8 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
@@ -25,7 +25,6 @@
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -33,7 +32,6 @@
 import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -46,7 +44,6 @@
 import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.Callable;
-import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
@@ -56,7 +53,6 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
-import org.apache.sling.api.SlingException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
@@ -70,7 +66,6 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
@@ -129,7 +124,6 @@
         when(resourceResolverFactory.isVanityPathEnabled()).thenReturn(true);
         when(resourceResolverFactory.getVanityPathConfig()).thenReturn(configs);
         when(resourceResolverFactory.isOptimizeAliasResolutionEnabled()).thenReturn(true);
-        when(resourceResolverFactory.isForceNoAliasTraversal()).thenReturn(true);
         when(resourceResolverFactory.getObservationPaths()).thenReturn(new Path[] {new Path("/")});
         when(resourceResolverFactory.getMapRoot()).thenReturn(MapEntries.DEFAULT_MAP_ROOT);
         when(resourceResolverFactory.getMaxCachedVanityPathEntries()).thenReturn(-1L);
@@ -150,8 +144,8 @@
     }
 
 
-    @Test(timeout = 1000)
-    public void test_simple_alias_support() throws InterruptedException {
+    @Test
+    public void test_simple_alias_support() {
         Resource parent = mock(Resource.class);
         when(parent.getPath()).thenReturn("/parent");
 
@@ -175,19 +169,14 @@
 
         mapEntries.doInit();
 
-        // looping check for completion of aliasMap as it is calculated asynchronously
-		while (!mapEntries.isAliasMapInitialized()) {
-			Thread.sleep(10);
-		}
-
         Map<String, String> aliasMap = mapEntries.getAliasMap("/parent");
         assertNotNull(aliasMap);
         assertTrue(aliasMap.containsKey("alias"));
         assertEquals("child", aliasMap.get("alias"));
     }
 
-	@Test(timeout = 1000)
-    public void test_that_duplicate_alias_doesnt_replace_first_alias() throws InterruptedException {
+    @Test
+    public void test_that_duplicate_alias_doesnt_replace_first_alias() {
         Resource parent = mock(Resource.class);
         when(parent.getPath()).thenReturn("/parent");
 
@@ -217,11 +206,6 @@
 
         mapEntries.doInit();
 
-        // looping check for completion of aliasMap as it is calculated asynchronously
-		while (!mapEntries.isAliasMapInitialized()) {
-			Thread.sleep(10);
-		}
-
         Map<String, String> aliasMap = mapEntries.getAliasMap("/parent");
         assertNotNull(aliasMap);
         assertTrue(aliasMap.containsKey("alias"));
@@ -1651,166 +1635,6 @@
         assertNull(aliasMapEntry);
     }
 
-    @Test(timeout = 1000)
-    public void test_delayed_optimized_aliaslookup() throws Exception {
-	final Method addResource = MapEntries.class.getDeclaredMethod("addResource", String.class, AtomicBoolean.class);
-        addResource.setAccessible(true);
-
-        mapEntries = new MapEntries(resourceResolverFactory, bundleContext, eventAdmin);
-
-        Resource parent = mock(Resource.class);
-        when(parent.getPath()).thenReturn("/parent");
-
-        final Resource result = mock(Resource.class);
-        when(resourceResolver.getResource("/parent/child")).thenReturn(result);
-        when(result.getParent()).thenReturn(parent);
-        when(result.getPath()).thenReturn("/parent/child");
-        when(result.getName()).thenReturn("child");
-        when(result.getValueMap()).thenReturn(buildValueMap(ResourceResolverImpl.PROP_ALIAS, "alias"));
-
-        addResource.invoke(mapEntries, "/parent/child", new AtomicBoolean());
-
-        final CountDownLatch latch = new CountDownLatch(1);
-
-        when(resourceResolver.findResources(anyString(), eq("sql"))).thenAnswer(new Answer<Iterator<Resource>>() {
-
-            @Override
-            public Iterator<Resource> answer(InvocationOnMock invocation) throws Throwable {
-		latch.await();
-                if (invocation.getArguments()[0].toString().contains(ResourceResolverImpl.PROP_ALIAS)) {
-                    return Arrays.asList(result, result).iterator();
-                } else {
-                    return Collections.<Resource> emptySet().iterator();
-                }
-            }
-        });
-
-        mapEntries.doInit();
-
-        assertFalse(mapEntries.isAliasMapInitialized());
-        latch.countDown();
-        // looping check for completion of aliasMap as it is calculated asynchronously
-		while (!mapEntries.isAliasMapInitialized()) {
-			Thread.sleep(10);
-		}
-        assertTrue(mapEntries.isAliasMapInitialized());
-        Map<String, String> aliasMap = mapEntries.getAliasMap("/parent");
-        assertEquals(1, aliasMap.size());
-        assertNotNull(aliasMap);
-        assertEquals(1, aliasMap.size());
-        assertEquals("child", aliasMap.get("alias"));
-    }
-
-    @Test(timeout = 1000)
-    public void test_delayed_optimized_aliaslookup_traversalfail() throws Exception {
-	final Method addResource = MapEntries.class.getDeclaredMethod("addResource", String.class, AtomicBoolean.class);
-        addResource.setAccessible(true);
-
-        mapEntries = Mockito.spy(new MapEntries(resourceResolverFactory, bundleContext, eventAdmin));
-        doReturn(100).when(mapEntries).getTraversalRetryInterval();
-
-        Resource parent = mock(Resource.class);
-        when(parent.getPath()).thenReturn("/parent");
-
-        final Resource result = mock(Resource.class);
-        when(resourceResolver.getResource("/parent/child")).thenReturn(result);
-        when(result.getParent()).thenReturn(parent);
-        when(result.getPath()).thenReturn("/parent/child");
-        when(result.getName()).thenReturn("child");
-        when(result.getValueMap()).thenReturn(buildValueMap(ResourceResolverImpl.PROP_ALIAS, "alias"));
-
-        addResource.invoke(mapEntries, "/parent/child", new AtomicBoolean());
-
-        final CountDownLatch latch = new CountDownLatch(2);
-
-        ArgumentCaptor<String> queryCaptor = ArgumentCaptor.forClass(String.class);
-        when(resourceResolver.findResources(queryCaptor.capture(), eq("sql"))).thenAnswer(new Answer<Iterator<Resource>>() {
-
-            @Override
-            public Iterator<Resource> answer(InvocationOnMock invocation) throws Throwable {
-		if (latch.getCount() > 0){
-			latch.countDown();
-			throw new SlingException("Query couldn't be satified due to ", new IllegalArgumentException("Traversal") );
-		} else {
-		            if (invocation.getArguments()[0].toString().contains(ResourceResolverImpl.PROP_ALIAS)) {
-		                return Arrays.asList(result, result).iterator();
-		            } else {
-		                return Collections.<Resource> emptySet().iterator();
-		            }
-		}
-            }
-        });
-
-        mapEntries.doInit();
-
-        assertFalse(mapEntries.isAliasMapInitialized());
-        latch.countDown();
-        // looping check for completion of aliasMap as it is calculated asynchronously
-		while (!mapEntries.isAliasMapInitialized()) {
-			Thread.sleep(10);
-		}
-        assertTrue(queryCaptor.getValue().contains("traversal fail"));
-        assertTrue(mapEntries.isAliasMapInitialized());
-        Map<String, String> aliasMap = mapEntries.getAliasMap("/parent");
-        assertEquals(1, aliasMap.size());
-        assertNotNull(aliasMap);
-        assertEquals(1, aliasMap.size());
-        assertEquals("child", aliasMap.get("alias"));
-    }
-
-    @Test
-    public void test_aliaslookup_traversalfail_not_supported() throws Exception {
-	final Method addResource = MapEntries.class.getDeclaredMethod("addResource", String.class, AtomicBoolean.class);
-        addResource.setAccessible(true);
-
-        mapEntries = Mockito.spy(new MapEntries(resourceResolverFactory, bundleContext, eventAdmin));
-        doReturn(100).when(mapEntries).getTraversalRetryInterval();
-
-        Resource parent = mock(Resource.class);
-        when(parent.getPath()).thenReturn("/parent");
-
-        final Resource result = mock(Resource.class);
-        when(resourceResolver.getResource("/parent/child")).thenReturn(result);
-        when(result.getParent()).thenReturn(parent);
-        when(result.getPath()).thenReturn("/parent/child");
-        when(result.getName()).thenReturn("child");
-        when(result.getValueMap()).thenReturn(buildValueMap(ResourceResolverImpl.PROP_ALIAS, "alias"));
-
-        addResource.invoke(mapEntries, "/parent/child", new AtomicBoolean());
-
-        ArgumentCaptor<String> queryCaptor = ArgumentCaptor.forClass(String.class);
-        when(resourceResolver.findResources(queryCaptor.capture(), eq("sql"))).thenAnswer(new Answer<Iterator<Resource>>() {
-
-            @Override
-            public Iterator<Resource> answer(InvocationOnMock invocation) throws Throwable {
-		if (invocation.getArguments()[0].toString().contains("traversal fail")){
-			throw new SlingException("Query couldn't be satified due to ", new ParseException("Options not known", 0) );
-		} else {
-		            if (invocation.getArguments()[0].toString().contains(ResourceResolverImpl.PROP_ALIAS)) {
-		                return Arrays.asList(result, result).iterator();
-		            } else {
-		                return Collections.<Resource> emptySet().iterator();
-		            }
-		}
-            }
-        });
-
-        mapEntries.doInit();
-
-        assertFalse(mapEntries.isAliasMapInitialized());
-        // looping check for completion of aliasMap as it is calculated asynchronously
-		while (!mapEntries.isAliasMapInitialized()) {
-			Thread.sleep(10);
-		}
-        assertFalse(queryCaptor.getValue().contains("traversal fail"));
-        assertTrue(mapEntries.isAliasMapInitialized());
-        Map<String, String> aliasMap = mapEntries.getAliasMap("/parent");
-        assertEquals(1, aliasMap.size());
-        assertNotNull(aliasMap);
-        assertEquals(1, aliasMap.size());
-        assertEquals("child", aliasMap.get("alias"));
-    }
-
     @Test
     public void test_isValidVanityPath() throws Exception {
         Method method = MapEntries.class.getDeclaredMethod("isValidVanityPath", String.class);