You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2006/09/20 14:43:40 UTC
svn commit: r448191 - in
/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi:
./ state/ util/ xml/
Author: angela
Date: Wed Sep 20 05:43:39 2006
New Revision: 448191
URL: http://svn.apache.org/viewvc?view=rev&rev=448191
Log:
work in progress
- move getPath from HierarchyManager to ItemState
- remove unused ZombieHierarchyManager
- remove protected methods in HierarchyManagerImpl, that were used by Zombie-HM.
- ItemStateFactory: add method createRootState(ItemStateManager)
Removed:
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ZombieHierarchyManager.java
Modified:
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManager.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManagerImpl.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/CachingItemStateManager.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateFactory.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateValidator.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/SessionImporter.java
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManager.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManager.java Wed Sep 20 05:43:39 2006
@@ -40,16 +40,6 @@
ItemState getItemState(Path qPath) throws PathNotFoundException, RepositoryException;
/**
- * Returns the path to the item represented by the given state object.
- *
- * @param itemState
- * @return
- * @throws ItemNotFoundException
- * @throws RepositoryException
- */
- Path getQPath(ItemState itemState) throws ItemNotFoundException, RepositoryException;
-
- /**
* Returns the depth of the specified item which is equivalent to
* <code>getQPath(id).getAncestorCount()</code>. The depth reflects the
* absolute hierarchy level.
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManagerImpl.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManagerImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/HierarchyManagerImpl.java Wed Sep 20 05:43:39 2006
@@ -19,15 +19,12 @@
import org.apache.jackrabbit.jcr2spi.state.ItemState;
import org.apache.jackrabbit.jcr2spi.state.ItemStateException;
import org.apache.jackrabbit.jcr2spi.state.ItemStateManager;
-import org.apache.jackrabbit.jcr2spi.state.NoSuchItemStateException;
import org.apache.jackrabbit.jcr2spi.state.NodeState;
-import org.apache.jackrabbit.jcr2spi.state.PropertyState;
import org.apache.jackrabbit.jcr2spi.state.ChildNodeEntry;
import org.apache.jackrabbit.jcr2spi.util.LogUtil;
import org.apache.jackrabbit.name.NamespaceResolver;
import org.apache.jackrabbit.name.QName;
import org.apache.jackrabbit.name.Path;
-import org.apache.jackrabbit.name.MalformedPathException;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
@@ -52,58 +49,7 @@
this.nsResolver = nsResolver;
}
- //-------------------------------------------------------< overridables >---
-
- // TODO: review the overridables as soon as status of ZombiHierarchyManager is clear
- /**
- *
- * @param state
- * @return
- */
- protected NodeState getParentState(ItemState state) {
- return state.getParent();
- }
-
- // TODO: review the overridables as soon as status of ZombiHierarchyManager is clear
- /**
- * Returns the <code>ChildNodeEntry</code> of <code>parent</code> with the
- * specified <code>uuid</code> or <code>null</code> if there's no such entry.
- * <p/>
- * Low-level hook provided for specialized derived classes.
- *
- * @param parent node state
- * @param state child state
- * @return the <code>ChildNodeEntry</code> of <code>parent</code> with
- * the specified <code>uuid</code> or <code>null</code> if there's
- * no such entry.
- * @see ZombieHierarchyManager#getChildNodeEntry(NodeState, NodeState)
- */
- protected ChildNodeEntry getChildNodeEntry(NodeState parent,
- NodeState state) {
- return parent.getChildNodeEntry(state);
- }
-
- // TODO: review the overridables as soon as status of ZombiHierarchyManager is clear
- /**
- * Returns the <code>ChildNodeEntry</code> of <code>parent</code> with the
- * specified <code>name</code> and <code>index</code> or <code>null</code>
- * if there's no such entry.
- * <p/>
- * Low-level hook provided for specialized derived classes.
- *
- * @param parent node state
- * @param name name of child node entry
- * @param index index of child node entry
- * @return the <code>ChildNodeEntry</code> of <code>parent</code> with
- * the specified <code>name</code> and <code>index</code> or
- * <code>null</code> if there's no such entry.
- * @see ZombieHierarchyManager#getChildNodeEntry(NodeState, QName, int)
- */
- protected ChildNodeEntry getChildNodeEntry(NodeState parent,
- QName name,
- int index) {
- return parent.getChildNodeEntry(name, index);
- }
+ //------------------------------------------------------------< private >---
/**
* Resolve a path into an item state. Recursively invoked method that may be
@@ -115,7 +61,7 @@
* @param next next path element index to resolve
* @return the state of the item denoted by <code>path</code>
*/
- protected ItemState resolvePath(Path path, ItemState state, int next)
+ private ItemState resolvePath(Path path, ItemState state, int next)
throws PathNotFoundException, RepositoryException {
Path.PathElement[] elements = path.getElements();
@@ -132,7 +78,7 @@
if (parentState.hasChildNodeEntry(name, index)) {
// child node
- ChildNodeEntry nodeEntry = getChildNodeEntry(parentState, name, index);
+ ChildNodeEntry nodeEntry = parentState.getChildNodeEntry(name, index);
try {
childState = nodeEntry.getNodeState();
} catch (ItemStateException e) {
@@ -161,50 +107,6 @@
return resolvePath(path, childState, next + 1);
}
- /**
- * 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,
- * <code>builder</code> contains the path of <code>state</code>.
- *
- * @param builder builder currently being used
- * @param state item to find path of
- */
- protected void buildPath(Path.PathBuilder builder, ItemState state)
- throws ItemStateException, RepositoryException {
- NodeState parentState = state.getParent();
- // shortcut for root state
- if (parentState == null) {
- builder.addRoot();
- return;
- }
-
- // recursively build path of parent
- buildPath(builder, parentState);
-
- if (state.isNode()) {
- NodeState nodeState = (NodeState) state;
- ChildNodeEntry entry = getChildNodeEntry(parentState, nodeState);
- if (entry == null) {
- String msg = "Failed to build path of " + state + ": "
- + LogUtil.safeGetJCRPath(parentState, nsResolver, this) + " has such child entry.";
- log.debug(msg);
- throw new ItemNotFoundException(msg);
- }
- // add to path
- if (entry.getIndex() == Path.INDEX_DEFAULT) {
- builder.addLast(entry.getName());
- } else {
- builder.addLast(entry.getName(), entry.getIndex());
- }
- } else {
- PropertyState propState = (PropertyState) state;
- QName name = propState.getQName();
- // add to path
- builder.addLast(name);
- }
- }
-
//---------------------------------------------------< HierarchyManager >---
/**
* @see HierarchyManager#getItemState(Path)
@@ -232,43 +134,15 @@
}
/**
- * @see HierarchyManager#getQPath(ItemState)
- */
- public Path getQPath(ItemState itemState) throws ItemNotFoundException, RepositoryException {
- // shortcut for root state
- if (itemState.getParent() == null) {
- return Path.ROOT;
- }
-
- // build path otherwise
- try {
- Path.PathBuilder builder = new Path.PathBuilder();
- buildPath(builder, itemState);
- return builder.getPath();
- } catch (NoSuchItemStateException e) {
- String msg = "Failed to build path of " + itemState;
- log.debug(msg);
- throw new ItemNotFoundException(msg, e);
- } catch (ItemStateException e) {
- String msg = "Failed to build path of " + itemState;
- log.debug(msg);
- throw new RepositoryException(msg, e);
- } catch (MalformedPathException e) {
- String msg = "Failed to build path of " + itemState;
- throw new RepositoryException(msg, e);
- }
- }
-
- /**
* @see HierarchyManager#getDepth(ItemState)
*/
public int getDepth(ItemState itemState) throws ItemNotFoundException, RepositoryException {
int depth = Path.ROOT_DEPTH;
- NodeState parentState = getParentState(itemState);
+ NodeState parentState = itemState.getParent();
while (parentState != null) {
depth++;
itemState = parentState;
- parentState = getParentState(itemState);
+ parentState = itemState.getParent();
}
return depth;
}
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java Wed Sep 20 05:43:39 2006
@@ -495,7 +495,7 @@
* @return the primary path to this <code>Item</code>
*/
Path getQPath() throws RepositoryException {
- return session.getHierarchyManager().getQPath(state);
+ return state.getQPath();
}
/**
@@ -514,6 +514,6 @@
* @return JCR path
*/
String safeGetJCRPath() {
- return LogUtil.safeGetJCRPath(getItemState(), session.getNamespaceResolver(), session.getHierarchyManager());
+ return LogUtil.safeGetJCRPath(getItemState(), session.getNamespaceResolver());
}
}
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java Wed Sep 20 05:43:39 2006
@@ -354,7 +354,7 @@
} else {
ps.print("- ");
}
- ps.println(state + "\t" + LogUtil.safeGetJCRPath(state, session.getNamespaceResolver(), hierMgr) + " (" + item + ")");
+ ps.println(state + "\t" + LogUtil.safeGetJCRPath(state, session.getNamespaceResolver()) + " (" + item + ")");
}
}
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/CachingItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/CachingItemStateManager.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/CachingItemStateManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/CachingItemStateManager.java Wed Sep 20 05:43:39 2006
@@ -95,7 +95,7 @@
public NodeState getRootState() throws ItemStateException {
if (root == null) {
- root = isf.createNodeState(idFactory.createNodeId((String) null, Path.ROOT), this);
+ root = isf.createRootState(this);
root.addListener(lifeCycleListener);
}
return root;
@@ -183,8 +183,7 @@
String uuid = id.getUUID();
Path relPath = id.getRelativePath();
- // start with root node if no uuid part in id
- NodeState nodeState = getRootState();
+ NodeState nodeState;
// resolve uuid part
if (uuid != null) {
nodeState = (NodeState) uuid2NodeState.get(uuid);
@@ -195,6 +194,9 @@
nodeState.addListener(lifeCycleListener);
uuid2NodeState.put(uuid, nodeState);
}
+ } else {
+ // start with root node if no uuid part in id
+ nodeState = getRootState();
}
ItemState s = nodeState;
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java Wed Sep 20 05:43:39 2006
@@ -19,9 +19,14 @@
import org.apache.jackrabbit.util.WeakIdentityCollection;
import org.apache.jackrabbit.spi.ItemId;
import org.apache.jackrabbit.spi.IdFactory;
+import org.apache.jackrabbit.name.Path;
+import org.apache.jackrabbit.name.MalformedPathException;
+import org.apache.jackrabbit.name.QName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.RepositoryException;
import java.util.Collection;
import java.util.Set;
@@ -316,6 +321,79 @@
* @return the identifier of this item state..
*/
public abstract ItemId getId();
+
+ /**
+ * Returns the qualified path of this item state.
+ *
+ * @return qualified path
+ * @throws ItemNotFoundException
+ * @throws RepositoryException
+ */
+ public Path getQPath() throws ItemNotFoundException, RepositoryException {
+ // shortcut for root state
+ if (getParent() == null) {
+ return Path.ROOT;
+ }
+
+ // build path otherwise
+ try {
+ Path.PathBuilder builder = new Path.PathBuilder();
+ buildPath(builder, this);
+ return builder.getPath();
+ } catch (NoSuchItemStateException e) {
+ String msg = "Failed to build path of " + this;
+ log.debug(msg);
+ throw new ItemNotFoundException(msg, e);
+ } catch (ItemStateException e) {
+ String msg = "Failed to build path of " + this;
+ log.debug(msg);
+ throw new RepositoryException(msg, e);
+ } catch (MalformedPathException e) {
+ String msg = "Failed to build path of " + this;
+ throw new RepositoryException(msg, e);
+ }
+ }
+
+ /**
+ * Adds the path element of an item id to the path currently being built.
+ * On exit, <code>builder</code> contains the path of <code>state</code>.
+ *
+ * @param builder builder currently being used
+ * @param state item to find path of
+ */
+ private void buildPath(Path.PathBuilder builder, ItemState state)
+ throws ItemStateException, RepositoryException {
+ NodeState parentState = state.getParent();
+ // shortcut for root state
+ if (parentState == null) {
+ builder.addRoot();
+ return;
+ }
+
+ // recursively build path of parent
+ buildPath(builder, parentState);
+
+ if (state.isNode()) {
+ NodeState nodeState = (NodeState) state;
+ ChildNodeEntry entry = parentState.getChildNodeEntry(nodeState);
+ if (entry == null) {
+ String msg = "Failed to build path of " + state + ": parent has no such child entry.";
+ log.debug(msg);
+ throw new ItemNotFoundException(msg);
+ }
+ // add to path
+ if (entry.getIndex() == Path.INDEX_DEFAULT) {
+ builder.addLast(entry.getName());
+ } else {
+ builder.addLast(entry.getName(), entry.getIndex());
+ }
+ } else {
+ PropertyState propState = (PropertyState) state;
+ QName name = propState.getQName();
+ // add to path
+ builder.addLast(name);
+ }
+ }
/**
* Returns <code>true</code> if this item state represents new or modified
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateFactory.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateFactory.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateFactory.java Wed Sep 20 05:43:39 2006
@@ -26,6 +26,8 @@
*/
public interface ItemStateFactory {
+ public NodeState createRootState(ItemStateManager ism) throws ItemStateException;
+
/**
* Creates the child <code>NodeState</code> with the given
* <code>nodeId</code>.
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateValidator.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateValidator.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateValidator.java Wed Sep 20 05:43:39 2006
@@ -21,7 +21,6 @@
import org.apache.jackrabbit.jcr2spi.nodetype.ValueConstraint;
import org.apache.jackrabbit.jcr2spi.nodetype.EffectiveNodeType;
import org.apache.jackrabbit.jcr2spi.ManagerProvider;
-import org.apache.jackrabbit.jcr2spi.HierarchyManager;
import org.apache.jackrabbit.jcr2spi.util.LogUtil;
import org.apache.jackrabbit.jcr2spi.security.AccessManager;
import org.slf4j.LoggerFactory;
@@ -257,10 +256,10 @@
*
* @param itemState
* @return JCR path
- * @see LogUtil#safeGetJCRPath(ItemState, NamespaceResolver, HierarchyManager)
+ * @see LogUtil#safeGetJCRPath(ItemState,NamespaceResolver)
*/
private String safeGetJCRPath(ItemState itemState) {
- return LogUtil.safeGetJCRPath(itemState, mgrProvider.getNamespaceResolver(), mgrProvider.getHierarchyManager());
+ return LogUtil.safeGetJCRPath(itemState, mgrProvider.getNamespaceResolver());
}
/**
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java Wed Sep 20 05:43:39 2006
@@ -367,7 +367,7 @@
switch (state.getStatus()) {
case ItemState.STATUS_NEW:
{
- String msg = LogUtil.safeGetJCRPath(state, nsResolver, hierMgr) + ": cannot save a new item.";
+ String msg = LogUtil.safeGetJCRPath(state, nsResolver) + ": cannot save a new item.";
log.debug(msg);
throw new ItemStateException(msg);
}
@@ -376,13 +376,13 @@
switch (state.getStatus()) {
case ItemState.STATUS_STALE_MODIFIED:
{
- String msg = LogUtil.safeGetJCRPath(state, nsResolver, hierMgr) + ": the item cannot be saved because it has been modified externally.";
+ String msg = LogUtil.safeGetJCRPath(state, nsResolver) + ": the item cannot be saved because it has been modified externally.";
log.debug(msg);
throw new StaleItemStateException(msg);
}
case ItemState.STATUS_STALE_DESTROYED:
{
- String msg = LogUtil.safeGetJCRPath(state, nsResolver, hierMgr) + ": the item cannot be saved because it has been deleted externally.";
+ String msg = LogUtil.safeGetJCRPath(state, nsResolver) + ": the item cannot be saved because it has been deleted externally.";
log.debug(msg);
throw new StaleItemStateException(msg);
}
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java Wed Sep 20 05:43:39 2006
@@ -94,7 +94,7 @@
*/
public NodeState getRootState() throws ItemStateException {
if (rootNodeState == null) {
- rootNodeState = isf.createNodeState(parent.getRootState().getNodeId(), this);
+ rootNodeState = isf.createRootState(this);
rootNodeState.addListener(this);
}
return rootNodeState;
@@ -433,6 +433,19 @@
// notify listener that a property state has been created
listener.statusChanged(propState, ItemState.STATUS_NEW);
return propState;
+ }
+
+ /**
+ * @inheritDoc
+ * @see ItemStateFactory#createRootState(ItemStateManager)
+ */
+ public NodeState createRootState(ItemStateManager ism) throws ItemStateException {
+ // retrieve state to overlay
+ NodeState overlayedState = (NodeState) parent.getRootState();
+ NodeState nodeState = new NodeState(overlayedState, null,
+ ItemState.STATUS_EXISTING, this, idFactory);
+ nodeState.addListener(listener);
+ return nodeState;
}
/**
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java Wed Sep 20 05:43:39 2006
@@ -63,6 +63,18 @@
}
/**
+ * @inheritDoc
+ * @see ItemStateFactory#createRootState(ItemStateManager)
+ */
+ public NodeState createRootState(ItemStateManager ism) throws ItemStateException {
+ try {
+ return createNodeState(service.getRootId(sessionInfo), ism);
+ } catch (RepositoryException e) {
+ throw new ItemStateException("Internal error while building root state.");
+ }
+ }
+
+ /**
* Creates the node with information retrieved from the
* <code>RepositoryService</code>.
*
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/LogUtil.java Wed Sep 20 05:43:39 2006
@@ -24,7 +24,6 @@
import org.apache.jackrabbit.name.NamespaceResolver;
import org.apache.jackrabbit.name.QName;
import org.apache.jackrabbit.name.NameFormat;
-import org.apache.jackrabbit.jcr2spi.HierarchyManager;
import org.apache.jackrabbit.jcr2spi.state.ItemState;
import org.apache.jackrabbit.spi.ItemId;
@@ -61,13 +60,12 @@
*
* @param itemState
* @param nsResolver
- * @param hierManager
* @return JCR path
*/
- public static String safeGetJCRPath(ItemState itemState, NamespaceResolver nsResolver,
- HierarchyManager hierManager) {
+ public static String safeGetJCRPath(ItemState itemState, NamespaceResolver nsResolver
+ ) {
try {
- return safeGetJCRPath(hierManager.getQPath(itemState), nsResolver);
+ return safeGetJCRPath(itemState.getQPath(), nsResolver);
} catch (RepositoryException e) {
ItemId id = itemState.getId();
log.error("failed to convert " + id + " to JCR path.");
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/SessionImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/SessionImporter.java?view=diff&rev=448191&r1=448190&r2=448191
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/SessionImporter.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/SessionImporter.java Wed Sep 20 05:43:39 2006
@@ -186,14 +186,14 @@
if (def.isProtected() && entExisting.includesNodeType(nodeInfo.getNodeTypeName())) {
// skip protected node
parents.push(null); // push null onto stack for skipped node
- log.debug("skipping protected node " + LogUtil.safeGetJCRPath(existing, session.getNamespaceResolver(), session.getHierarchyManager()));
+ log.debug("skipping protected node " + LogUtil.safeGetJCRPath(existing, session.getNamespaceResolver()));
return;
}
if (def.isAutoCreated() && entExisting.includesNodeType(nodeInfo.getNodeTypeName())) {
// this node has already been auto-created, no need to create it
nodeState = existing;
} else {
- throw new ItemExistsException(LogUtil.safeGetJCRPath(existing, session.getNamespaceResolver(), session.getHierarchyManager()));
+ throw new ItemExistsException(LogUtil.safeGetJCRPath(existing, session.getNamespaceResolver()));
}
}
}
@@ -337,8 +337,8 @@
case ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING:
// make sure conflicting node is not importTarget or an ancestor thereof
- Path p0 = session.getHierarchyManager().getQPath(importTarget);
- Path p1 = session.getHierarchyManager().getQPath(conflicting);
+ Path p0 = importTarget.getQPath();
+ Path p1 = conflicting.getQPath();
try {
if (p1.equals(p0) || p1.isAncestorOf(p0)) {
msg = "cannot remove ancestor node";
@@ -491,7 +491,7 @@
def = existing.getDefinition();
if (def.isProtected()) {
// skip protected property
- log.debug("skipping protected property " + LogUtil.safeGetJCRPath(existing, session.getNamespaceResolver(), session.getHierarchyManager()));
+ log.debug("skipping protected property " + LogUtil.safeGetJCRPath(existing, session.getNamespaceResolver()));
return;
}
if (def.isAutoCreated()
@@ -500,7 +500,7 @@
// this property has already been auto-created, no need to create it
propState = existing;
} else {
- throw new ItemExistsException(LogUtil.safeGetJCRPath(existing, session.getNamespaceResolver(), session.getHierarchyManager()));
+ throw new ItemExistsException(LogUtil.safeGetJCRPath(existing, session.getNamespaceResolver()));
}
} catch (ItemStateException e) {
// should not occur. existance has been checked before