org.apache.jackrabbit.core
Class HierarchyManagerImpl

java.lang.Object
  extended byorg.apache.jackrabbit.core.HierarchyManagerImpl
All Implemented Interfaces:
HierarchyManager
Direct Known Subclasses:
CachingHierarchyManager, ZombieHierarchyManager

public class HierarchyManagerImpl
extends Object
implements HierarchyManager

HierarchyManagerImpl ...


Field Summary
protected  NamespaceResolver nsResolver
           
protected  ItemStateManager provider
           
protected  NodeId rootNodeId
           
 
Constructor Summary
HierarchyManagerImpl(NodeId rootNodeId, ItemStateManager provider, NamespaceResolver nsResolver)
           
 
Method Summary
protected  void buildPath(Path.PathBuilder builder, ItemState state)
          Adds the path element of an item id to the path currently being built.
protected  NodeState.ChildNodeEntry getChildNodeEntry(NodeState parent, NodeId id)
          Returns the ChildNodeEntry of parent with the specified uuid or null if there's no such entry.
protected  NodeState.ChildNodeEntry getChildNodeEntry(NodeState parent, QName name, int index)
          Returns the ChildNodeEntry of parent with the specified name and index or null if there's no such entry.
 int getDepth(ItemId id)
          Returns the depth of the specified item which is equivalent to getPath(id).getAncestorCount(). The depth reflects the absolute hierarchy level.
protected  ItemState getItemState(ItemId id)
          Return an item state, given its item id.
 QName getName(ItemId itemId)
          Returns the name of the specified item.
 NamespaceResolver getNamespaceResolver()
           
protected  NodeId getParentId(ItemState state)
          Returns the parentUUID of the given item.
 Path getPath(ItemId id)
          Returns the path to the given item.
 int getRelativeDepth(NodeId ancestorId, ItemId descendantId)
          Returns the depth of the specified descendant relative to the given ancestor. If ancestorId and descendantId denote the same item 0 is returned. If ancestorId does not denote an ancestor -1 is returned.
 NodeId getRootNodeId()
           
protected  boolean hasItemState(ItemId id)
          Determines whether an item state for a given item id exists.
 boolean isAncestor(NodeId nodeId, ItemId itemId)
          Determines whether the node with the specified nodeId is an ancestor of the item denoted by the given itemId. This is equivalent to getPath(nodeId).isAncestorOf(getPath(itemId)).
 ItemId resolvePath(Path path)
          Resolves a path into an item id.
protected  ItemId resolvePath(Path path, ItemId id, int next)
          Resolve a path into an item id.
protected  ItemId resolvePath(Path path, ItemState state, int next)
          Resolve a path into an item id.
 String safeGetJCRPath(ItemId id)
          Failsafe translation of internal ItemId to JCR path for use in error messages etc.
 String safeGetJCRPath(Path path)
          Failsafe conversion of internal Path to JCR path for use in error messages etc.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rootNodeId

protected final NodeId rootNodeId

provider

protected final ItemStateManager provider

nsResolver

protected final NamespaceResolver nsResolver
Constructor Detail

HierarchyManagerImpl

public HierarchyManagerImpl(NodeId rootNodeId,
                            ItemStateManager provider,
                            NamespaceResolver nsResolver)
Method Detail

getRootNodeId

public NodeId getRootNodeId()

getNamespaceResolver

public NamespaceResolver getNamespaceResolver()

safeGetJCRPath

public String safeGetJCRPath(Path path)
Failsafe conversion of internal Path to JCR path for use in error messages etc.

Parameters:
path - path to convert
Returns:
JCR path

safeGetJCRPath

public String safeGetJCRPath(ItemId id)
Failsafe translation of internal ItemId to JCR path for use in error messages etc.

Parameters:
id - id to translate
Returns:
JCR path

getItemState

protected ItemState getItemState(ItemId id)
                          throws NoSuchItemStateException,
                                 ItemStateException
Return an item state, given its item id.

Low-level hook provided for specialized derived classes.

Parameters:
id - item id
Returns:
item state
Throws:
NoSuchItemStateException - if the item does not exist
ItemStateException - if an error occurs
See Also:
ZombieHierarchyManager.getItemState(ItemId)

hasItemState

protected boolean hasItemState(ItemId id)
Determines whether an item state for a given item id exists.

Low-level hook provided for specialized derived classes.

Parameters:
id - item id
Returns:
true if an item state exists, otherwise false
See Also:
ZombieHierarchyManager.hasItemState(ItemId)

getParentId

protected NodeId getParentId(ItemState state)
Returns the parentUUID of the given item.

Low-level hook provided for specialized derived classes.

Parameters:
state - item state
Returns:
parentUUID of the given item
See Also:
ZombieHierarchyManager.getParentId(ItemState)

getChildNodeEntry

protected NodeState.ChildNodeEntry getChildNodeEntry(NodeState parent,
                                                     NodeId id)
