From oak-commits-return-2111-apmail-jackrabbit-oak-commits-archive=jackrabbit.apache.org@jackrabbit.apache.org Thu Nov 1 20:05:01 2012 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 DE73ADEAC for ; Thu, 1 Nov 2012 20:05:01 +0000 (UTC) Received: (qmail 41388 invoked by uid 500); 1 Nov 2012 20:05:01 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 41372 invoked by uid 500); 1 Nov 2012 20:05:01 -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 41361 invoked by uid 99); 1 Nov 2012 20:05:01 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Nov 2012 20:05:01 +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, 01 Nov 2012 20:05:00 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 1930E23888E4; Thu, 1 Nov 2012 20:04:17 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1404738 - in /jackrabbit/oak/trunk/oak-jcr/src: main/java/org/apache/jackrabbit/oak/jcr/ test/java/org/apache/jackrabbit/oak/jcr/ Date: Thu, 01 Nov 2012 20:04:16 -0000 To: oak-commits@jackrabbit.apache.org From: mduerig@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121101200417.1930E23888E4@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: mduerig Date: Thu Nov 1 20:04:16 2012 New Revision: 1404738 URL: http://svn.apache.org/viewvc?rev=1404738&view=rev Log: OAK-418: Reduce/avoid re-resolving the underlying tree instances on every access in Item/Property/NodeDelegate Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemDelegate.java jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemDelegate.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemDelegate.java?rev=1404738&r1=1404737&r2=1404738&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemDelegate.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemDelegate.java Thu Nov 1 20:04:16 2012 @@ -85,7 +85,11 @@ public abstract class ItemDelegate { */ @Nonnull public Status getStatus() throws InvalidItemStateException { - return getLocation().getStatus(); // never null + Status status = getLocation().getStatus(); + if (status == null) { + throw new InvalidItemStateException(); + } + return status; } /** Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java?rev=1404738&r1=1404737&r2=1404738&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java Thu Nov 1 20:04:16 2012 @@ -127,8 +127,7 @@ public class NodeDelegate extends ItemDe */ @CheckForNull public NodeDelegate getChild(String relPath) throws InvalidItemStateException { - TreeLocation childLocation = getChildLocation(relPath); - return create(sessionDelegate, childLocation); + return create(sessionDelegate, getChildLocation(relPath)); } /** @@ -235,7 +234,7 @@ public class NodeDelegate extends ItemDe Tree getTree() throws InvalidItemStateException { Tree tree = getLocation().getTree(); if (tree == null) { - throw new InvalidItemStateException("Node is stale"); + throw new InvalidItemStateException(); } return tree; } Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java?rev=1404738&r1=1404737&r2=1404738&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyDelegate.java Thu Nov 1 20:04:16 2012 @@ -74,7 +74,7 @@ public class PropertyDelegate extends It * @param value */ public void setValue(Value value) throws RepositoryException { - getLocation().set(PropertyStates.createProperty(getName(), value)); + getPropertyLocation().set(PropertyStates.createProperty(getName(), value)); } /** @@ -82,28 +82,27 @@ public class PropertyDelegate extends It * @param values */ public void setValues(Iterable values) throws RepositoryException { - getLocation().set(PropertyStates.createProperty(getName(), values)); + getPropertyLocation().set(PropertyStates.createProperty(getName(), values)); } /** * Remove the property */ public void remove() throws InvalidItemStateException { - getLocation().remove(); + getPropertyLocation().remove(); } //------------------------------------------------------------< private >--- @Nonnull private PropertyState getPropertyState() throws InvalidItemStateException { - return getLocation().getProperty(); // Not null + return getPropertyLocation().getProperty(); // Not null } - @Override - public PropertyLocation getLocation() throws InvalidItemStateException { - TreeLocation location = super.getLocation(); - if (location.getProperty() == null) { - throw new InvalidItemStateException("Property is stale"); + private PropertyLocation getPropertyLocation() throws InvalidItemStateException { + TreeLocation location = getLocation(); + if (!(location instanceof PropertyLocation)) { + throw new InvalidItemStateException(); } return (PropertyLocation) location; } Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java?rev=1404738&r1=1404737&r2=1404738&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java (original) +++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/RepositoryTest.java Thu Nov 1 20:04:16 2012 @@ -1049,6 +1049,19 @@ public class RepositoryTest extends Abst } @Test + public void accessRemovedProperty() throws RepositoryException { + Node foo = getNode("/foo"); + Property p = foo.setProperty("name", "value"); + p.remove(); + try { + p.getPath(); + fail("Expected InvalidItemStateException"); + } + catch (InvalidItemStateException expected) { + } + } + + @Test public void getReferences() throws RepositoryException { Session session = getAdminSession(); Node referee = getNode("/foo");