You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2013/09/11 10:07:01 UTC
svn commit: r1521755 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java
Author: mreutegg
Date: Wed Sep 11 08:07:00 2013
New Revision: 1521755
URL: http://svn.apache.org/r1521755
Log:
OAK-168: Basic JCR VersionManager support
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java?rev=1521755&r1=1521754&r2=1521755&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java Wed Sep 11 08:07:00 2013
@@ -62,9 +62,12 @@ import org.apache.jackrabbit.oak.api.Pro
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.core.IdentifierManager;
import org.apache.jackrabbit.oak.core.ImmutableTree;
+import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeBuilder;
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.util.TODO;
/**
@@ -537,8 +540,18 @@ class VersionableState {
private int getOPV(NodeBuilder parent, NodeBuilder child, String childName)
throws RepositoryException {
ImmutableTree parentTree = new ImmutableTree(parent.getNodeState());
+ NodeState childState;
+ if (NT_FROZENNODE.equals(child.getName(JCR_PRIMARYTYPE))) {
+ // need to translate into a regular node to get proper OPV value
+ NodeBuilder builder = new MemoryNodeBuilder(EmptyNodeState.EMPTY_NODE);
+ builder.setProperty(JCR_PRIMARYTYPE, child.getName(JCR_FROZENPRIMARYTYPE), Type.NAME);
+ builder.setProperty(JCR_MIXINTYPES, child.getNames(JCR_MIXINTYPES), Type.NAMES);
+ childState = builder.getNodeState();
+ } else {
+ childState = child.getNodeState();
+ }
ImmutableTree childTree = new ImmutableTree(
- parentTree, childName, child.getNodeState());
+ parentTree, childName, childState);
return ntMgr.getDefinition(parentTree, childTree).getOnParentVersion();
}