From 49a8d90ab5f1c91bc040229902e806eb57ae33ce Mon Sep 17 00:00:00 2001 From: Ralph Plawetzki Date: Wed, 11 Nov 2020 07:32:29 +0100 Subject: [PATCH 1/4] Implement PropertyChangeListener interface --- .../keychain/KDEWalletKeychainAccess.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java b/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java index 55e47c8..997cddb 100644 --- a/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java +++ b/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java @@ -11,9 +11,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.Optional; -public class KDEWalletKeychainAccess implements KeychainAccessProvider { +public class KDEWalletKeychainAccess implements KeychainAccessProvider, PropertyChangeListener { private static final Logger LOG = LoggerFactory.getLogger(KDEWalletKeychainAccess.class); private static final String FOLDER_NAME = "Cryptomator"; @@ -61,6 +63,15 @@ public void changePassphrase(String key, CharSequence passphrase) throws Keychai wallet.get().changePassphrase(key, passphrase); } + @Override + public void propertyChange(PropertyChangeEvent event) { + if (event.getPropertyName().equals("KWallet.walletAsyncOpened")) { + Preconditions.checkState(wallet.isPresent(), "Keychain not supported."); + wallet.get().handle = (int) event.getNewValue(); + LOG.info("Wallet successfully initialized."); + } + } + private static class ConnectedWallet { private final KDEWallet wallet; @@ -141,15 +152,10 @@ private boolean walletIsOpen() throws KeychainAccessException { return true; } wallet.openAsync(Static.DEFAULT_WALLET, 0, APP_NAME, false); - wallet.getSignalHandler().await(KWallet.walletAsyncOpened.class, Static.ObjectPaths.KWALLETD5, () -> null); - handle = wallet.getSignalHandler().getLastHandledSignal(KWallet.walletAsyncOpened.class, Static.ObjectPaths.KWALLETD5).handle; - LOG.debug("Wallet successfully initialized."); return handle != -1; } catch (RuntimeException e) { throw new KeychainAccessException("Asynchronous opening the wallet failed.", e); } } - - } } From 5fb077b1c7908e53861a8201a6c7e2e5efd59a43 Mon Sep 17 00:00:00 2001 From: Ralph Plawetzki Date: Sat, 14 Nov 2020 17:07:35 +0100 Subject: [PATCH 2/4] Add missing PropertyChangeListener --- .../org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java b/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java index 997cddb..6474332 100644 --- a/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java +++ b/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java @@ -28,6 +28,7 @@ public KDEWalletKeychainAccess() { try { DBusConnection conn = DBusConnection.getConnection(DBusConnection.DBusBusType.SESSION); wallet = new ConnectedWallet(conn); + wallet.wallet.getSignalHandler().addPropertyChangeListener(this); } catch (DBusException e) { LOG.warn("Connecting to D-Bus failed.", e); } From 0a3070e83fff51d4f74b4437f06bc5c5a8af6fb4 Mon Sep 17 00:00:00 2001 From: Ralph Plawetzki Date: Sat, 14 Nov 2020 17:37:19 +0100 Subject: [PATCH 3/4] Log only when the wallet has been successfully opened --- .../cryptomator/linux/keychain/KDEWalletKeychainAccess.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java b/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java index 6474332..8c88308 100644 --- a/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java +++ b/src/main/java/org/cryptomator/linux/keychain/KDEWalletKeychainAccess.java @@ -69,7 +69,9 @@ public void propertyChange(PropertyChangeEvent event) { if (event.getPropertyName().equals("KWallet.walletAsyncOpened")) { Preconditions.checkState(wallet.isPresent(), "Keychain not supported."); wallet.get().handle = (int) event.getNewValue(); - LOG.info("Wallet successfully initialized."); + if (wallet.get().handle != -1) { + LOG.info("Wallet successfully opened."); + } } } From d4d737988c7616f31c47277f928c8edbffc3453d Mon Sep 17 00:00:00 2001 From: Ralph Plawetzki Date: Sun, 15 Nov 2020 16:12:57 +0100 Subject: [PATCH 4/4] Bump kdewallet version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 15a6f0c..28f7266 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ 0.1.3 1.2.1 - 1.1.1 + 1.2.0 30.0-jre 1.7.30