Returns the ChildNodeEntry of parent with the specified uuid or null if there's no such entry.

Low-level hook provided for specialized derived classes.

Parameters:
parent - node state
id - id of child node entry
Returns:
the ChildNodeEntry of parent with the specified uuid or null if there's no such entry.
See Also:
ZombieHierarchyManager.getChildNodeEntry(NodeState, NodeId)

getChildNodeEntry

protected NodeState.ChildNodeEntry getChildNodeEntry(NodeState parent,
                                                     QName name,
                                                     int index)
Returns the ChildNodeEntry of parent with the specified name and index or null if there's no such entry.

Low-level hook provided for specialized derived classes.

Parameters:
parent - node state
name - name of child node entry
index - index of child node entry
Returns:
the ChildNodeEntry of parent with the specified name and index or null if there's no such entry.
See Also:
ZombieHierarchyManager.getChildNodeEntry(NodeState, QName, int)

resolvePath

protected ItemId resolvePath(Path path,
                             ItemId id,
                             int next)
                      throws RepositoryException
Resolve a path into an item id. Recursively invoked method that may be overridden by some subclass to either return cached responses or add response to cache.

Parameters:
path - full path of item to resolve
id - intermediate item id
next - next path element index to resolve
Returns:
the id of the item denoted by path
Throws:
RepositoryException

resolvePath

protected ItemId resolvePath(Path path,
                             ItemState state,
                             int next)
                      throws PathNotFoundException,
                             ItemStateException
Resolve a path into an item id. Recursively invoked method that may be overridden by some subclass to either return cached responses or add response to cache.

Parameters:
path - full path of item to resolve
state - intermediate state
next - next path element index to resolve
Returns:
the id of the item denoted by path
Throws:
PathNotFoundException
ItemStateException

buildPath

protected void buildPath(Path.PathBuilder builder,
                         ItemState state)
                  throws ItemStateException,
                         RepositoryException
Adds the path element of an item id to the path currently being built. Recursively invoked method that may be overridden by some subclass to either return cached responses or add response to cache. On exit, builder contains the path of state.

Parameters:
builder - builder currently being used
state - item to find path of
Throws:
ItemStateException
RepositoryException

resolvePath

public ItemId resolvePath(Path path)
                   throws PathNotFoundException,
                          RepositoryException
Resolves a path into an item id.

Specified by:
resolvePath in interface HierarchyManager
Parameters:
path -
Returns:
Throws:
RepositoryException
PathNotFoundException

getPath

public Path getPath(ItemId id)
             throws ItemNotFoundException,
                    RepositoryException
Returns the path to the given item.

Specified by:
getPath in interface HierarchyManager
Parameters:
id -
Returns:
Throws:
RepositoryException
ItemNotFoundException

getName

public QName getName(ItemId itemId)
              throws ItemNotFoundException,
                     RepositoryException
Returns the name of the specified item.

Specified by:
getName in interface HierarchyManager
Parameters:
itemId - id of item whose name should be returned
Returns:
Throws:
RepositoryException
ItemNotFoundException

getDepth

public int getDepth(ItemId id)
             throws ItemNotFoundException,
                    RepositoryException
Returns the depth of the specified item which is equivalent to getPath(id).getAncestorCount(). The depth reflects the absolute hierarchy level.

Specified by:
getDepth in interface HierarchyManager
Parameters:
id - item id
Returns:
the depth of the specified item
Throws:
RepositoryException - if another error occurs
ItemNotFoundException - if the specified id does not denote an existing item.

getRelativeDepth

public int getRelativeDepth(NodeId ancestorId,
                            ItemId descendantId)
                     throws ItemNotFoundException,
                            RepositoryException
Returns the depth of the specified descendant relative to the given ancestor. If ancestorId and descendantId denote the same item 0 is returned. If ancestorId does not denote an ancestor -1 is returned.

Specified by:
getRelativeDepth in interface HierarchyManager
Parameters:
ancestorId - ancestor id
descendantId - descendant id
Returns:
the relative depth; -1 if ancestorId does not denote an ancestor of the item denoted by descendantId (or itself).
Throws:
RepositoryException - if another error occurs
ItemNotFoundException - if either of the specified id's does not denote an existing item.

isAncestor

public boolean isAncestor(NodeId nodeId,
                          ItemId itemId)
                   throws ItemNotFoundException,
                          RepositoryException
Determines whether the node with the specified nodeId is an ancestor of the item denoted by the given itemId. This is equivalent to getPath(nodeId).isAncestorOf(getPath(itemId)).

Specified by:
isAncestor in interface HierarchyManager
Parameters:
nodeId - node id
itemId - item id
Returns:
true if the node with the specified nodeId is an ancestor of the item denoted by the given itemIdfalse otherwise
Throws:
ItemNotFoundException - if any of the specified id's does not denote an existing item.
RepositoryException - if another error occurs


Copyright © 2004-2006 The Apache Software Foundation. All Rights Reserved.