You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by dp...@apache.org on 2008/04/11 09:48:08 UTC
svn commit: r647072 -
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java
Author: dpfister
Date: Fri Apr 11 00:48:04 2008
New Revision: 647072
URL: http://svn.apache.org/viewvc?rev=647072&view=rev
Log:
JCR-1104 - JSR 283 support
- shareble nodes (work in progress)
- fix test failure introduced in r646336
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java?rev=647072&r1=647071&r2=647072&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/HierarchyManagerImpl.java Fri Apr 11 00:48:04 2008
@@ -225,14 +225,18 @@
* one parent.
*
* @param state item state
+ * @param useOverlayed whether to use overlayed state for shareable nodes
* @return set of parent <code>NodeId</code>s. If state has no parent,
* array has length <code>0</code>.
*/
- protected Set getParentIds(ItemState state) {
+ protected Set getParentIds(ItemState state, boolean useOverlayed) {
if (state.isNode()) {
// if this is a node, quickly check whether it is shareable and
// whether it contains more than one parent
NodeState ns = (NodeState) state;
+ if (ns.isShareable() && useOverlayed && ns.hasOverlayedState()) {
+ ns = (NodeState) ns.getOverlayedState();
+ }
Set s = ns.getSharedSet();
if (s.size() > 1) {
return s;
@@ -618,7 +622,7 @@
}
try {
ItemState state = getItemState(descendant);
- Set parentIds = getParentIds(state);
+ Set parentIds = getParentIds(state, false);
while (parentIds.size() > 0) {
if (parentIds.contains(ancestor)) {
return true;
@@ -627,7 +631,7 @@
Iterator iter = parentIds.iterator();
while (iter.hasNext()) {
NodeId parentId = (NodeId) iter.next();
- grandparentIds.addAll(getParentIds(getItemState(parentId)));
+ grandparentIds.addAll(getParentIds(getItemState(parentId), false));
}
parentIds = grandparentIds;
}
@@ -658,10 +662,7 @@
int depth = 1;
try {
ItemState state = getItemState(descendant);
- if (state.hasOverlayedState()) {
- state = state.getOverlayedState();
- }
- Set parentIds = getParentIds(state);
+ Set parentIds = getParentIds(state, true);
while (parentIds.size() > 0) {
if (parentIds.contains(ancestor)) {
return depth;
@@ -672,10 +673,7 @@
while (iter.hasNext()) {
NodeId parentId = (NodeId) iter.next();
state = getItemState(parentId);
- if (state.hasOverlayedState()) {
- state = state.getOverlayedState();
- }
- grandparentIds.addAll(getParentIds(state));
+ grandparentIds.addAll(getParentIds(state, true));
}
parentIds = grandparentIds;
}