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/08/07 11:52:37 UTC
svn commit: r429288 - in
/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi:
./ lock/ operation/ state/ version/ xml/
Author: angela
Date: Mon Aug 7 02:52:34 2006
New Revision: 429288
URL: http://svn.apache.org/viewvc?rev=429288&view=rev
Log:
work in progress
- replace ItemState.getParentId by ItemState.getParentState
Modified:
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/NodeImpl.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/PropertyImpl.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ZombieHierarchyManager.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Remove.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/ItemStateValidator.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.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/TransientChangeLog.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/version/VersionManagerImpl.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/ImporterImpl.java
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?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- 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 Mon Aug 7 02:52:34 2006
@@ -112,7 +112,7 @@
* @see ZombieHierarchyManager#getParentId(ItemState)
*/
protected NodeId getParentId(ItemState state) {
- return state.getParentId();
+ return state.getParentState().getNodeId();
}
/**
@@ -244,25 +244,24 @@
return;
}
- NodeId parentId = state.getParentId();
- if (parentId == null) {
+ NodeState parentState = state.getParentState();
+ if (parentState == null) {
String msg = "failed to build path of " + state.getId()
+ ": orphaned item";
log.debug(msg);
throw new ItemNotFoundException(msg);
}
- NodeState parent = (NodeState) getItemState(parentId);
// recursively build path of parent
- buildPath(builder, parent);
+ buildPath(builder, parentState);
if (state.isNode()) {
NodeState nodeState = (NodeState) state;
NodeId id = nodeState.getNodeId();
- ChildNodeEntry entry = getChildNodeEntry(parent, id);
+ ChildNodeEntry entry = getChildNodeEntry(parentState, id);
if (entry == null) {
String msg = "failed to build path of " + state.getId() + ": "
- + parent.getNodeId() + " has no child entry for "
+ + parentState.getNodeId() + " has no child entry for "
+ id;
log.debug(msg);
throw new ItemNotFoundException(msg);
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?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- 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 Mon Aug 7 02:52:34 2006
@@ -158,11 +158,11 @@
*/
public int getDepth() throws RepositoryException {
checkStatus();
- if (state.getParentId() == null) {
+ if (state.getParentState() == null) {
// shortcut
return Path.ROOT_DEPTH;
}
- return session.getHierarchyManager().getDepth(id);
+ return session.getHierarchyManager().getDepth(state.getParentState().getId());
}
/**
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?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- 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 Mon Aug 7 02:52:34 2006
@@ -102,12 +102,7 @@
private NodeDefinition getDefinition(NodeState state)
throws RepositoryException {
- NodeId parentId = state.getParentId();
- NodeState parentState = null;
- if (parentId != null) {
- NodeImpl parent = (NodeImpl) getItem(parentId);
- parentState = (NodeState) parent.getItemState();
- }
+ NodeState parentState = state.getParentState();
NodeDefinition def = session.getItemDefinitionManager().getNodeDefinition(state, parentState);
return def;
}
@@ -115,9 +110,7 @@
private PropertyDefinition getDefinition(PropertyState state)
throws RepositoryException {
// fallback: try finding applicable definition
- NodeId parentId = state.getParentId();
- NodeImpl parent = (NodeImpl) getItem(parentId);
- NodeState parentState = (NodeState) parent.getItemState();
+ NodeState parentState = state.getParentState();
PropertyDefinition def = session.getItemDefinitionManager().getPropertyDefinition(state, parentState);
return def;
}
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java Mon Aug 7 02:52:34 2006
@@ -144,14 +144,14 @@
public Node getParent() throws ItemNotFoundException, AccessDeniedException, RepositoryException {
checkStatus();
// check if root node
- NodeId parentId = getItemState().getParentId();
- if (parentId == null) {
+ NodeState parentState = getItemState().getParentState();
+ if (parentState == null) {
String msg = "root node doesn't have a parent";
log.debug(msg);
throw new ItemNotFoundException(msg);
}
- return (Node) itemMgr.getItem(parentId);
+ return (Node) itemMgr.getItem(parentState.getNodeId());
}
/**
@@ -537,22 +537,14 @@
*/
public int getIndex() throws RepositoryException {
checkStatus();
- NodeId parentId = getItemState().getParentId();
- if (parentId == null) {
+ NodeState parentState = getItemState().getParentState();
+ if (parentState == null) {
// the root node cannot have same-name siblings; always return the
// default index
return Path.INDEX_DEFAULT;
}
- try {
- NodeState parent = (NodeState) itemStateMgr.getItemState(parentId);
- ChildNodeEntry parentEntry = parent.getChildNodeEntry(getNodeId());
- return parentEntry.getIndex();
- } catch (ItemStateException ise) {
- // should never get here...
- String msg = "internal error: failed to determine index";
- log.error(msg, ise);
- throw new RepositoryException(msg, ise);
- }
+ ChildNodeEntry parentEntry = parentState.getChildNodeEntry(getNodeId());
+ return parentEntry.getIndex();
}
/**
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/PropertyImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/PropertyImpl.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/PropertyImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/PropertyImpl.java Mon Aug 7 02:52:34 2006
@@ -88,7 +88,7 @@
*/
public Node getParent() throws ItemNotFoundException, AccessDeniedException, RepositoryException {
checkStatus();
- return (Node) itemMgr.getItem(getItemState().getParentId());
+ return (Node) itemMgr.getItem(getItemState().getParentState().getId());
}
/**
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java Mon Aug 7 02:52:34 2006
@@ -603,7 +603,7 @@
// build the PropertyState
// NOTE: unable to retrieve definitionId -> needs to be retrieved
// by the itemManager upon Property creation.
- PropertyState state = new PropertyState(info.getId(), ItemState.STATUS_EXISTING, false);
+ PropertyState state = new PropertyState(info.getId(), parent, ItemState.STATUS_EXISTING, false);
state.setMultiValued(info.isMultiValued());
state.setType(info.getType());
QValue[] qValues;
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ZombieHierarchyManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ZombieHierarchyManager.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ZombieHierarchyManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ZombieHierarchyManager.java Mon Aug 7 02:52:34 2006
@@ -87,7 +87,7 @@
protected NodeId getParentId(ItemState state) {
if (state.hasOverlayedState()) {
// use 'old' parent in case item has been removed
- return state.getOverlayedState().getParentId();
+ return state.getOverlayedState().getParentState().getNodeId();
}
// delegate to base class
return super.getParentId(state);
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java Mon Aug 7 02:52:34 2006
@@ -299,11 +299,12 @@
* this would have a negative impact on performance though...
*/
while (!nodeState.hasPropertyName(QName.JCR_LOCKOWNER)) {
- if (nodeState.getParentId() == null) {
+ NodeState parentState = nodeState.getParentState();
+ if (parentState == null) {
// reached root state without finding a locked node
return null;
}
- nodeState = (NodeState) wspManager.getItemState(nodeState.getParentId());
+ nodeState = parentState;
}
return nodeState;
} catch (ItemStateException e) {
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Remove.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Remove.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Remove.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Remove.java Mon Aug 7 02:52:34 2006
@@ -61,7 +61,7 @@
//------------------------------------------------------------< Factory >---
public static Operation create(ItemState state) {
- Remove rm = new Remove(state.getId(), state.getParentId());
+ Remove rm = new Remove(state.getId(), state.getParentState().getNodeId());
return rm;
}
}
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?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- 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 Mon Aug 7 02:52:34 2006
@@ -18,7 +18,6 @@
import org.apache.jackrabbit.util.WeakIdentityCollection;
import org.apache.jackrabbit.spi.ItemId;
-import org.apache.jackrabbit.spi.NodeId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -357,13 +356,13 @@
}
/**
- * Returns the NodeId of the parent <code>NodeState</code> or <code>null</code>
+ * Returns the parent <code>NodeState</code> or <code>null</code>
* if either this item state represents the root node or this item state is
* 'free floating', i.e. not attached to the repository's hierarchy.
*
* @return the parent <code>NodeState</code>'s Id
*/
- public abstract NodeId getParentId();
+ public abstract NodeState getParentState();
/**
* Returns the status of this item.
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?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- 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 Mon Aug 7 02:52:34 2006
@@ -419,7 +419,7 @@
VersionException, LockException, ItemNotFoundException,
ItemExistsException, PathNotFoundException, RepositoryException {
- checkWriteProperty(getNodeState(propState.getParentId()), propState.getName(), propState.getDefinition(), options);
+ checkWriteProperty(propState.getParentState(), propState.getName(), propState.getDefinition(), options);
}
/**
@@ -587,14 +587,14 @@
// NOTE: referencial integrity should be asserted for all child-nodes.
ItemId targetId = targetState.getId();
- NodeId parentId = targetState.getParentId();
- if (parentId == null) {
+ NodeState parentState = targetState.getParentState();
+ if (parentState == null) {
// root or orphaned node
throw new ConstraintViolationException("Cannot remove root node");
}
// check parent
- checkIsWritable(getNodeState(parentId), options);
+ checkIsWritable(parentState, options);
// access rights
if ((options & CHECK_ACCESS) == CHECK_ACCESS) {
@@ -648,7 +648,7 @@
if (itemState.getStatus() == ItemState.STATUS_NEW) {
return;
}
- NodeState nodeState = (itemState.isNode()) ? (NodeState)itemState : getNodeState(itemState.getParentId());
+ NodeState nodeState = (itemState.isNode()) ? (NodeState)itemState : itemState.getParentState();
if (!mgrProvider.getVersionManager().isCheckedOut(nodeState.getNodeId())) {
throw new VersionException(safeGetJCRPath(nodeState.getNodeId()) + " is checked-in");
}
@@ -667,8 +667,10 @@
throws LockException, RepositoryException {
// make sure there's no foreign lock present the node (or the parent node
// for properties.
- NodeId nodeId = (itemState.isNode()) ? ((NodeState)itemState).getNodeId() : itemState.getParentId();
- mgrProvider.getLockManager().checkLock(nodeId);
+ NodeState nodeState = (itemState.isNode())
+ ? ((NodeState)itemState)
+ : itemState.getParentState();
+ mgrProvider.getLockManager().checkLock(nodeState.getNodeId());
}
/**
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java Mon Aug 7 02:52:34 2006
@@ -62,10 +62,10 @@
private NodeId id;
/**
- * The id of the parent <code>NodeState</code> or <code>null</code> if this
+ * The parent <code>NodeState</code> or <code>null</code> if this
* instance represents the root node.
*/
- private NodeId parentId;
+ private NodeState parent;
/**
* this node's definition
@@ -127,6 +127,7 @@
int initialStatus, boolean isTransient, ItemStateFactory isf) {
super(initialStatus, isTransient);
this.id = id;
+ this.parent = parent;
this.idFactory = parent.idFactory;
this.nodeTypeName = nodeTypeName;
this.isf = isf;
@@ -154,15 +155,15 @@
*
* @param id id of this node
* @param nodeTypeName node type of this node
- * @param parentId id of the parent node
+ * @param parent the parent node state
* @param initialStatus the initial status of the node state object
* @param isTransient flag indicating whether this state is transient or not
*/
- public NodeState(NodeId id, QName nodeTypeName, NodeId parentId,
+ public NodeState(NodeId id, QName nodeTypeName, NodeState parent,
int initialStatus, boolean isTransient, IdFactory idFactory) {
super(initialStatus, isTransient);
this.id = id;
- this.parentId = parentId;
+ this.parent = parent;
this.nodeTypeName = nodeTypeName;
this.idFactory = idFactory;
// TODO: remove this constructor
@@ -176,7 +177,7 @@
synchronized (state) {
NodeState nodeState = (NodeState) state;
id = nodeState.id;
- parentId = nodeState.parentId;
+ parent = nodeState.parent;
nodeTypeName = nodeState.nodeTypeName;
mixinTypeNames = nodeState.mixinTypeNames;
def = nodeState.getDefinition();
@@ -200,11 +201,8 @@
return true;
}
- /**
- * {@inheritDoc}
- */
- public NodeId getParentId() {
- return parentId;
+ public NodeState getParentState() {
+ return parent;
}
/**
@@ -225,13 +223,13 @@
/**
* Sets the Id of the parent <code>NodeState</code>.
*
- * @param parentId the parent <code>NodeState</code>'s Id or <code>null</code>
+ * @param parent the parent <code>NodeState</code> or <code>null</code>
* if either this node state should represent the root node or this node
* state should be 'free floating', i.e. detached from the repository's
* hierarchy.
*/
- public void setParentId(NodeId parentId) {
- this.parentId = parentId;
+ public void setParent(NodeState parent) {
+ this.parent = parent;
}
/**
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.java Mon Aug 7 02:52:34 2006
@@ -22,7 +22,6 @@
import org.apache.jackrabbit.name.QName;
import org.apache.jackrabbit.spi.PropertyId;
import org.apache.jackrabbit.spi.ItemId;
-import org.apache.jackrabbit.spi.NodeId;
import org.apache.jackrabbit.value.QValue;
/**
@@ -36,6 +35,11 @@
private PropertyId id;
/**
+ * The parent state
+ */
+ private NodeState parent;
+
+ /**
* the internal values
*/
private QValue[] values;
@@ -73,9 +77,10 @@
* @param initialStatus the initial status of the property state object
* @param isTransient flag indicating whether this state is transient or not
*/
- public PropertyState(PropertyId id, int initialStatus, boolean isTransient) {
+ public PropertyState(PropertyId id, NodeState parent, int initialStatus, boolean isTransient) {
super(initialStatus, isTransient);
this.id = id;
+ this.parent = parent;
type = PropertyType.UNDEFINED;
values = QValue.EMPTY_ARRAY;
multiValued = false;
@@ -88,6 +93,7 @@
synchronized (state) {
PropertyState propState = (PropertyState) state;
id = propState.id;
+ parent = propState.parent;
type = propState.type;
def = propState.getDefinition();
values = propState.values;
@@ -125,8 +131,8 @@
/**
* {@inheritDoc}
*/
- public NodeId getParentId() {
- return id.getParentId();
+ public NodeState getParentState() {
+ return parent;
}
/**
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?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- 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 Mon Aug 7 02:52:34 2006
@@ -846,8 +846,9 @@
NodeState nodeState = (NodeState) transientState;
Set dependentIDs = new HashSet();
if (nodeState.hasOverlayedState()) {
- NodeId oldParentId = nodeState.getOverlayedState().getParentId();
- NodeId newParentId = nodeState.getParentId();
+ // TODO: review usage of NodeId
+ NodeId oldParentId = nodeState.getOverlayedState().getParentState().getNodeId();
+ NodeId newParentId = nodeState.getParentState().getNodeId();
if (oldParentId != null) {
if (newParentId == null) {
// node has been removed, add old parent
@@ -985,7 +986,7 @@
// remove child node entry from old parent
srcParent.removeChildNodeEntry(srcName, srcIndex);
// re-parent target node
- srcState.setParentId(destParent.getNodeId());
+ srcState.setParent(destParent);
// add child node entry to new parent
destParent.addChildNodeEntry(operation.getDestinationName(), srcState.getNodeId());
}
@@ -1295,7 +1296,7 @@
// assert transient parent state
NodeState parentState = create(parent);
// create property state
- PropertyState propState = createNew(propertyName, parentState.getNodeId());
+ PropertyState propState = createNew(propertyName, parentState);
propState.setDefinition(pDef);
// NOTE: callers must make sure, the property type is not 'undefined'
@@ -1339,7 +1340,7 @@
NodeState parentState = create(parent);
// ev. create new id
NodeId newId = (uuid == null) ? idFactory.createNodeId(UUID.randomUUID().toString()) : idFactory.createNodeId(uuid);
- NodeState nodeState = createNew(newId, nodeTypeName, parentState.getNodeId());
+ NodeState nodeState = createNew(newId, nodeTypeName, parentState);
nodeState.setDefinition(definition);
// now add new child node entry to parent
@@ -1380,7 +1381,7 @@
boolean success = false;
try {
// assert parent is transient state
- NodeState parent = create(validator.getNodeState(itemState.getParentId()));
+ NodeState parent = create(itemState.getParentState());
if (itemState.isNode()) {
removeNodeState(parent, (NodeState)itemState);
} else {
@@ -1479,7 +1480,7 @@
}
// now actually do unlink target state
- targetState.setParentId(null);
+ targetState.setParent(null);
// destroy target state
// DIFF JR: destroy targetState (not overlayed state)
destroy(targetState);
@@ -1539,14 +1540,14 @@
*
* @param id the id of the node
* @param nodeTypeName qualified node type name
- * @param parentId parent node's id
+ * @param parent parent node's id
* @return a node state
* @throws IllegalStateException if the manager is not in edit mode.
*/
- private NodeState createNew(NodeId id, QName nodeTypeName, NodeId parentId)
+ private NodeState createNew(NodeId id, QName nodeTypeName, NodeState parent)
throws IllegalStateException {
// DIFF JACKRABBIT: return workspaceItemStateMgr.createNew(id, nodeTypeName, parentId);
- return transientStateMgr.createNodeState(id, nodeTypeName, parentId);
+ return transientStateMgr.createNodeState(id, nodeTypeName, parent);
}
/**
@@ -1579,12 +1580,12 @@
* on the returned object to make it persistent.
*
* @param propName qualified property name
- * @param parentId parent node Id
+ * @param parent parent node state
* @return a property state
*/
- private PropertyState createNew(QName propName, NodeId parentId) {
+ private PropertyState createNew(QName propName, NodeState parent) {
// DIFF JACKRABBIT: return workspaceItemStateMgr.createNew(propName, parentId);
- return transientStateMgr.createPropertyState(parentId, propName);
+ return transientStateMgr.createPropertyState(parent, propName);
}
/**
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientChangeLog.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientChangeLog.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientChangeLog.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientChangeLog.java Mon Aug 7 02:52:34 2006
@@ -126,7 +126,7 @@
*/
public NodeState createNodeState(NodeId id,
QName nodeTypeName,
- NodeId parentId) {
+ NodeState parent) {
// DIFF JACKRABBIT: not needed anymore
// check map; synchronized to ensure an entry is not created twice.
// synchronized (addedStates) {
@@ -143,7 +143,7 @@
// return state;
// }
- return new NodeState(id, nodeTypeName, parentId, ItemState.STATUS_NEW, true, idFactory);
+ return new NodeState(id, nodeTypeName, parent, ItemState.STATUS_NEW, true, idFactory);
}
/**
@@ -172,9 +172,9 @@
/**
* @inheritDoc
*/
- public PropertyState createPropertyState(NodeId parentId, QName propName) {
- PropertyId id = idFactory.createPropertyId(parentId, propName);
- return new PropertyState(id, ItemState.STATUS_NEW, true);
+ public PropertyState createPropertyState(NodeState parentState, QName propName) {
+ PropertyId id = idFactory.createPropertyId(parentState.getNodeId(), propName);
+ return new PropertyState(id, parentState, ItemState.STATUS_NEW, true);
}
/**
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?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- 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 Mon Aug 7 02:52:34 2006
@@ -66,11 +66,11 @@
*
* @param id the <code>NodeId</code> of the new node state.
* @param nodeTypeName name of the node type of the new node state.
- * @param parentId the parent id of the new node state.
+ * @param parent the parent of the new node state.
* @return a new transient {@link NodeState}.
*/
NodeState createNodeState(NodeId id, QName nodeTypeName,
- NodeId parentId);
+ NodeState parent);
/**
* DIFF JACKRABBIT: does not throw ItemStateException
@@ -81,11 +81,11 @@
/**
* DIFF JACKRABBIT: does not throw ItemStateException
- * @param parentId
+ * @param parent
* @param propName
* @return
*/
- PropertyState createPropertyState(NodeId parentId, QName propName);
+ PropertyState createPropertyState(NodeState parent, QName propName);
/**
* DIFF JACKRABBIT: does not throw ItemStateException
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManagerImpl.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManagerImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManagerImpl.java Mon Aug 7 02:52:34 2006
@@ -74,11 +74,12 @@
* this would have a negative impact on performance though...
*/
while (!nodeState.hasPropertyName(QName.JCR_ISCHECKEDOUT)) {
- if (nodeState.getParentId() == null) {
+ NodeState parentState = nodeState.getParentState();
+ if (parentState == null) {
// reached root state without finding a jcr:isCheckedOut property
return true;
}
- nodeState = (NodeState) stateManager.getItemState(nodeState.getParentId());
+ nodeState = parentState;
}
PropertyId propId = nodeState.getPropertyState(QName.JCR_ISCHECKEDOUT).getPropertyId();
PropertyState propState = (PropertyState) stateManager.getItemState(propId);
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/ImporterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/ImporterImpl.java?rev=429288&r1=429287&r2=429288&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/ImporterImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/ImporterImpl.java Mon Aug 7 02:52:34 2006
@@ -378,21 +378,14 @@
break;
case ImportUUIDBehavior.IMPORT_UUID_COLLISION_REPLACE_EXISTING:
- NodeId parentId = conflicting.getParentId();
- if (parentId == null) {
+ // 'replace' current parent with parent of conflicting
+ parent = conflicting.getParentState();
+ if (parent == null) {
msg = "Root node cannot be replaced";
log.debug(msg);
throw new RepositoryException(msg);
}
- // 'replace' current parent with parent of conflicting
- try {
- parent = validator.getNodeState(parentId);
- } catch (ItemNotFoundException infe) {
- // should never get here...
- msg = "Internal error: failed to retrieve parent state";
- log.error(msg, infe);
- throw new RepositoryException(msg, infe);
- }
+
// do remove conflicting (recursive), including validation checks
op = Remove.create(conflicting);
stateMgr.execute(op);