X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneModificationDetector.java;h=8b1b2ee522b28588643047813d01c621fc454dbb;hp=aba329c67d5509a1937238dd49cac66e363eb34a;hb=1c0a2b5e67dda41e75d2315fd0f6f1cfecf26fa6;hpb=f4a7be456eab249c927d340d478d10a96041c837 diff --git a/src/main/java/net/pterodactylus/sone/core/SoneModificationDetector.java b/src/main/java/net/pterodactylus/sone/core/SoneModificationDetector.java index aba329c..8b1b2ee 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneModificationDetector.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneModificationDetector.java @@ -23,34 +23,32 @@ import com.google.common.base.Ticker; class SoneModificationDetector { private final Ticker ticker; - private final Core core; - private final Sone sone; + private final LockableFingerprintProvider lockableFingerprintProvider; private final AtomicInteger insertionDelay; private Optional lastModificationTime; private String originalFingerprint; private String lastFingerprint; - SoneModificationDetector(Core core, Sone sone, AtomicInteger insertionDelay) { - this(systemTicker(), core, sone, insertionDelay); + SoneModificationDetector(LockableFingerprintProvider lockableFingerprintProvider, AtomicInteger insertionDelay) { + this(systemTicker(), lockableFingerprintProvider, insertionDelay); } @VisibleForTesting - SoneModificationDetector(Ticker ticker, Core core, Sone sone, AtomicInteger insertionDelay) { + SoneModificationDetector(Ticker ticker, LockableFingerprintProvider lockableFingerprintProvider, AtomicInteger insertionDelay) { this.ticker = ticker; - this.core = core; - this.sone = sone; + this.lockableFingerprintProvider = lockableFingerprintProvider; this.insertionDelay = insertionDelay; - originalFingerprint = sone.getFingerprint(); + originalFingerprint = lockableFingerprintProvider.getFingerprint(); lastFingerprint = originalFingerprint; } public boolean isEligibleForInsert() { - if (core.isLocked(sone)) { + if (lockableFingerprintProvider.isLocked()) { lastModificationTime = absent(); lastFingerprint = ""; return false; } - String fingerprint = sone.getFingerprint(); + String fingerprint = lockableFingerprintProvider.getFingerprint(); if (originalFingerprint.equals(fingerprint)) { lastModificationTime = absent(); lastFingerprint = fingerprint; @@ -79,7 +77,20 @@ class SoneModificationDetector { } public boolean isModified() { - return !sone.getFingerprint().equals(originalFingerprint); + return !lockableFingerprintProvider.getFingerprint().equals(originalFingerprint); + } + + /** + * Provider for a fingerprint and the information if a {@link Sone} is locked. This + * prevents us from having to lug a Sone object around. + * + * @author David ‘Bombe’ Roden + */ + static interface LockableFingerprintProvider { + + boolean isLocked(); + String getFingerprint(); + } }