Index: vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/NodeNameList.java =================================================================== --- vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/NodeNameList.java (revision 1606691) +++ vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/NodeNameList.java (working copy) @@ -18,10 +18,12 @@ package org.apache.jackrabbit.vault.fs.api; import java.util.ArrayList; +import java.util.Iterator; import java.util.LinkedHashSet; import java.util.ListIterator; import javax.jcr.Node; +import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; import org.slf4j.Logger; @@ -67,9 +69,12 @@ log.warn("Unable to restore order of a checked-in node: " + parent.getPath()); return false; } + ArrayList list = new ArrayList(names); + if (isOrdered(list, parent)) { + return true; + } int size = names.size(); String last = null; - ArrayList list = new ArrayList(names); ListIterator iter = list.listIterator(size); while (iter.hasPrevious()) { String prev = iter.previous(); @@ -87,5 +92,17 @@ } return true; } + + boolean isOrdered(ArrayList names, Node parent) + throws RepositoryException { + NodeIterator it1 = parent.getNodes(); + for (Iterator it2 = names.iterator(); it2.hasNext();) { + if (!it1.hasNext() || !it1.nextNode().getName().equals(it2.next())) { + return false; + } + } + return !it1.hasNext(); + } + } \ No newline at end of file