You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2022/01/10 14:27:34 UTC
[jackrabbit-filevault] 01/01: JCRVLT-588: handle symlinks in path to install state
This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch JCRVLT-588
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
commit d1641fb4aa133c95454c757f0e75a1f58e776583
Author: Julian Reschke <ju...@gmx.de>
AuthorDate: Mon Jan 10 15:27:18 2022 +0100
JCRVLT-588: handle symlinks in path to install state
---
.../vault/packaging/registry/impl/FSInstallState.java | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSInstallState.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSInstallState.java
index 2b9c58c..0efc197 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSInstallState.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSInstallState.java
@@ -22,7 +22,6 @@ import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -51,6 +50,8 @@ import org.apache.jackrabbit.vault.util.xml.serialize.FormattingXmlStreamWriter;
import org.apache.jackrabbit.vault.util.xml.serialize.OutputFormat;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -64,6 +65,8 @@ import org.xml.sax.SAXException;
*/
public class FSInstallState {
+ private static final Logger log = LoggerFactory.getLogger(FSInstallState.class);
+
private static final String TAG_REGISTRY_METADATA = "registryMetadata";
private static final String ATTR_PACKAGE_ID = "packageid";
@@ -301,7 +304,19 @@ public class FSInstallState {
* @throws IOException if an error occurs.
*/
public void save(Path file) throws IOException {
- Files.createDirectories(file.getParent());
+ Path parent = file.getParent();
+ log.debug("checking for presence of {} - exists {} - isDirectory {}", parent, Files.exists(parent), Files.isDirectory(parent));
+ if (!Files.exists(parent)) {
+ Path created = Files.createDirectories(parent);
+ log.debug("Created {}", created);
+ } else {
+ if (!Files.isDirectory(parent)) {
+ String message = parent + " exists, but is not a directory - aborting";
+ log.error(message);
+ throw new IOException(message);
+ }
+ }
+
try (OutputStream out = Files.newOutputStream(file)) {
save(out);
}