Browse Source

use caffeine for building a cache

Armin Schrenk 2 months ago
parent
commit
fc709eb700

+ 6 - 0
pom.xml

@@ -201,6 +201,12 @@
 			<version>2.0.1</version>
 		</dependency>
 
+		<!-- Caffeine -->
+		<dependency>
+			<groupId>com.github.ben-manes.caffeine</groupId>
+			<artifactId>caffeine</artifactId>
+			<version>3.1.8</version>
+		</dependency>
 		<!-- JUnit / Mockito / Hamcrest -->
 		<dependency>
 			<groupId>org.junit.jupiter</groupId>

+ 1 - 0
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;
 

+ 5 - 6
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<KeychainAccessProvider> 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) {