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/16 14:50:44 UTC
svn commit: r431889 - in
/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state:
ChildNodeEntry.java NodeState.java PathElementReference.java
UUIDReference.java WorkspaceItemStateFactory.java
Author: mreutegg
Date: Wed Aug 16 05:50:43 2006
New Revision: 431889
URL: http://svn.apache.org/viewvc?rev=431889&view=rev
Log:
- Introduce getUUID() on ChildNodeEntry
- replace ChildNodeEntries.add(QName, NodeId) with ChildNodeEntries.add(QName, String)
Modified:
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntry.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/PathElementReference.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/UUIDReference.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntry.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntry.java?rev=431889&r1=431888&r2=431889&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntry.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntry.java Wed Aug 16 05:50:43 2006
@@ -36,6 +36,13 @@
public QName getName();
/**
+ * @return the UUID of the node state which is referenced by this child node
+ * entry or <code>null</code> if the node state cannot be identified with a
+ * UUID.
+ */
+ public String getUUID();
+
+ /**
* @return the index of this child node entry to suppport same-name siblings.
*/
public int getIndex();
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=431889&r1=431888&r2=431889&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 Wed Aug 16 05:50:43 2006
@@ -184,7 +184,7 @@
it = nodeState.getChildNodeEntries().iterator();
while (it.hasNext()) {
ChildNodeEntry cne = (ChildNodeEntry) it.next();
- childNodeEntries.add(cne.getName(), cne.getId());
+ childNodeEntries.add(cne.getName(), cne.getUUID());
}
}
}
@@ -463,12 +463,16 @@
/**
* Adds a new <code>ChildNodeEntry</code>.
*
- * @param nodeName <code>QName</code> object specifying the name of the new entry.
- * @param id the id the new entry is refering to.
+ * @param nodeName <code>QName</code> object specifying the name of the new
+ * entry.
+ * @param uuid the uuid the new entry is refering to or
+ * <code>null</code> if the child node state cannot be
+ * identified with a uuid.
* @return the newly added <code>ChildNodeEntry</code>
*/
- synchronized ChildNodeEntry addChildNodeEntry(QName nodeName, NodeId id) {
- ChildNodeEntry entry = childNodeEntries.add(nodeName, id);
+ synchronized ChildNodeEntry addChildNodeEntry(QName nodeName,
+ String uuid) {
+ ChildNodeEntry entry = childNodeEntries.add(nodeName, uuid);
notifyNodeAdded(entry);
return entry;
}
@@ -529,7 +533,6 @@
}
/**
- /**
* @inheritDoc
* @see ItemState#remove()
*/
@@ -825,7 +828,7 @@
childNodeEntries.clear(); // TODO: any mre cleanup work to do? try some kind of merging?
for (Iterator it = nodeEntries.iterator(); it.hasNext(); ) {
ChildNodeEntry cne = (ChildNodeEntry) it.next();
- childNodeEntries.add(cne.getName(), cne.getId());
+ childNodeEntries.add(cne.getName(), cne.getUUID());
}
// TODO: correct?
notifyNodesReplaced();
@@ -849,7 +852,7 @@
ChildNodeEntry oldEntry = childNodeEntries.remove(childId);
if (oldEntry != null) {
if (newParent == this) {
- ChildNodeEntry newEntry = childNodeEntries.add(name, oldEntry.getId());
+ ChildNodeEntry newEntry = childNodeEntries.add(name, childState.getUUID());
notifyNodeAdded(newEntry);
notifyNodeRemoved(oldEntry);
} else {
@@ -857,7 +860,7 @@
// re-parent target node
childState.setParent(newParent);
// add child node entry to new parent
- newParent.addChildNodeEntry(newName, childId);
+ newParent.addChildNodeEntry(newName, childState.getUUID());
}
} else {
throw new RepositoryException("Unexpected error: Child state to be renamed does not exist.");
@@ -1024,7 +1027,7 @@
return null;
}
- ChildNodeEntry add(QName nodeName, NodeId id) {
+ ChildNodeEntry add(QName nodeName, String uuid) {
List siblings = null;
Object obj = nameMap.get(nodeName);
if (obj != null) {
@@ -1040,13 +1043,13 @@
}
}
- ChildNodeEntry entry = createChildNodeEntry(nodeName, id);
+ ChildNodeEntry entry = createChildNodeEntry(nodeName, uuid);
if (siblings != null) {
siblings.add(entry);
} else {
nameMap.put(nodeName, entry);
}
- entries.put(id, entry);
+ entries.put(idFactory.createNodeId(uuid), entry);
return entry;
}
@@ -1081,7 +1084,7 @@
while (iter.hasNext()) {
ChildNodeEntry entry = (ChildNodeEntry) iter.next();
// delegate to add(QName, String) to maintain consistency
- add(entry.getName(), entry.getId());
+ add(entry.getName(), entry.getUUID());
}
}
@@ -1166,17 +1169,20 @@
/**
* Creates a <code>ChildNodeEntry</code> instance based on
- * <code>nodeName</code>, <code>id</code> and <code>index</code>.
+ * <code>nodeName</code> and an optional <code>uuid</code>.
*
* @param nodeName the name of the child node.
- * @param id the id of the child node.
- * @return
+ * @param uuid the UUID of the child node. If <code>null</code> the
+ * child node cannot be identified with a UUID.
+ * @return the created child node entry.
*/
- private ChildNodeEntry createChildNodeEntry(QName nodeName, NodeId id) {
- if (id.getRelativePath() != null) {
- return new PathElementReference(NodeState.this, nodeName, isf, idFactory);
+ private ChildNodeEntry createChildNodeEntry(QName nodeName, String uuid) {
+ if (uuid == null) {
+ return new PathElementReference(NodeState.this, nodeName,
+ isf, idFactory);
} else {
- return new UUIDReference(NodeState.this, id, isf, nodeName);
+ return new UUIDReference(NodeState.this,
+ idFactory.createNodeId(uuid), isf, nodeName);
}
}
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PathElementReference.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PathElementReference.java?rev=431889&r1=431888&r2=431889&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PathElementReference.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PathElementReference.java Wed Aug 16 05:50:43 2006
@@ -79,4 +79,13 @@
public NodeId getId() {
return idFactory.createNodeId(parent.getNodeId(), Path.create(getName(), getIndex()));
}
+
+ /**
+ * This implementation always returns <code>null</code>.
+ * @inheritDoc
+ * @see ChildNodeEntry#getUUID()
+ */
+ public String getUUID() {
+ return null;
+ }
}
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=431889&r1=431888&r2=431889&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 Wed Aug 16 05:50:43 2006
@@ -85,4 +85,13 @@
public NodeId getId() {
return childId;
}
+
+ /**
+ * This implementation always returns a non-null value.
+ * @inheritDoc
+ * @see ChildNodeEntry#getUUID()
+ */
+ public String getUUID() {
+ return childId.getUUID();
+ }
}
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?rev=431889&r1=431888&r2=431889&view=diff
==============================================================================
--- 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 Aug 16 05:50:43 2006
@@ -120,8 +120,11 @@
// references to child items
for (IdIterator it = info.getNodeIds(); it.hasNext(); ) {
NodeInfo childInfo = service.getNodeInfo(sessionInfo, (NodeId) it.nextId());
- NodeId childId = childInfo.getId();
- state.addChildNodeEntry(childInfo.getQName(), childId);
+ String childUUID = null;
+ if (childInfo.getId().getRelativePath() == null) {
+ childUUID = childInfo.getId().getUUID();
+ }
+ state.addChildNodeEntry(childInfo.getQName(), childUUID);
}
// references to properties