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 2021/12/15 15:32:05 UTC
[jackrabbit-filevault] 01/01: JCRVLT-575: handle symlinks in homeDir path
This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch JCRVLT-575
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
commit 9cdb6bdf2c287793166d18191e2345d0a8d5a6f6
Author: Julian Reschke <ju...@gmx.de>
AuthorDate: Wed Dec 15 16:31:47 2021 +0100
JCRVLT-575: handle symlinks in homeDir path
---
.../packaging/registry/impl/FSInstallStateCache.java | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSInstallStateCache.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSInstallStateCache.java
index a68de14..35c749f 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSInstallStateCache.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/registry/impl/FSInstallStateCache.java
@@ -18,6 +18,7 @@ package org.apache.jackrabbit.vault.packaging.registry.impl;
import java.io.IOException;
import java.io.UncheckedIOException;
+import java.nio.file.FileVisitOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.AbstractMap;
@@ -30,6 +31,8 @@ import java.util.stream.Stream;
import org.apache.jackrabbit.vault.packaging.PackageId;
import org.jetbrains.annotations.NotNull;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Persisted cache of all {@link FSInstallState} objects for all packages in a registry.
@@ -39,6 +42,8 @@ import org.jetbrains.annotations.NotNull;
*/
class FSInstallStateCache extends AbstractMap<PackageId, FSInstallState> {
+ private static final Logger log = LoggerFactory.getLogger(FSInstallStateCache.class);
+
/**
* Extension for metadata files
*/
@@ -53,10 +58,14 @@ class FSInstallStateCache extends AbstractMap<PackageId, FSInstallState> {
private Map<Path, PackageId> pathIdMapping = new ConcurrentHashMap<>();
private final Path homeDir;
-
+
public FSInstallStateCache(Path homeDir) throws IOException {
this.homeDir = homeDir;
- Files.createDirectories(homeDir);
+ log.debug("checking for presence of {} - exists {} - isDirectory {}", homeDir, Files.exists(homeDir), Files.isDirectory(homeDir));
+ if (Files.notExists(homeDir)) {
+ Path created = Files.createDirectories(homeDir);
+ log.debug("Created {}", created);
+ }
}
/**
@@ -68,12 +77,14 @@ class FSInstallStateCache extends AbstractMap<PackageId, FSInstallState> {
Map<Path, PackageId> idMapping = new HashMap<>();
// recursively find meta file
- try (Stream<Path> stream = Files.walk(homeDir, 10)) {
+ log.debug("loading state from home directory {}", homeDir);
+ try (Stream<Path> stream = Files.walk(homeDir, 10, FileVisitOption.FOLLOW_LINKS)) {
stream.filter(Files::isRegularFile).filter(p -> p.toString().endsWith(META_EXTENSION)).forEach(
p -> {
FSInstallState state;
try {
state = FSInstallState.fromFile(p);
+ log.debug("loaded state from {}", p);
} catch (IOException e) {
throw new UncheckedIOException(e);
}