You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2006/08/18 14:15:05 UTC
svn commit: r432559 - in /jackrabbit/trunk/contrib/spi: client/
jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/
jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/
Author: mreutegg
Date: Fri Aug 18 05:15:02 2006
New Revision: 432559
URL: http://svn.apache.org/viewvc?rev=432559&view=rev
Log:
- LazyItemIterator is created with either ChildItemReferences or ItemStates but did not handle ChildItemReferences.
- Temporarily use NodeId(null, "/") as root node id.
- TransientItemStateManager throws exception when root node state is created.
- Incorrect check for path part in UUIDReference.
Modified:
jackrabbit/trunk/contrib/spi/client/ (props changed)
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildItemReference.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/PathResolver.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/UUIDReference.java
Propchange: jackrabbit/trunk/contrib/spi/client/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Aug 18 05:15:02 2006
@@ -0,0 +1,2 @@
+target
+*.iml
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java?rev=432559&r1=432558&r2=432559&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/LazyItemIterator.java Fri Aug 18 05:15:02 2006
@@ -17,6 +17,8 @@
package org.apache.jackrabbit.jcr2spi;
import org.apache.jackrabbit.jcr2spi.state.ItemState;
+import org.apache.jackrabbit.jcr2spi.state.ChildItemReference;
+import org.apache.jackrabbit.jcr2spi.state.ItemStateException;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
@@ -87,16 +89,29 @@
// reset
next = null;
while (next == null && pos < stateList.size()) {
- ItemState state = (ItemState) stateList.get(pos);
+ // TODO: make sure only ItemStates or ChildItemReferences are used, not both!
+ // TODO: check constructors of LazyItemIterator
+ Object refOrState = stateList.get(pos);
try {
+ ItemState state;
+ if (refOrState instanceof ChildItemReference) {
+ state = ((ChildItemReference) refOrState).resolve();
+ } else {
+ state = (ItemState) refOrState;
+ }
next = itemMgr.getItem(state);
} catch (ItemNotFoundException e) {
- log.debug("ignoring nonexistent item " + state);
+ log.debug("ignoring nonexistent item " + refOrState);
// remove invalid id
stateList.remove(pos);
// try next
} catch (RepositoryException e) {
- log.error("failed to fetch item " + state + ", skipping...", e);
+ log.error("failed to fetch item " + refOrState + ", skipping...", e);
+ // remove invalid id
+ stateList.remove(pos);
+ // try next
+ } catch (ItemStateException e) {
+ log.debug("ignoring nonexistent item " + refOrState);
// remove invalid id
stateList.remove(pos);
// try next
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildItemReference.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildItemReference.java?rev=432559&r1=432558&r2=432559&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildItemReference.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildItemReference.java Fri Aug 18 05:15:02 2006
@@ -26,7 +26,7 @@
* @see ChildNodeReference
* @see PropertyReference
*/
-abstract class ChildItemReference {
+public abstract class ChildItemReference {
/**
* Cached weak reference to the target NodeState.
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=432559&r1=432558&r2=432559&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 Fri Aug 18 05:15:02 2006
@@ -56,7 +56,7 @@
/**
* A current element Path instance.
*/
- private static final Path CURRENT_PATH;
+ public static final Path CURRENT_PATH;
static {
try {
@@ -166,8 +166,8 @@
int initialStatus, boolean isTransient,
ItemStateFactory isf, IdFactory idFactory) {
super(overlayedState, parent, initialStatus, isTransient, idFactory);
- pull();
this.isf = isf;
+ pull();
}
/**
@@ -190,7 +190,7 @@
addPropertyName((QName) it.next());
}
// re-create child node entries
- childNodeEntries.clear(); // TODO: any mre cleanup work to do? try some kind of merging?
+ childNodeEntries.removeAll(); // TODO: any mre cleanup work to do? try some kind of merging?
it = nodeState.getChildNodeEntries().iterator();
while (it.hasNext()) {
ChildNodeEntry cne = (ChildNodeEntry) it.next();
@@ -268,7 +268,7 @@
}
} else {
// root node
- return idFactory.createNodeId((String) null, CURRENT_PATH);
+ return idFactory.createNodeId((String) null, Path.ROOT);
}
// TODO: replace with ItemStateException instead of error.
throw new InternalError("Unable to retrieve NodeId for NodeState");
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PathResolver.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PathResolver.java?rev=432559&r1=432558&r2=432559&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PathResolver.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PathResolver.java Fri Aug 18 05:15:02 2006
@@ -39,14 +39,11 @@
*
* @param start the starting point.
* @param relPath the path to resolve.
- * @throws IllegalArgumentException if relPath is absolute or not normalized
- * or starts with a parent ('..') path
- * element.
+ * @throws IllegalArgumentException if not normalized or starts with a
+ * parent ('..') path element.
*/
private PathResolver(ItemState start, Path relPath) {
- if (relPath.isAbsolute()
- || !relPath.isNormalized()
- || relPath.getElement(0).denotesParent()) {
+ if (!relPath.isNormalized() || relPath.getElement(0).denotesParent()) {
throw new IllegalArgumentException("path must be relative and must " +
"not contain parent path elements");
}
@@ -110,6 +107,15 @@
NodeState state = (NodeState) start;
for (int i = 0; i < relPath.getLength(); i++) {
Path.PathElement elem = relPath.getElement(i);
+ // check for root element
+ if (elem.denotesRoot()) {
+ if (start.getParent() != null) {
+ throw new NoSuchItemStateException(relPath.toString());
+ } else {
+ continue;
+ }
+ }
+
// first try to resolve node
if (state.hasChildNodeEntry(elem.getName(), elem.getNormalizedIndex())) {
state = state.getChildNodeEntry(elem.getName(),
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=432559&r1=432558&r2=432559&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 Fri Aug 18 05:15:02 2006
@@ -593,8 +593,11 @@
throws NoSuchItemStateException, ItemStateException {
// retrieve state to overlay
NodeState overlayedState = (NodeState) parent.getItemState(nodeId);
- NodeId parentId = overlayedState.getParent().getNodeId();
- NodeState parentState = (NodeState) ism.getItemState(parentId);
+ NodeState overlayedParent = overlayedState.getParent();
+ NodeState parentState = null;
+ if (overlayedParent != null) {
+ parentState = (NodeState) ism.getItemState(overlayedParent.getId());
+ }
NodeState nodeState = new NodeState(overlayedState, parentState,
ItemState.STATUS_EXISTING, true, this, idFactory);
nodeState.addListener(listener);
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/UUIDReference.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/UUIDReference.java?rev=432559&r1=432558&r2=432559&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/UUIDReference.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/UUIDReference.java Fri Aug 18 05:15:02 2006
@@ -44,7 +44,7 @@
*/
UUIDReference(NodeState parent, NodeId childId, ItemStateFactory isf, QName name) {
super(parent, name, isf);
- if (childId.getRelativePath() == null) {
+ if (childId.getRelativePath() != null) {
throw new IllegalArgumentException("childId must not contain a relative path");
}
this.childId = childId;