Author: asanso Date: Tue Jul 21 15:36:01 2015 New Revision: 1692153 URL: http://svn.apache.org/r1692153 Log: SLING-4891 - Improve MapEntries to cache searched vanity paths
Modified: sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java Modified: sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java?rev=1692153&r1=1692152&r2=1692153&view=diff ============================================================================== --- sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java (original) +++ sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java Tue Jul 21 15:36:01 2015 @@ -1502,7 +1502,7 @@ public class MapEntriesTest { Method method = MapEntries.class.getDeclaredMethod("getVanityPaths", String.class); method.setAccessible(true); - method.invoke(mapEntries, "/justVanityPath"); + method.invoke(mapEntries, "/target/justVanityPath"); Field vanityCounter = MapEntries.class.getDeclaredField("vanityCounter"); vanityCounter.setAccessible(true); @@ -1526,7 +1526,7 @@ public class MapEntriesTest { } }); - method.invoke(mapEntries, "/justVanityPath2"); + method.invoke(mapEntries, "/target/justVanityPath"); counter = (AtomicLong) vanityCounter.get(mapEntries); assertEquals(4, counter.longValue()); @@ -1564,7 +1564,7 @@ public class MapEntriesTest { Method method = MapEntries.class.getDeclaredMethod("getVanityPaths", String.class); method.setAccessible(true); - method.invoke(mapEntries, "/justVanityPath"); + method.invoke(mapEntries, "/target/justVanityPath"); Field vanityCounter = MapEntries.class.getDeclaredField("vanityCounter"); vanityCounter.setAccessible(true); @@ -1603,7 +1603,7 @@ public class MapEntriesTest { Method method = MapEntries.class.getDeclaredMethod("getVanityPaths", String.class); method.setAccessible(true); - method.invoke(mapEntries, "/badVanityPath"); + method.invoke(mapEntries, "/content/mypage/en-us-{132"); Field vanityCounter = MapEntries.class.getDeclaredField("vanityCounter"); vanityCounter.setAccessible(true); @@ -1642,7 +1642,7 @@ public class MapEntriesTest { Method method = MapEntries.class.getDeclaredMethod("getVanityPaths", String.class); method.setAccessible(true); - method.invoke(mapEntries, "/justVanityPath"); + method.invoke(mapEntries, "/target/justVanityPath"); Field vanityCounter = MapEntries.class.getDeclaredField("vanityCounter"); vanityCounter.setAccessible(true); @@ -1666,7 +1666,7 @@ public class MapEntriesTest { } }); - method.invoke(mapEntries, "/justVanityPath2"); + method.invoke(mapEntries, "/target/justVanityPath"); counter = (AtomicLong) vanityCounter.get(mapEntries); assertEquals(2, counter.longValue()); @@ -1737,5 +1737,61 @@ public class MapEntriesTest { assertEquals(2, counter.longValue()); } + @Test + //SLING-4891 + public void test_getMapEntryList() throws Exception { + + List<MapEntry> entries = mapEntries.getResolveMaps(); + assertEquals(0, entries.size()); + + + final Resource justVanityPath = mock(Resource.class, + "justVanityPath"); + + when(resourceResolver.getResource("/justVanityPath")).thenReturn(justVanityPath); + + when(justVanityPath.getPath()).thenReturn("/justVanityPath"); + + when(justVanityPath.getName()).thenReturn("justVanityPath"); + + when(justVanityPath.adaptTo(ValueMap.class)).thenReturn(buildValueMap("sling:vanityPath", + "/target/justVanityPath")); + + when(resourceResolver.findResources(anyString(), + eq("sql"))).thenAnswer(new Answer<Iterator<Resource>>() { + + public Iterator<Resource> answer(InvocationOnMock invocation) + throws Throwable { + if + (invocation.getArguments()[0].toString().contains("sling:vanityPath")) { + return Collections.singleton(justVanityPath).iterator(); + } else { + return Collections.<Resource> emptySet().iterator(); + } + } + }); + + Method method = + MapEntries.class.getDeclaredMethod("getMapEntryList",String.class); + method.setAccessible(true); + method.invoke(mapEntries, "/target/justVanityPath"); + + entries = mapEntries.getResolveMaps(); + assertEquals(2, entries.size()); + + Field vanityCounter = + MapEntries.class.getDeclaredField("vanityCounter"); + vanityCounter.setAccessible(true); + AtomicLong counter = (AtomicLong) vanityCounter.get(mapEntries); + assertEquals(2, counter.longValue()); + + method.invoke(mapEntries, "/target/justVanityPath"); + + entries = mapEntries.getResolveMaps(); + assertEquals(2, entries.size()); + + counter = (AtomicLong) vanityCounter.get(mapEntries); + assertEquals(2, counter.longValue()); + } }