JCRVLT-581 make path mapping really rely on node paths only (instead of
file paths)
WIP
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 @@
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 @@
*/
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 @@
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 @@
}
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 @@
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);