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 C993CD365 for ; Tue, 10 Jul 2012 09:42:42 +0000 (UTC) Received: (qmail 69925 invoked by uid 500); 10 Jul 2012 09:42:42 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 69905 invoked by uid 500); 10 Jul 2012 09:42:42 -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 69881 invoked by uid 99); 10 Jul 2012 09:42:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Jul 2012 09:42:42 +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; Tue, 10 Jul 2012 09:42:40 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 850882388962; Tue, 10 Jul 2012 09:42:19 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1359541 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/kernel/ test/java/org/apache/jackrabbit/oak/kernel/ Date: Tue, 10 Jul 2012 09:42:19 -0000 To: oak-commits@jackrabbit.apache.org From: jukka@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120710094219.850882388962@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jukka Date: Tue Jul 10 09:42:18 2012 New Revision: 1359541 URL: http://svn.apache.org/viewvc?rev=1359541&view=rev Log: OAK-176: Reduce CoreValueFactoryImpl footprint Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/CoreValueMapper.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/CoreValueFactoryTest.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/CoreValueMapper.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/CoreValueMapper.java?rev=1359541&r1=1359540&r2=1359541&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/CoreValueMapper.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/CoreValueMapper.java Tue Jul 10 09:42:18 2012 @@ -23,6 +23,7 @@ import java.util.Map; import javax.jcr.PropertyType; +import org.apache.jackrabbit.mk.api.MicroKernel; import org.apache.jackrabbit.mk.json.JsopReader; import org.apache.jackrabbit.oak.api.CoreValue; import org.apache.jackrabbit.oak.api.CoreValueFactory; @@ -105,30 +106,34 @@ public class CoreValueMapper { return sb.toString(); } + public static CoreValue fromJsopReader(JsopReader reader, MicroKernel kernel) { + return fromJsopReader(reader, new CoreValueFactoryImpl(kernel)); + } + /** * Read a single value from the specified reader and convert it into a * {@code CoreValue}. This method takes type-hint prefixes into account. * * @param reader The JSON reader. - * @param valueFactory The factory used to create the value. + * @param factory The factory used to create the value. * @return The value such as defined by the token obtained from the reader. */ - public static CoreValue fromJsopReader(JsopReader reader, CoreValueFactory valueFactory) { + public static CoreValue fromJsopReader(JsopReader reader, CoreValueFactory factory) { CoreValue value; if (reader.matches(JsopReader.NUMBER)) { String number = reader.getToken(); - value = valueFactory.createValue(Long.valueOf(number)); + value = factory.createValue(Long.valueOf(number)); } else if (reader.matches(JsopReader.TRUE)) { - value = valueFactory.createValue(true); + value = factory.createValue(true); } else if (reader.matches(JsopReader.FALSE)) { - value = valueFactory.createValue(false); + value = factory.createValue(false); } else if (reader.matches(JsopReader.STRING)) { String jsonString = reader.getToken(); if (startsWithHint(jsonString)) { int type = HINT2TYPE.get(jsonString.substring(0, 3)); - value = valueFactory.createValue(jsonString.substring(4), type); + value = factory.createValue(jsonString.substring(4), type); } else { - value = valueFactory.createValue(jsonString); + value = factory.createValue(jsonString); } } else { throw new IllegalArgumentException("Unexpected token: " + reader.getToken()); @@ -144,10 +149,10 @@ public class CoreValueMapper { * @param valueFactory The factory used to create the values. * @return A list of values such as defined by the reader. */ - public static List listFromJsopReader(JsopReader reader, CoreValueFactory valueFactory) { + public static List listFromJsopReader(JsopReader reader, MicroKernel kernel) { List values = new ArrayList(); while (!reader.matches(']')) { - values.add(fromJsopReader(reader, valueFactory)); + values.add(fromJsopReader(reader, kernel)); reader.matches(','); } return values; Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java?rev=1359541&r1=1359540&r2=1359541&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeState.java Tue Jul 10 09:42:18 2012 @@ -22,7 +22,6 @@ import org.apache.jackrabbit.mk.api.Micr import org.apache.jackrabbit.mk.json.JsopReader; import org.apache.jackrabbit.mk.json.JsopTokenizer; import org.apache.jackrabbit.oak.api.CoreValue; -import org.apache.jackrabbit.oak.api.CoreValueFactory; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.plugins.memory.MemoryChildNodeEntry; import org.apache.jackrabbit.oak.spi.state.AbstractNodeState; @@ -52,7 +51,6 @@ final class KernelNodeState extends Abst static final int MAX_CHILD_NODE_NAMES = 1000; private final MicroKernel kernel; - private final CoreValueFactory valueFactory; private final String path; @@ -77,14 +75,12 @@ final class KernelNodeState extends Abst * @param path * @param revision */ - public KernelNodeState(MicroKernel kernel, CoreValueFactory valueFactory, String path, String revision) { + public KernelNodeState(MicroKernel kernel, String path, String revision) { assert kernel != null; - assert valueFactory != null; assert path != null; assert revision != null; this.kernel = kernel; - this.valueFactory = valueFactory; this.path = path; this.revision = revision; } @@ -113,11 +109,11 @@ final class KernelNodeState extends Abst if ("/".equals(path)) { childPath = '/' + name; } - childNodes.put(name, new KernelNodeState(kernel, valueFactory, childPath, revision)); + childNodes.put(name, new KernelNodeState(kernel, childPath, revision)); } else if (reader.matches('[')) { - properties.put(name, new PropertyStateImpl(name, CoreValueMapper.listFromJsopReader(reader, valueFactory))); + properties.put(name, new PropertyStateImpl(name, CoreValueMapper.listFromJsopReader(reader, kernel))); } else { - CoreValue cv = CoreValueMapper.fromJsopReader(reader, valueFactory); + CoreValue cv = CoreValueMapper.fromJsopReader(reader, kernel); properties.put(name, new PropertyStateImpl(name, cv)); } } while (reader.matches(',')); @@ -157,7 +153,7 @@ final class KernelNodeState extends Abst if (child == null && childNodeCount > MAX_CHILD_NODE_NAMES) { String childPath = getChildPath(name); if (kernel.nodeExists(childPath, revision)) { - child = new KernelNodeState(kernel, valueFactory, childPath, revision); + child = new KernelNodeState(kernel, childPath, revision); } } return child; @@ -300,8 +296,8 @@ final class KernelNodeState extends Abst if (reader.matches('{')) { reader.read('}'); String childPath = getChildPath(name); - NodeState child = new KernelNodeState( - kernel, valueFactory, childPath, revision); + NodeState child = + new KernelNodeState(kernel, childPath, revision); entries.add(new MemoryChildNodeEntry(name, child)); } else { reader.read(); Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java?rev=1359541&r1=1359540&r2=1359541&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStore.java Tue Jul 10 09:42:18 2012 @@ -51,11 +51,6 @@ public class KernelNodeStore extends Mem private volatile Observer observer = EmptyObserver.INSTANCE; /** - * Value factory backed by the {@link #kernel} instance. - */ - private final CoreValueFactory valueFactory; - - /** * State of the current root node. */ private KernelNodeState root; @@ -63,9 +58,7 @@ public class KernelNodeStore extends Mem public KernelNodeStore(MicroKernel kernel) { assert kernel != null; this.kernel = kernel; - this.valueFactory = new CoreValueFactoryImpl(kernel); - this.root = new KernelNodeState( - kernel, valueFactory, "/", kernel.getHeadRevision()); + this.root = new KernelNodeState(kernel, "/", kernel.getHeadRevision()); } public CommitEditor getEditor() { @@ -93,8 +86,7 @@ public class KernelNodeStore extends Mem String revision = kernel.getHeadRevision(); if (!revision.equals(root.getRevision())) { NodeState before = root; - root = new KernelNodeState( - kernel, valueFactory, "/", kernel.getHeadRevision()); + root = new KernelNodeState(kernel, "/", kernel.getHeadRevision()); observer.contentChanged(this, before, root); } return root; @@ -107,7 +99,7 @@ public class KernelNodeStore extends Mem @Override public CoreValueFactory getValueFactory() { - return valueFactory; + return new CoreValueFactoryImpl(kernel); } //------------------------------------------------------------< internal >--- Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java?rev=1359541&r1=1359540&r2=1359541&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java Tue Jul 10 09:42:18 2012 @@ -19,7 +19,6 @@ package org.apache.jackrabbit.oak.kernel import org.apache.jackrabbit.mk.api.MicroKernel; import org.apache.jackrabbit.mk.api.MicroKernelException; import org.apache.jackrabbit.oak.api.CommitFailedException; -import org.apache.jackrabbit.oak.api.CoreValueFactory; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.spi.commit.CommitEditor; @@ -59,7 +58,7 @@ class KernelNodeStoreBranch implements N MicroKernel kernel = store.getKernel(); this.branchRevision = kernel.branch(null); - this.currentRoot = new KernelNodeState(kernel, getValueFactory(), "/", branchRevision); + this.currentRoot = new KernelNodeState(kernel, "/", branchRevision); this.base = currentRoot; this.committed = currentRoot; } @@ -134,7 +133,7 @@ class KernelNodeStoreBranch implements N branchRevision = null; currentRoot = null; committed = null; - KernelNodeState committed = new KernelNodeState(kernel, getValueFactory(), "/", mergedRevision); + KernelNodeState committed = new KernelNodeState(kernel, "/", mergedRevision); return committed; } catch (MicroKernelException e) { @@ -144,10 +143,6 @@ class KernelNodeStoreBranch implements N //------------------------------------------------------------< private >--- - private CoreValueFactory getValueFactory() { - return store.getValueFactory(); - } - private NodeState getNode(String path) { NodeState node = getRoot(); for (String name : elements(path)) { @@ -163,7 +158,7 @@ class KernelNodeStoreBranch implements N private void commit(String jsop) { MicroKernel kernel = store.getKernel(); branchRevision = kernel.commit("/", jsop, branchRevision, null); - currentRoot = new KernelNodeState(kernel, getValueFactory(), "/", branchRevision); + currentRoot = new KernelNodeState(kernel, "/", branchRevision); committed = currentRoot; } Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/CoreValueFactoryTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/CoreValueFactoryTest.java?rev=1359541&r1=1359540&r2=1359541&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/CoreValueFactoryTest.java (original) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/kernel/CoreValueFactoryTest.java Tue Jul 10 09:42:18 2012 @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.kernel; +import org.apache.jackrabbit.mk.api.MicroKernel; import org.apache.jackrabbit.mk.core.MicroKernelImpl; import org.apache.jackrabbit.mk.json.JsopReader; import org.apache.jackrabbit.mk.json.JsopTokenizer; @@ -42,8 +43,10 @@ import static org.junit.Assert.assertEqu */ public class CoreValueFactoryTest { + private final MicroKernel kernel = new MicroKernelImpl(); + private final CoreValueFactory valueFactory = - new CoreValueFactoryImpl(new MicroKernelImpl()); + new CoreValueFactoryImpl(kernel); private Map singleValueMap; @@ -151,7 +154,7 @@ public class CoreValueFactoryTest { for (CoreValue v : singleValueMap.keySet()) { String json = singleValueMap.get(v); JsopReader reader = new JsopTokenizer(json); - assertEquals(v, CoreValueMapper.fromJsopReader(reader, valueFactory)); + assertEquals(v, CoreValueMapper.fromJsopReader(reader, kernel)); } } @@ -169,7 +172,7 @@ public class CoreValueFactoryTest { List values = mvValueMap.get(json); JsopReader reader = new JsopTokenizer(json); if (reader.matches('[')) { - assertEquals(values, CoreValueMapper.listFromJsopReader(reader, valueFactory)); + assertEquals(values, CoreValueMapper.listFromJsopReader(reader, kernel)); } } }