Return-Path: X-Original-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Delivered-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0F0DF107C0 for ; Wed, 11 Sep 2013 08:07:30 +0000 (UTC) Received: (qmail 18748 invoked by uid 500); 11 Sep 2013 08:07:29 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 18707 invoked by uid 500); 11 Sep 2013 08:07:27 -0000 Mailing-List: contact oak-commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: oak-dev@jackrabbit.apache.org Delivered-To: mailing list oak-commits@jackrabbit.apache.org Received: (qmail 18698 invoked by uid 99); 11 Sep 2013 08:07:26 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Sep 2013 08:07:26 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 11 Sep 2013 08:07:22 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 5D61A238888A; Wed, 11 Sep 2013 08:07:01 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1521755 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionableState.java Date: Wed, 11 Sep 2013 08:07:01 -0000 To: oak-commits@jackrabbit.apache.org From: mreutegg@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130911080701.5D61A238888A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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(); }