Return-Path: X-Original-To: apmail-jackrabbit-commits-archive@www.apache.org Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4630B992E for ; Thu, 16 Feb 2012 17:18:00 +0000 (UTC) Received: (qmail 48655 invoked by uid 500); 16 Feb 2012 17:18:00 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 48566 invoked by uid 500); 16 Feb 2012 17:18:00 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 48556 invoked by uid 99); 16 Feb 2012 17:18:00 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 16 Feb 2012 17:18:00 +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, 16 Feb 2012 17:17:58 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 30E552388860; Thu, 16 Feb 2012 17:17:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1245088 - in /jackrabbit/sandbox/jackrabbit-microkernel/src: main/java/org/apache/jackrabbit/state/ChangeTree.java main/java/org/apache/jackrabbit/state/TransientSpace.java test/java/org/apache/jackrabbit/RepositoryTest.java Date: Thu, 16 Feb 2012 17:17:38 -0000 To: commits@jackrabbit.apache.org From: mduerig@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120216171739.30E552388860@eris.apache.org> Author: mduerig Date: Thu Feb 16 17:17:38 2012 New Revision: 1245088 URL: http://svn.apache.org/viewvc?rev=1245088&view=rev Log: Microkernel based prototype of JCR implementation (WIP) - make changeTree immutable and acquire new changeTree instance on refresh Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java?rev=1245088&r1=1245087&r2=1245088&view=diff ============================================================================== --- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java (original) +++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java Thu Feb 16 17:17:38 2012 @@ -113,14 +113,6 @@ public class ChangeTree { } /** - * Clear all transient changes made to this change tree. - */ - public void clear() { - root.clear(); - existing.clear(); - } - - /** * @return {@code true} iff this change tree has transient changes. */ public boolean hasChanges() { Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java?rev=1245088&r1=1245087&r2=1245088&view=diff ============================================================================== --- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java (original) +++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/TransientSpace.java Thu Feb 16 17:17:38 2012 @@ -26,6 +26,7 @@ import org.apache.jackrabbit.mk.api.Micr import org.apache.jackrabbit.spi.commons.iterator.Predicate; import org.apache.jackrabbit.state.ChangeTree.Listener; import org.apache.jackrabbit.state.ChangeTree.NodeDelta; +import org.apache.jackrabbit.utils.Provider; import javax.jcr.RepositoryException; @@ -37,9 +38,10 @@ import javax.jcr.RepositoryException; */ public class TransientSpace { private final MicroKernel microkernel; - private final ChangeTree changeTree; private final ChangeLog changeLog = new ChangeLog(); + private final Provider changeTreeProvider; + private ChangeTree changeTree; private String revision; /** @@ -49,11 +51,11 @@ public class TransientSpace { * @param microkernel * @param revision */ - public TransientSpace(String workspace, final MicroKernel microkernel, final String revision) { + public TransientSpace(final String workspace, final MicroKernel microkernel, final String revision) { this.microkernel = microkernel; this.revision = revision; - Listener changeTreeListener = new Listener() { + final Listener changeTreeListener = new Listener() { @Override public void added(NodeDelta nodeDelta) { changeLog.addNode(nodeDelta.getPath()); @@ -75,14 +77,21 @@ public class TransientSpace { } }; - Predicate nodeExists = new Predicate() { + final Predicate nodeExists = new Predicate() { @Override public boolean evaluate(Path path) { return microkernel.nodeExists(path.toMkPath(), getRevision()); } }; - changeTree = new ChangeTree(Path.create(workspace), changeTreeListener, nodeExists); + changeTreeProvider = new Provider() { + @Override + public ChangeTree get() { + return new ChangeTree(Path.create(workspace), changeTreeListener, nodeExists); + } + }; + + changeTree = changeTreeProvider.get(); } /** @@ -104,7 +113,7 @@ public class TransientSpace { try { revision = microkernel.commit("", changeLog.toJsop(), revision, ""); changeLog.clear(); - changeTree.clear(); + changeTree = changeTreeProvider.get(); return revision; } catch (MicroKernelException e) { @@ -122,7 +131,7 @@ public class TransientSpace { public String refresh(boolean keepChanges) { if (!keepChanges) { changeLog.clear(); - changeTree.clear(); + changeTree = changeTreeProvider.get(); } return revision = microkernel.getHeadRevision(); Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java?rev=1245088&r1=1245087&r2=1245088&view=diff ============================================================================== --- jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java (original) +++ jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java Thu Feb 16 17:17:38 2012 @@ -1126,9 +1126,6 @@ public class RepositoryTest { public void sessionRefreshFalse() throws RepositoryException { Session session = getRepository().login(); try { - session.getNode("/").addNode("foo"); - session.save(); - Node foo = session.getNode("/foo"); foo.addNode("added"); NodeIterator it = foo.getNodes();