@Test public void hasModifcationResults() { Modifications modifications = modificationWithIds(); assertThat(modifications.since(3), is(new Modifications(modifcation(4)))); assertThat(modifications.since(2), is(new Modifications(modifcation(4), modifcation(3)))); try { modifications.since(10); fail("should throw exception"); } catch (Exception e) { assertThat(e.getMessage(), is("Could not find modification 10 in " + modifications)); } try { modifications.since(6); fail("should throw exception"); } catch (Exception e) { assertThat(e.getMessage(), is("Could not find modification 6 in " + modifications)); } }
@SuppressWarnings("unchecked") public List<Modification> findModificationsSince(Material material, MaterialRevision revision) { MaterialInstance materialInstance = findOrCreateFrom(material); String cacheKey = latestMaterialModificationsKey(materialInstance); synchronized (cacheKey) { long sinceModificationId = revision.getLatestModification().getId(); Modifications modifications = cachedModifications(materialInstance); if (!modificationExists(sinceModificationId, modifications)) { LOGGER.debug("CACHE-MISS for findModificationsSince - {}: {}", materialInstance, revision.getLatestModification()); modifications = _findModificationsSince(materialInstance, sinceModificationId); if (shouldCache(modifications)) { goCache.put(cacheKey, modifications); } else { goCache.remove(cacheKey); } } return modifications.since(sinceModificationId); } }