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:33 UTC

[jackrabbit-filevault] branch JCRVLT-588 created (now d1641fb)

This is an automated email from the ASF dual-hosted git repository.

reschke pushed a change to branch JCRVLT-588
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git.


      at d1641fb  JCRVLT-588: handle symlinks in path to install state

This branch includes the following new commits:

     new d1641fb  JCRVLT-588: handle symlinks in path to install state

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[jackrabbit-filevault] 01/01: JCRVLT-588: handle symlinks in path to install state

Posted by re...@apache.org.
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);
         }