Merge pull request #688 from ArunOnCloud/trunk
OAK-9891: Removal (purge) of version of a node does not remove associated labels
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
index e5f533f..43326eb 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
@@ -187,7 +187,7 @@
NodeBuilder versionNode = vh.getChildNode(versionName);
String versionId = versionNode.getProperty(JCR_UUID).getValue(Type.STRING);
// unregister from labels
- for (String label : getVersionLabels(versionRelPath, versionId)) {
+ for (String label : getVersionLabels(historyRelPath, versionId)) {
removeVersionLabel(historyRelPath, label);
}
// reconnected predecessors and successors of the version being removed
diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryTest.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryTest.java
index 2689f2d..a9771b8 100644
--- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryTest.java
+++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryTest.java
@@ -27,6 +27,9 @@
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.test.AbstractJCRTest;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Contains {@link VersionHistory} related tests.
*/
@@ -159,4 +162,41 @@
assertFalse("VersionHistory node should have disappeared", superuser.itemExists(vhrpath));
}
+
+ public void testRemoveVersionLabelWithRemovalOfVersion() throws RepositoryException {
+ int createVersions = 3;
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ n.addMixin(mixVersionable);
+ superuser.save();
+ for (int i = 0; i < createVersions; i++) {
+ versionManager.checkout(n.getPath());
+ versionManager.checkin(n.getPath());
+ }
+
+ VersionHistory vhr = versionManager.getVersionHistory(n.getPath());
+ // initialize versionName
+ String versionName = "";
+ VersionIterator allversions = vhr.getAllVersions();
+ int count = 0;
+ while (allversions.hasNext()) {
+ Version version = allversions.nextVersion();
+ if(count == 1) {
+ versionName = version.getName();
+ }
+ count++;
+ }
+ int versionLabelCount = 3;
+ List<String> versionLabels = new ArrayList<>();
+ for(int i = 0; i < versionLabelCount; i++) {
+ String labelName = "Label_" + versionName + "_" + i;
+ vhr.addVersionLabel(versionName, labelName,false);
+ versionLabels.add(labelName);
+ }
+ vhr.removeVersion(versionName);
+ for(String label : versionLabels) {
+ assertFalse("version label should not exist", vhr.hasVersionLabel(label));
+ }
+
+ }
+
}
\ No newline at end of file