JSONCache { public static void invalidateMatching(DataID... dataIDs) { Set<String> toInvalidate = Arrays.stream(dataIDs) .map(DataID::name) .collect(Collectors.toSet()); for (String identifier : cache.asMap().keySet()) { for (String identifierToInvalidate : toInvalidate) { if (StringUtils.startsWith(identifier, identifierToInvalidate)) { invalidate(identifier); } } } } private  JSONCache(); static Response getOrCache(String identifier, Supplier<Response> jsonResponseSupplier); static String getOrCacheString(DataID dataID, UUID serverUUID, Supplier<String> stringSupplier); static Response getOrCache(DataID dataID, Supplier<T> objectSupplier); static Response getOrCache(DataID dataID, UUID serverUUID, Supplier<T> objectSupplier); static void invalidate(String identifier); static void invalidate(DataID dataID); static void invalidate(UUID serverUUID, DataID... dataIDs); static void invalidate(DataID dataID, UUID serverUUID); static void invalidateMatching(DataID... dataIDs); static void invalidateMatching(DataID dataID); static void invalidateAll(); static void cleanUp(); static List<String> getCachedIDs();  }
@Test void invalidateMatchingByID() { cachedByDataIDName(); cachedByServerUUID(); JSONCache.invalidateMatching(TEST_ID); assertNotContains(); assertNotContainsUUID(); }
@Test void invalidateMatchingByIDVarargs() { cachedByDataIDName(); cachedByServerUUID(); JSONCache.invalidateMatching(TEST_ID, TEST_ID); assertNotContains(); assertNotContainsUUID(); }