Author: mreutegg
Date: Wed Dec 18 17:15:22 2013
New Revision: 1552036
URL: http://svn.apache.org/r1552036
Log:
OAK-1118: Removing and readding mix:versionable fails if node is referenceable
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
jackrabbit/oak/trunk/oak-jcr/pom.xml
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/MixinTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java?rev=1552036&r1=1552035&r2=1552036&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
Wed Dec 18 17:15:22 2013
@@ -147,6 +147,10 @@ class ReadWriteVersionManager extends Re
// jcr:rootVersion child node
createVersion(node, versionable);
+ } else if (!versionable.hasProperty(JCR_VERSIONHISTORY)) {
+ // connect versionable node with existing history
+ connectHistory(node.getChildNode(JCR_ROOTVERSION),
+ uuidFromNode(node), versionable);
}
return node;
}
@@ -373,6 +377,25 @@ class ReadWriteVersionManager extends Re
}
/**
+ * Connects a versionable node with the root version of an existing version
+ * history.
+ *
+ * @param rootVersion the root version of a version history.
+ * @param vHistoryUUID the uuid of the version history node.
+ * @param versionable the versionable node.
+ */
+ private void connectHistory(@Nonnull NodeBuilder rootVersion,
+ @Nonnull String vHistoryUUID,
+ @Nonnull NodeBuilder versionable) {
+ String rootVersionUUID = uuidFromNode(rootVersion);
+ versionable.setProperty(JCR_ISCHECKEDOUT, true, Type.BOOLEAN);
+ versionable.setProperty(JCR_VERSIONHISTORY, vHistoryUUID,
Type.REFERENCE);
+ versionable.setProperty(JCR_BASEVERSION, rootVersionUUID,
Type.REFERENCE);
+ versionable.setProperty(JCR_PREDECESSORS,
+ Collections.singleton(rootVersionUUID), Type.REFERENCES);
+ }
+
+ /**
* <i>Copied from Apache Jackrabbit Core</i>
* <p>
* Calculates the name of the new version that will be created by a
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1552036&r1=1552035&r2=1552036&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Wed Dec 18 17:15:22 2013
@@ -168,9 +168,6 @@
org.apache.jackrabbit.core.query.ShareableNodeTest#testName
<!-- OAK-118 -->
org.apache.jackrabbit.core.query.ShareableNodeTest#testPathConstraint
<!-- OAK-118 -->
org.apache.jackrabbit.oak.jcr.query.QueryTest#fnNameEncoding
<!-- OAK-1000 -->
-
- <!-- Node Types -->
-
org.apache.jackrabbit.oak.jcr.nodetype.MixinTest#testRemoveAddMixVersionable1
<!-- OAK-1118 -->
</known.issues>
</properties>
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/MixinTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/MixinTest.java?rev=1552036&r1=1552035&r2=1552036&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/MixinTest.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/MixinTest.java
Wed Dec 18 17:15:22 2013
@@ -118,7 +118,6 @@ public class MixinTest extends AbstractJ
assertFalse(vhId.equals(node.getVersionHistory().getUUID()));
}
- // FIXME: OAK-1118
public void testRemoveAddMixVersionable1() throws Exception {
Node node = testRootNode.addNode(nodeName1);
node.addMixin(mixReferenceable);
@@ -130,6 +129,6 @@ public class MixinTest extends AbstractJ
node.addMixin(mixVersionable);
superuser.save();
- assertFalse(vhId.equals(node.getVersionHistory().getUUID()));
+ assertEquals(vhId, node.getVersionHistory().getUUID());
}
}
\ No newline at end of file