You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2022/01/14 18:28:57 UTC

[jackrabbit-filevault] 01/01: JCRVLT-581 make path mapping really rely on node paths only (instead of file paths)

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

kwin pushed a commit to branch bugfix/JCRVLT-582
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git

commit 0d67c33aa81e325c351f6ef9f6532f085cefa77b
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Fri Jan 14 19:28:45 2022 +0100

    JCRVLT-581 make path mapping really rely on node paths only (instead of
    file paths)
    
    
    WIP
---
 .../apache/jackrabbit/vault/fs/io/MappedArchive.java  | 19 ++++++++++++-------
 .../vault/packaging/integration/MappedImportIT.java   |  2 +-
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MappedArchive.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MappedArchive.java
index 6a10e7b..996b64d 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MappedArchive.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MappedArchive.java
@@ -68,7 +68,7 @@ public class MappedArchive extends AbstractArchive {
     private void applyMapping(@NotNull Entry src, @NotNull VirtualEntry dst) {
         for (Entry child: src.getChildren()) {
             VirtualEntry dstChild = dst.add(child.getName(), child);
-            if ("/jcr_root".equals(dstChild.getPath())) {
+            if ("/jcr_root".equals(dstChild.getNodePath())) {
                 jcrRoot = dstChild;
                 applyMapping(child, "");
             } else {
@@ -86,10 +86,11 @@ public class MappedArchive extends AbstractArchive {
      */
     private void applyMapping(@NotNull Entry src, @NotNull String jcrPath) {
         for (Entry child: src.getChildren()) {
+            // TODO: convert to node name
             String path = jcrPath + "/" + child.getName();
             String mappedPath = mapping.map(path);
 
-            // add entry to tree
+            // add entry to tree (convert back to file name format)
             String[] segments = Text.explode(mappedPath, '/');
             VirtualEntry entry = jcrRoot;
             for (String seg: segments) {
@@ -183,14 +184,18 @@ public class MappedArchive extends AbstractArchive {
             return name;
         }
 
+        /**
+         * 
+         * @return the JCR node path (only the root node) represented by this entry
+         */
         @NotNull
-        public String getPath() {
-            return getPath(new StringBuilder()).toString();
+        public String getNodePath() {
+            return getNodePath(new StringBuilder()).toString();
         }
 
         @NotNull
-        private StringBuilder getPath(@NotNull StringBuilder sb) {
-            return parent == null ? sb : parent.getPath(sb).append('/').append(name);
+        private StringBuilder getNodePath(@NotNull StringBuilder sb) {
+            return parent == null ? sb : parent.getNodePath(sb).append('/').append(name);
         }
 
         /**
@@ -235,7 +240,7 @@ public class MappedArchive extends AbstractArchive {
             }
             VirtualEntry ve = new VirtualEntry(this, name, baseEntry);
             if (children == null) {
-                children = new LinkedHashMap<String, VirtualEntry>();
+                children = new LinkedHashMap<>();
             }
             children.put(name, ve);
             return ve;
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/MappedImportIT.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/MappedImportIT.java
index 2aba53f..039ad42 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/MappedImportIT.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/MappedImportIT.java
@@ -194,7 +194,7 @@ public class MappedImportIT extends IntegrationTestBase {
 
         ImportOptions opts = getDefaultOptions();
         RegexpPathMapping pathMapping = new RegexpPathMapping();
-        pathMapping.addMapping("/testroot/_cq_tags/(.*)", "/root/_cq_tags/$1");
+        //pathMapping.addMapping("/testroot/_cq_tags/(.*)", "/root/_cq_tags/$1");
         pathMapping.addMapping("/testroot/cq:tags/(.*)", "/root/cq:tags/$1");
         opts.setPathMapping(pathMapping);