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) {