@Override public void visit(final AttributedList<Path> list, final int index, final Path file) throws ConnectionCanceledException { final Path directory = file.getParent(); if(DefaultVaultRegistry.DEFAULT_MASTERKEY_FILE_NAME.equals(file.getName())) { if(log.isInfoEnabled()) { log.info(String.format("Found master key %s", file)); } try { final Vault vault = listener.load(directory, DefaultVaultRegistry.DEFAULT_MASTERKEY_FILE_NAME, DefaultVaultRegistry.DEFAULT_PEPPER); if(vault.equals(Vault.DISABLED)) { return; } throw new VaultFoundListCanceledException(vault, list); } catch(VaultUnlockCancelException e) { // Continue } } } }
@Override public AttributedList<Path> list(final Path directory, final ListProgressListener listener) throws BackgroundException { try { return delegate.list(directory, new ProxyListProgressListener(finder, listener)); } catch(VaultFoundListCanceledException finder) { final Vault cryptomator = finder.getVault(); if(log.isInfoEnabled()) { log.info(String.format("Found vault %s", cryptomator)); } return delegate.list(cryptomator.encrypt(session, directory), new DecryptingListProgressListener(session, cryptomator, listener.reset())); } }