@Override
public Vault load(final Path directory, final String masterkey, final byte[] pepper) throws VaultUnlockCancelException {
synchronized(registry) {
if(registry.contains(directory)) {
return registry.find(session, directory);
}
final Vault vault = VaultFactory.get(directory, masterkey, pepper);
if(log.isInfoEnabled()) {
log.info(String.format("Loading vault %s for session %s", vault, session));
}
try {
registry.add(vault.load(session, prompt, keychain));
}
catch(BackgroundException e) {
log.warn(String.format("Failure loading vault %s. %s", vault, e.getDetail()));
throw new VaultUnlockCancelException(vault, e);
}
return vault;
}
}
}