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:55:43 UTC
[jackrabbit-filevault] branch master updated: JCRVLT-588: handle symlinks in path to install state (#194)
This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
The following commit(s) were added to refs/heads/master by this push:
new 561aaa0 JCRVLT-588: handle symlinks in path to install state (#194)
561aaa0 is described below
commit 561aaa092d721963f16b860de955e6d1752a350e
Author: Julian Reschke <re...@apache.org>
AuthorDate: Mon Jan 10 15:55:37 2022 +0100
JCRVLT-588: handle symlinks in path to install state (#194)
---
.../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);
}