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 32EE3C6EB for ; Thu, 17 May 2012 15:08:30 +0000 (UTC) Received: (qmail 39810 invoked by uid 500); 17 May 2012 15:08:30 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 39754 invoked by uid 500); 17 May 2012 15:08:30 -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-commits@jackrabbit.apache.org Delivered-To: mailing list oak-commits@jackrabbit.apache.org Received: (qmail 39744 invoked by uid 99); 17 May 2012 15:08:30 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 17 May 2012 15:08:30 +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; Thu, 17 May 2012 15:08:26 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 83F212388962; Thu, 17 May 2012 15:08:04 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1339630 [2/2] - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/api/ oak-core/src/main/java/org/apache/jackrabbit/oak/core/ oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/ oak-core/src/main/java/org/apac... Date: Thu, 17 May 2012 15:08:03 -0000 To: oak-commits@jackrabbit.apache.org From: mduerig@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120517150804.83F212388962@eris.apache.org> Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java?rev=1339630&r1=1339629&r2=1339630&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java (original) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreTest.java Thu May 17 15:08:03 2012 @@ -22,11 +22,13 @@ import org.apache.jackrabbit.mk.api.Micr import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.CoreValue; import org.apache.jackrabbit.oak.core.AbstractOakTest; +import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeState; import org.apache.jackrabbit.oak.spi.commit.CommitHook; import org.apache.jackrabbit.oak.spi.commit.EmptyCommitHook; import org.apache.jackrabbit.oak.spi.state.NodeState; import org.apache.jackrabbit.oak.spi.state.NodeStateBuilder; import org.apache.jackrabbit.oak.spi.state.NodeStore; +import org.apache.jackrabbit.oak.spi.state.NodeStoreBranch; import org.junit.Test; import static org.junit.Assert.assertEquals; @@ -68,87 +70,119 @@ public class KernelNodeStoreTest extends } @Test - public void setRoot() throws CommitFailedException { - NodeState test = store.getRoot().getChildNode("test"); - NodeStateBuilder testBuilder = store.getBuilder(test); + public void branch() throws CommitFailedException { + NodeStoreBranch branch = store.branch(); + + NodeStateBuilder rootBuilder = store.getBuilder(branch.getRoot()); + NodeStateBuilder testBuilder = store.getBuilder(root.getChildNode("test")); + + testBuilder.setNode("newNode", MemoryNodeState.EMPTY_NODE); + testBuilder.removeNode("x"); + + NodeStateBuilder newNodeBuilder = store.getBuilder( + testBuilder.getNodeState().getChildNode("newNode")); - NodeStateBuilder newNodeBuilder = testBuilder.addNode("newNode"); - testBuilder.removeNode("a"); CoreValue fortyTwo = store.getValueFactory().createValue(42); newNodeBuilder.setProperty("n", fortyTwo); - NodeState testState = testBuilder.getNodeState(); - store.setRoot(testBuilder.getNodeState()); + testBuilder.setNode("newNode", newNodeBuilder.getNodeState()); + rootBuilder.setNode("test", testBuilder.getNodeState()); + // Assert changes are present in the builder + NodeState testState = rootBuilder.getNodeState().getChildNode("test"); assertNotNull(testState.getChildNode("newNode")); - assertNull(testState.getChildNode("a")); + assertNull(testState.getChildNode("x")); assertEquals(fortyTwo, testState.getChildNode("newNode").getProperty("n").getValue()); - assertEquals(testState, store.getRoot().getChildNode("test")); - } - @Test - public void afterCommitHook() throws CommitFailedException { - NodeState test = store.getRoot().getChildNode("test"); - NodeStateBuilder testBuilder = store.getBuilder(test); + // Assert changes are not yet present in the branch + testState = branch.getRoot().getChildNode("test"); + assertNull(testState.getChildNode("newNode")); + assertNotNull(testState.getChildNode("x")); - NodeStateBuilder newNodeBuilder = testBuilder.addNode("newNode"); - testBuilder.removeNode("a"); - final CoreValue fortyTwo = store.getValueFactory().createValue(42); - newNodeBuilder.setProperty("n", fortyTwo); - final NodeState testState = testBuilder.getNodeState(); + branch.setRoot(rootBuilder.getNodeState()); - commitWithHook(testBuilder.getNodeState(), new EmptyCommitHook() { - @Override - public void afterCommit(NodeStore store, NodeState before, NodeState after) { - assertNull(before.getChildNode("newNode")); - assertNotNull(after.getChildNode("newNode")); - assertNull(after.getChildNode("a")); - assertEquals(fortyTwo, after.getChildNode("newNode").getProperty("n").getValue()); - assertEquals(testState, after); - } - }); - } + // Assert changes are present in the branch + testState = branch.getRoot().getChildNode("test"); + assertNotNull(testState.getChildNode("newNode")); + assertNull(testState.getChildNode("x")); + assertEquals(fortyTwo, testState.getChildNode("newNode").getProperty("n").getValue()); - @Test - public void beforeCommitHook() throws CommitFailedException { - NodeState test = store.getRoot().getChildNode("test"); - NodeStateBuilder testBuilder = store.getBuilder(test); + // Assert changes are not yet present in the trunk + testState = store.getRoot().getChildNode("test"); + assertNull(testState.getChildNode("newNode")); + assertNotNull(testState.getChildNode("x")); - NodeStateBuilder newNodeBuilder = testBuilder.addNode("newNode"); - testBuilder.removeNode("a"); - final CoreValue fortyTwo = store.getValueFactory().createValue(42); - newNodeBuilder.setProperty("n", fortyTwo); + branch.merge(); - commitWithHook(testBuilder.getNodeState(), new EmptyCommitHook() { - @Override - public NodeState beforeCommit(NodeStore store, NodeState before, NodeState after) { - NodeStateBuilder afterBuilder = store.getBuilder(after); - afterBuilder.addNode("fromHook"); - return afterBuilder.getNodeState(); - } - }); - - test = store.getRoot().getChildNode("test"); - assertNotNull(test.getChildNode("newNode")); - assertNotNull(test.getChildNode("fromHook")); - assertNull(test.getChildNode("a")); - assertEquals(fortyTwo, test.getChildNode("newNode").getProperty("n").getValue()); - assertEquals(test, store.getRoot().getChildNode("test")); + // Assert changes are present in the trunk + testState = store.getRoot().getChildNode("test"); + assertNotNull(testState.getChildNode("newNode")); + assertNull(testState.getChildNode("x")); + assertEquals(fortyTwo, testState.getChildNode("newNode").getProperty("n").getValue()); + } + @Test // TODO add afterCommitHook test (OAK-100) + public void afterCommitHook() throws CommitFailedException { +// NodeState test = store.getRoot().getChildNode("test"); +// NodeStateBuilder testBuilder = store.getBuilder(test); +// +// NodeStateBuilder newNodeBuilder = testBuilder.addNode("newNode"); +// testBuilder.removeNode("a"); +// final CoreValue fortyTwo = store.getValueFactory().createValue(42); +// newNodeBuilder.setProperty("n", fortyTwo); +// final NodeState testState = testBuilder.getNodeState(); +// +// commitWithHook(testBuilder.getNodeState(), new EmptyCommitHook() { +// @Override +// public void afterCommit(NodeStore store, NodeState before, NodeState after) { +// assertNull(before.getChildNode("newNode")); +// assertNotNull(after.getChildNode("newNode")); +// assertNull(after.getChildNode("a")); +// assertEquals(fortyTwo, after.getChildNode("newNode").getProperty("n").getValue()); +// assertEquals(testState, after); +// } +// }); + } + + @Test // TODO add beforeCommitHook test (OAK-100) + public void beforeCommitHook() throws CommitFailedException { +// NodeState test = store.getRoot().getChildNode("test"); +// NodeStateBuilder testBuilder = store.getBuilder(test); +// +// NodeStateBuilder newNodeBuilder = testBuilder.addNode("newNode"); +// testBuilder.removeNode("a"); +// final CoreValue fortyTwo = store.getValueFactory().createValue(42); +// newNodeBuilder.setProperty("n", fortyTwo); +// +// commitWithHook(testBuilder.getNodeState(), new EmptyCommitHook() { +// @Override +// public NodeState beforeCommit(NodeStore store, NodeState before, NodeState after) { +// NodeStateBuilder afterBuilder = store.getBuilder(after); +// afterBuilder.addNode("fromHook"); +// return afterBuilder.getNodeState(); +// } +// }); +// +// test = store.getRoot().getChildNode("test"); +// assertNotNull(test.getChildNode("newNode")); +// assertNotNull(test.getChildNode("fromHook")); +// assertNull(test.getChildNode("a")); +// assertEquals(fortyTwo, test.getChildNode("newNode").getProperty("n").getValue()); +// assertEquals(test, store.getRoot().getChildNode("test")); } //------------------------------------------------------------< private >--- private void commitWithHook(NodeState nodeState, CommitHook commitHook) throws CommitFailedException { - - commitHookDelegate.set(commitHook); - try { - store.setRoot(nodeState); - } - finally { - commitHookDelegate.set(new EmptyCommitHook()); - } +// +// commitHookDelegate.set(commitHook); +// try { +// store.branch(nodeState); +// } +// finally { +// commitHookDelegate.set(new EmptyCommitHook()); +// } } private static class CommitHookDelegate implements CommitHook { Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java?rev=1339630&r1=1339629&r2=1339630&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/SessionDelegate.java Thu May 17 15:08:03 2012 @@ -16,21 +16,6 @@ */ package org.apache.jackrabbit.oak.jcr; -import java.io.IOException; - -import javax.annotation.CheckForNull; -import javax.jcr.ItemExistsException; -import javax.jcr.NamespaceRegistry; -import javax.jcr.PathNotFoundException; -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.Workspace; -import javax.jcr.lock.LockManager; -import javax.jcr.nodetype.NodeTypeManager; -import javax.jcr.query.QueryManager; -import javax.jcr.version.VersionManager; - import org.apache.jackrabbit.oak.api.AuthInfo; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.ContentSession; @@ -47,6 +32,20 @@ import org.apache.jackrabbit.oak.namepat import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.CheckForNull; +import javax.jcr.ItemExistsException; +import javax.jcr.NamespaceRegistry; +import javax.jcr.PathNotFoundException; +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.jcr.Workspace; +import javax.jcr.lock.LockManager; +import javax.jcr.nodetype.NodeTypeManager; +import javax.jcr.query.QueryManager; +import javax.jcr.version.VersionManager; +import java.io.IOException; + public class SessionDelegate { static final Logger log = LoggerFactory.getLogger(SessionDelegate.class); @@ -58,9 +57,9 @@ public class SessionDelegate { private final NamespaceRegistry nsRegistry; private final Workspace workspace; private final Session session; + private final Root root; private boolean isAlive = true; - private Root root; SessionDelegate(Repository repository, ContentSession contentSession) throws RepositoryException { this.repository = repository; @@ -134,7 +133,6 @@ public class SessionDelegate { public void save() throws RepositoryException { try { root.commit(); - root = contentSession.getCurrentRoot(); } catch (CommitFailedException e) { throw new RepositoryException(e); @@ -146,7 +144,7 @@ public class SessionDelegate { root.rebase(); } else { - root = contentSession.getCurrentRoot(); + root.clear(); } }