private synchronized Map<String, String> getMessages(Locale locale) { Map<String, String> messages = null; if (standardLocale.equals(locale)) { messages = standardMessages; } else { if ((messages = messagesByLocale.get(locale)) == null) { messages = retrieveByLocale(locale); messagesByLocale.put(locale, messages); messagesByLocale.reapable(locale); } } return messages; }
private void assertExpected(Integer ... values) { for (Integer v: values) { assertEquals(v, map.get(MAPPER.getKey(v))); } }
@Test public void testReapingOnGetWithAccessBasedAging() throws Exception { setUpAccessBaseAgingExpectations(); populate(1, 2, 3); assertSizes(3, 0); map.reapable("one"); map.reapable("three"); assertSizes(1, 2); for (int i = 0; i < 6; i++) { Thread.sleep(250); assertExpected(i == 0 ? 1 : 3); } assertSizes(1, 1); assertNull(map.get("one")); assertExpected(3); Thread.sleep(500); assertExpected(3); assertSizes(1, 1); Thread.sleep(1200); assertExpected(2); assertSizes(1, 0); assertNull(map.get("three")); }
@Test public void testReapingOnPutWithGC() { setUpGCExpectations(5); populate(1, 2, 3); map.reapable("one"); map.reapable("three"); assertSizes(1, 2); populate(4); assertSizes(2, 1); assertNull(map.get("three")); }
@Test public void testReapingOnGetWithGC() { setUpGCExpectations(5); populate(1, 2, 3); map.reapable("one"); map.reapable("three"); assertSizes(1, 2); assertExpected(3); assertSizes(1, 1); assertNull(map.get("three")); }
@Test public void testReapingOnRemoveWithGC() { setUpGCExpectations(5); populate(1, 2, 3); map.reapable("one"); map.reapable("three"); assertSizes(1, 2); map.remove("two"); assertSizes(0, 1); assertNull(map.get("three")); }
@Test public void testReapingWithoutGC() throws Exception { map = new ReapedMap<>(1000); populate(1, 2, 3); assertSizes(3, 0); assertExpected(1, 2, 3); map.reapable("one"); map.reapable("three"); assertSizes(1, 2); map.reapable("one"); assertSizes(1, 2); assertExpected(1, 2, 3); assertEquals(Integer.valueOf(3), map.remove("three")); assertSizes(1, 1); assertExpected(1, 2); assertNull(map.get("three")); Thread.sleep(1100); assertExpected(1); assertNull(map.get("one")); assertExpected(2); assertSizes(1, 0); populate(4, 5); map.clear(); }