diff --git a/src/main/java/org/wildfly/security/credential/store/impl/KeyStoreCredentialStore.java b/src/main/java/org/wildfly/security/credential/store/impl/KeyStoreCredentialStore.java index 702fc95ca82..cd521c4dae7 100644 --- a/src/main/java/org/wildfly/security/credential/store/impl/KeyStoreCredentialStore.java +++ b/src/main/java/org/wildfly/security/credential/store/impl/KeyStoreCredentialStore.java @@ -53,6 +53,7 @@ import java.util.Iterator; import java.util.Locale; import java.util.Map; +import java.util.Set; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.regex.Matcher; @@ -150,6 +151,7 @@ public void initialize(final Map attributes, final CredentialSto final String locationName = attributes.get("location"); this.location = locationName == null ? null : Paths.get(locationName); load(attributes.getOrDefault("keyStoreType", KeyStore.getDefaultType())); + initialized = true; } } @@ -713,6 +715,20 @@ public void flush() throws CredentialStoreException { } } + /** + * Returns credential aliases stored in this store as {@code Set}. + *

+ * It is not mandatory to override this method (throws {@link UnsupportedOperationException} by default). + * + * @return {@code Set} of all keys stored in this store + * @throws UnsupportedOperationException when this method is not supported by the underlying credential store + * @throws CredentialStoreException if there is any problem with internal store + */ + @Override + public Set getAliases() throws UnsupportedOperationException, CredentialStoreException { + return cache.keySet(); + } + private Hold lockForRead() { readWriteLock.readLock().lock(); return () -> readWriteLock.readLock().unlock(); diff --git a/src/main/java/org/wildfly/security/util/AtomicFileOutputStream.java b/src/main/java/org/wildfly/security/util/AtomicFileOutputStream.java index cf234c84da4..4717bc13dfe 100644 --- a/src/main/java/org/wildfly/security/util/AtomicFileOutputStream.java +++ b/src/main/java/org/wildfly/security/util/AtomicFileOutputStream.java @@ -51,7 +51,7 @@ public AtomicFileOutputStream(final File file) throws IOException { public AtomicFileOutputStream(final Path path) throws IOException { final Path parent = path.getParent(); - if (parent.getNameCount() != 0 && ! Files.exists(parent)) { + if (parent != null && parent.getNameCount() != 0 && ! Files.exists(parent)) { Files.createDirectories(parent); } current = new OpenState(Files.newOutputStream(path.resolveSibling(path.getFileName() + ".new"), CREATE, TRUNCATE_EXISTING), path);