You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2014/10/31 19:33:31 UTC
svn commit: r1635837 - in /jackrabbit/commons/filevault/trunk/vault-core/src:
main/java/org/apache/jackrabbit/vault/fs/io/Importer.java
test/java/org/apache/jackrabbit/vault/packaging/integration/TestUserContentPackage.java
Author: tripod
Date: Fri Oct 31 18:33:31 2014
New Revision: 1635837
URL: http://svn.apache.org/r1635837
Log:
JCRVLT-66 Updating an exiting authorizable does not work if on different path (mode=merge)
- fixed for simple use cases
Modified:
jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java
jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestUserContentPackage.java
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java?rev=1635837&r1=1635836&r2=1635837&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/Importer.java Fri Oct 31 18:33:31 2014
@@ -52,6 +52,7 @@ import org.apache.jackrabbit.vault.fs.ap
import org.apache.jackrabbit.vault.fs.api.ImportInfo;
import org.apache.jackrabbit.vault.fs.api.NodeNameList;
import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
+import org.apache.jackrabbit.vault.fs.api.PathMapping;
import org.apache.jackrabbit.vault.fs.api.SerializationType;
import org.apache.jackrabbit.vault.fs.api.VaultInputSource;
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
@@ -962,12 +963,8 @@ public class Importer {
}
}
}
- // check if node was remapped. currently we just skip them as it's not clear how the filter should be
- // reapplied or what happens if the remapping links to a tree we already processed.
- // in this case we don't descend in any children and can clear them right away
- if (!imp.getRemapped().map(info.path, true).equals(info.path)) {
- info.children = null;
- }
+ // remap the child tree in case some of the nodes where moved during import (e.g. authorizable)
+ info = info.remap(imp.getRemapped());
}
log.debug("committed {}", info.path);
return imp;
@@ -1061,7 +1058,7 @@ public class Importer {
private static class TxInfo {
- private final TxInfo parent;
+ private TxInfo parent;
private final String path;
@@ -1161,6 +1158,38 @@ public class Importer {
}
return root;
}
+
+ public TxInfo remap(PathMapping mapping) {
+ String mappedPath = mapping.map(path, true);
+ if (mappedPath.equals(path)) {
+ return this;
+ }
+
+ TxInfo ret = new TxInfo(parent, mappedPath);
+
+ // todo: what should we do with the artifacts ?
+ ret.artifacts.addAll(artifacts);
+
+ // todo: do we need to remap the namelist, too?
+ ret.nameList = nameList;
+
+ ret.isIntermediate = isIntermediate;
+
+ if (children != null) {
+ for (TxInfo child: children.values()) {
+ child = child.remap(mapping);
+ child.parent = this;
+ ret.addChild(child);
+ }
+ }
+
+ // ensure that our parent links the new info
+ if (parent.children != null) {
+ parent.children.put(ret.name, ret);
+ }
+
+ return ret;
+ }
}
}
\ No newline at end of file
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestUserContentPackage.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestUserContentPackage.java?rev=1635837&r1=1635836&r2=1635837&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestUserContentPackage.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestUserContentPackage.java Fri Oct 31 18:33:31 2014
@@ -163,7 +163,6 @@ public class TestUserContentPackage exte
}
@Test
- @Ignore("JCRVLT-65")
public void installUserA_Profile_Picture_Moved() throws RepositoryException, IOException, PackageException {
// install default user at package path
User userA = installUserA(ImportMode.UPDATE, false, false);