You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/05/26 16:36:38 UTC
svn commit: r778720 -
/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RemoveOrphanVersionHistoryTest.java
Author: jukka
Date: Tue May 26 14:36:38 2009
New Revision: 778720
URL: http://svn.apache.org/viewvc?rev=778720&view=rev
Log:
JCR-134: Unreferenced VersionHistory should be deleted automatically
Added a test case that makes sure that a version history that is still being referenced from another workspace won't get lost when the last version is removed.
Modified:
jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RemoveOrphanVersionHistoryTest.java
Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RemoveOrphanVersionHistoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RemoveOrphanVersionHistoryTest.java?rev=778720&r1=778719&r2=778720&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RemoveOrphanVersionHistoryTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/version/RemoveOrphanVersionHistoryTest.java Tue May 26 14:36:38 2009
@@ -18,6 +18,8 @@
import javax.jcr.ItemNotFoundException;
import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
@@ -138,6 +140,57 @@
}
/**
+ * Test that an emptied version history that is still being referenced
+ * from another workspace does not get removed.
+ *
+ * @throws RepositoryException if an error occurs.
+ */
+ public void testEmptyNonOrphanVersionHistory() throws RepositoryException {
+ Session session = testRootNode.getSession();
+
+ // Create versionable test node
+ Node node = testRootNode.addNode(nodeName1);
+ node.addMixin(mixVersionable);
+ session.save();
+
+ VersionHistory history = node.getVersionHistory();
+ String uuid = history.getUUID();
+
+ // Create version 1.0
+ Version v10 = node.checkin();
+
+ // Remove the test node
+ node.checkout();
+ node.remove();
+ session.save();
+
+ Session otherSession = helper.getReadWriteSession(workspaceName);
+ try {
+ // create a reference to the version history in another workspace
+ Node otherRoot = otherSession.getRootNode();
+ Property reference = otherRoot.setProperty(
+ "RemoveOrphanVersionTest", uuid, PropertyType.REFERENCE);
+ otherSession.save();
+
+ // Now remove the contents of the version history
+ history.removeVersion(v10.getName());
+
+ // Check that the version history still exists!
+ try {
+ session.getNodeByUUID(uuid);
+ } catch (ItemNotFoundException e) {
+ fail("Referenced empty version history must note be removed");
+ }
+
+ // Cleanup
+ reference.remove();
+ otherSession.save();
+ } finally {
+ otherSession.logout();
+ }
+ }
+
+ /**
* Assert that a node exists in a session.
* @param session the session.
* @param uuid the node's UUID.