From cadc52f6e2ed78f392d5a90a8aa597dfc710da04 Mon Sep 17 00:00:00 2001
From: Jukka Zitting <jukka@apache.org>
Date: Thu, 3 May 2012 19:59:16 +0200
Subject: [jackrabbit-oak] OAK-84: Delegates for Session, Node, Property and
 Item
Reply-To: jzitting@adobe.com
To: jzitting@adobe.com

Use AbstractItem from jcr-commons for the getDepth() and getAncestor() methods
---
 .../apache/jackrabbit/oak/jcr/ItemDelegate.java    |    6 ------
 .../org/apache/jackrabbit/oak/jcr/ItemImpl.java    |   11 ++---------
 .../apache/jackrabbit/oak/jcr/NodeDelegate.java    |   14 --------------
 .../org/apache/jackrabbit/oak/jcr/NodeImpl.java    |    8 --------
 .../apache/jackrabbit/oak/jcr/PropertyImpl.java    |   16 ----------------
 5 files changed, 2 insertions(+), 53 deletions(-)

diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemDelegate.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemDelegate.java
index 4b1c17b..40280eb 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemDelegate.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemDelegate.java
@@ -14,18 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.jackrabbit.oak.jcr;
 
-import org.apache.jackrabbit.oak.commons.PathUtils;
-
 public abstract class ItemDelegate {
     
     abstract String getName();
 
     abstract String getPath();
 
-    public int getDepth() {
-        return PathUtils.getDepth(getPath());
-    }
 }
diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
index 73f4d1e..31c6a61 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/ItemImpl.java
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.jcr;
 
+import org.apache.jackrabbit.commons.AbstractItem;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -29,7 +30,7 @@ import javax.jcr.ValueFactory;
 /**
  * {@code ItemImpl}...
  */
-abstract class ItemImpl implements Item {
+abstract class ItemImpl extends AbstractItem {
 
     protected final SessionContext sessionContext;
     protected final ItemDelegate dlg;
@@ -47,14 +48,6 @@ abstract class ItemImpl implements Item {
     //---------------------------------------------------------------< Item >---
 
     /**
-     * @see javax.jcr.Item#getDepth()
-     */
-    @Override
-    public int getDepth() throws RepositoryException {
-        return dlg.getDepth();
-    }
-
-    /**
      * @see javax.jcr.Item#getName()
      */
     @Override
diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java
index 0e70045..c0adee7 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java
@@ -52,20 +52,6 @@ public class NodeDelegate extends ItemDelegate {
         return new NodeDelegate(sessionContext, parentState.getChild(name));
     }
 
-    NodeDelegate getAncestor(int depth) throws RepositoryException {
-        int current = getDepth();
-        if (depth < 0 || depth > current) {
-            throw new ItemNotFoundException("ancestor at depth " + depth
-                    + " does not exist");
-        }
-        Tree ancestor = getTree();
-        while (depth < current) {
-            ancestor = ancestor.getParent();
-            current -= 1;
-        }
-        return new NodeDelegate(sessionContext, ancestor);
-    }
-
     Iterator<NodeDelegate> getChildren() throws RepositoryException {
         return nodeDelegateIterator(getTree().getChildren().iterator());
     }
diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
index c3374c4..869ae51 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
@@ -99,14 +99,6 @@ public class NodeImpl extends ItemImpl implements Node  {
     }
 
     /**
-     * @see Item#getAncestor(int)
-     */
-    @Override
-    public Item getAncestor(int depth) throws RepositoryException {
-        return new NodeImpl(dlg.getAncestor(depth));
-    }
-
-    /**
      * @see javax.jcr.Item#isNew()
      */
     @Override
diff --git a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
index 532f499..799c5f2 100644
--- a/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
+++ b/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/PropertyImpl.java
@@ -25,7 +25,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.jcr.Binary;
-import javax.jcr.Item;
 import javax.jcr.ItemNotFoundException;
 import javax.jcr.ItemVisitor;
 import javax.jcr.Node;
@@ -78,21 +77,6 @@ public class PropertyImpl extends ItemImpl implements Property {
     }
 
     /**
-     * @see Item#getAncestor(int)
-     */
-    @Override
-    public Item getAncestor(int depth) throws RepositoryException {
-        int myDepth = getDepth();
-        if (depth == myDepth) {
-            return this;
-        } else if (depth == myDepth - 1) {
-            return getParent();
-        } else {
-            return getParent().getAncestor(depth);
-        }
-    }
-
-    /**
      * @see javax.jcr.Item#isNew()
      */
     @Override
-- 
1.7.7.6

