From e422c7ce4b980f8ceaa3dc2c02fd94d2bb34e4a6 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 14 Jan 2025 19:16:46 +0100 Subject: [PATCH] use caffeine for building a cache (cherry picked from commit fc709eb700fb36d74dad75b6494d40c561343b1d) --- pom.xml | 6 ++++++ src/main/java/module-info.java | 1 + .../cryptomator/common/keychain/KeychainManager.java | 11 +++++------ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index bca974d6e..30b0070bb 100644 --- a/pom.xml +++ b/pom.xml @@ -201,6 +201,12 @@ 2.0.1 + + + com.github.ben-manes.caffeine + caffeine + 3.1.8 + org.junit.jupiter diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index b07fe3a6f..6897d8c53 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -51,6 +51,7 @@ open module org.cryptomator.desktop { requires jakarta.inject; requires static javax.inject; requires java.compiler; + requires com.github.benmanes.caffeine; uses org.cryptomator.common.locationpresets.LocationPresetsProvider; diff --git a/src/main/java/org/cryptomator/common/keychain/KeychainManager.java b/src/main/java/org/cryptomator/common/keychain/KeychainManager.java index 186a44115..c9cfeac6f 100644 --- a/src/main/java/org/cryptomator/common/keychain/KeychainManager.java +++ b/src/main/java/org/cryptomator/common/keychain/KeychainManager.java @@ -1,8 +1,7 @@ package org.cryptomator.common.keychain; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; +import com.github.benmanes.caffeine.cache.Caffeine; +import com.github.benmanes.caffeine.cache.LoadingCache; import org.cryptomator.integrations.keychain.KeychainAccessException; import org.cryptomator.integrations.keychain.KeychainAccessProvider; @@ -24,9 +23,9 @@ public class KeychainManager implements KeychainAccessProvider { @Inject KeychainManager(ObjectExpression selectedKeychain) { this.keychain = selectedKeychain; - this.passphraseStoredProperties = CacheBuilder.newBuilder() // + this.passphraseStoredProperties = Caffeine.newBuilder() // .weakValues() // - .build(CacheLoader.from(this::createStoredPassphraseProperty)); + .build(this::createStoredPassphraseProperty); keychain.addListener(ignored -> passphraseStoredProperties.invalidateAll()); } @@ -124,7 +123,7 @@ public class KeychainManager implements KeychainAccessProvider { * @see #isPassphraseStored(String) */ public ReadOnlyBooleanProperty getPassphraseStoredProperty(String key) { - return passphraseStoredProperties.getUnchecked(key); + return passphraseStoredProperties.get(key); } private BooleanProperty createStoredPassphraseProperty(String key) {