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/07/27 15:31:55 UTC

svn commit: r426067 - in /jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi: ./ nodetype/ state/ version/ xml/

Author: mreutegg
Date: Thu Jul 27 06:31:54 2006
New Revision: 426067

URL: http://svn.apache.org/viewvc?rev=426067&view=rev
Log:
Extract ChildNodeEntry and convert to interface to allow alternative implementation

Added:
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntry.java   (with props)
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntryImpl.java   (with props)
Modified:
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/CachingHierarchyManager.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/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/ZombieHierarchyManager.java
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeManagerImpl.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/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/SessionItemStateManager.java
    jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.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/CachingHierarchyManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/CachingHierarchyManager.java?rev=426067&r1=426066&r2=426067&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/CachingHierarchyManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/CachingHierarchyManager.java Thu Jul 27 06:31:54 2006
@@ -22,6 +22,7 @@
 import org.apache.jackrabbit.jcr2spi.state.ItemStateManager;
 import org.apache.jackrabbit.jcr2spi.state.NodeState;
 import org.apache.jackrabbit.jcr2spi.state.NodeStateListener;
+import org.apache.jackrabbit.jcr2spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.name.NamespaceResolver;
 import org.apache.jackrabbit.name.Path;
 import org.apache.jackrabbit.name.QName;
@@ -286,7 +287,7 @@
             Iterator iter = element.getChildren();
             while (iter.hasNext()) {
                 PathMap.Element child = (PathMap.Element) iter.next();
-                NodeState.ChildNodeEntry cne = modified.getChildNodeEntry(
+                ChildNodeEntry cne = modified.getChildNodeEntry(
                         child.getName(), child.getNormalizedIndex());
                 if (cne == null) {
                     // Item does not exist, remove
@@ -384,8 +385,8 @@
 
         Iterator iter = entries.iterator();
         while (iter.hasNext()) {
-            NodeState.ChildNodeEntry now = (NodeState.ChildNodeEntry) iter.next();
-            NodeState.ChildNodeEntry old =
+            ChildNodeEntry now = (ChildNodeEntry) iter.next();
+            ChildNodeEntry old =
                     ((NodeState) state.getOverlayedState()).getChildNodeEntry(now.getId());
 
             if (old == null) {

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=426067&r1=426066&r2=426067&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 Thu Jul 27 06:31:54 2006
@@ -22,6 +22,7 @@
 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.name.NamespaceResolver;
 import org.apache.jackrabbit.name.NoPrefixDeclaredException;
 import org.apache.jackrabbit.spi.NodeId;
@@ -127,7 +128,7 @@
      *         no such entry.
      * @see ZombieHierarchyManager#getChildNodeEntry(NodeState, NodeId)
      */
-    protected NodeState.ChildNodeEntry getChildNodeEntry(NodeState parent,
+    protected ChildNodeEntry getChildNodeEntry(NodeState parent,
                                                          NodeId id) {
         return parent.getChildNodeEntry(id);
     }
@@ -147,7 +148,7 @@
      *         <code>null</code> if there's no such entry.
      * @see ZombieHierarchyManager#getChildNodeEntry(NodeState, QName, int)
      */
-    protected NodeState.ChildNodeEntry getChildNodeEntry(NodeState parent,
+    protected ChildNodeEntry getChildNodeEntry(NodeState parent,
                                                          QName name,
                                                          int index) {
         return parent.getChildNodeEntry(name, index);
@@ -206,7 +207,7 @@
 
         if (parentState.hasChildNodeEntry(name, index)) {
             // child node
-            NodeState.ChildNodeEntry nodeEntry = getChildNodeEntry(parentState, name, index);
+            ChildNodeEntry nodeEntry = getChildNodeEntry(parentState, name, index);
             childId = nodeEntry.getId();
         } else if (parentState.hasPropertyName(name)) {
             // property
@@ -258,7 +259,7 @@
         if (state.isNode()) {
             NodeState nodeState = (NodeState) state;
             NodeId id = nodeState.getNodeId();
-            NodeState.ChildNodeEntry entry = getChildNodeEntry(parent, id);
+            ChildNodeEntry entry = getChildNodeEntry(parent, id);
             if (entry == null) {
                 String msg = "failed to build path of " + state.getId() + ": "
                         + parent.getNodeId() + " has no child entry for "
@@ -371,7 +372,7 @@
                 throw new RepositoryException(msg, ise);
             }
 
-            NodeState.ChildNodeEntry entry =
+            ChildNodeEntry entry =
                     getChildNodeEntry(parentState, nodeId);
             if (entry == null) {
                 String msg = "failed to resolve name of " + nodeId;

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=426067&r1=426066&r2=426067&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 Thu Jul 27 06:31:54 2006
@@ -22,6 +22,7 @@
 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.Dumpable;
 import org.apache.jackrabbit.jcr2spi.version.VersionHistoryImpl;
 import org.apache.jackrabbit.jcr2spi.version.VersionImpl;
@@ -274,7 +275,7 @@
 
     //--------------------------------------------------------< ItemManager >---
     /**
-     * @inheritdoc
+     * @inheritDoc
      */
     public void dispose() {
         itemCache.clear();
@@ -395,7 +396,7 @@
         Iterator iter = nodeState.getChildNodeEntries().iterator();
 
         while (iter.hasNext()) {
-            NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) iter.next();
+            ChildNodeEntry entry = (ChildNodeEntry) iter.next();
             NodeId id = entry.getId();
             // check read access
             if (session.getAccessManager().canRead(id)) {
@@ -424,7 +425,7 @@
         Iterator iter = nodeState.getChildNodeEntries().iterator();
 
         while (iter.hasNext()) {
-            NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) iter.next();
+            ChildNodeEntry entry = (ChildNodeEntry) iter.next();
             NodeId id = entry.getId();
             // check read access
             if (session.getAccessManager().canRead(id)) {

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=426067&r1=426066&r2=426067&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 Thu Jul 27 06:31:54 2006
@@ -34,6 +34,7 @@
 import org.apache.jackrabbit.jcr2spi.state.ItemStateException;
 import org.apache.jackrabbit.jcr2spi.state.NodeReferences;
 import org.apache.jackrabbit.jcr2spi.state.ItemStateValidator;
+import org.apache.jackrabbit.jcr2spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.jcr2spi.nodetype.NodeTypeManagerImpl;
 import org.apache.jackrabbit.jcr2spi.nodetype.EffectiveNodeType;
 import org.apache.jackrabbit.jcr2spi.nodetype.NodeTypeConflictException;
@@ -542,7 +543,7 @@
         }
         try {
             NodeState parent = (NodeState) itemStateMgr.getItemState(parentId);
-            NodeState.ChildNodeEntry parentEntry = parent.getChildNodeEntry(getNodeId());
+            ChildNodeEntry parentEntry = parent.getChildNodeEntry(getNodeId());
             return parentEntry.getIndex();
         } catch (ItemStateException ise) {
             // should never get here...
@@ -1279,9 +1280,9 @@
         List cne = getNodeState().getChildNodeEntries(nodeName);
         if (definition.allowsSameNameSiblings()) {
             // TODO: find proper solution. problem with same-name-siblings
-            childId = ((NodeState.ChildNodeEntry)cne.get(cne.size()-1)).getId();
+            childId = ((ChildNodeEntry)cne.get(cne.size()-1)).getId();
         } else {
-            childId = ((NodeState.ChildNodeEntry)cne.get(0)).getId();
+            childId = ((ChildNodeEntry)cne.get(0)).getId();
         }
         // finally retrieve the new node
         return (Node) itemMgr.getItem(childId);
@@ -1516,7 +1517,7 @@
                 if (pe.denotesName()) {
                     // check if node entry exists
                     int index = pe.getNormalizedIndex();
-                    NodeState.ChildNodeEntry cne = getNodeState().getChildNodeEntry(pe.getName(), index);
+                    ChildNodeEntry cne = getNodeState().getChildNodeEntry(pe.getName(), index);
                     if (cne != null) {
                         targetId = cne.getId();
                     } // else: there's no child node with that name

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=426067&r1=426066&r2=426067&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 Thu Jul 27 06:31:54 2006
@@ -21,6 +21,7 @@
 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.ChildNodeEntry;
 import org.apache.jackrabbit.name.NamespaceResolver;
 import org.apache.jackrabbit.spi.ItemId;
 import org.apache.jackrabbit.name.QName;
@@ -97,13 +98,13 @@
      * <p/>
      * Also allows for removed/renamed child node entries.
      */
-    protected NodeState.ChildNodeEntry getChildNodeEntry(NodeState parent,
+    protected ChildNodeEntry getChildNodeEntry(NodeState parent,
                                                          QName name,
                                                          int index) {
         // check removed child node entries first
         Iterator iter = parent.getRemovedChildNodeEntries().iterator();
         while (iter.hasNext()) {
-            NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) iter.next();
+            ChildNodeEntry entry = (ChildNodeEntry) iter.next();
             if (entry.getName().equals(name) && entry.getIndex() == index) {
                 return entry;
             }
@@ -118,13 +119,13 @@
      * <p/>
      * Also allows for removed child node entries.
      */
-    protected NodeState.ChildNodeEntry getChildNodeEntry(NodeState parent,
+    protected ChildNodeEntry getChildNodeEntry(NodeState parent,
                                                          NodeId id) {
         // check removed child node entries first
         Iterator iter = parent.getRemovedChildNodeEntries().iterator();
         while (iter.hasNext()) {
-            NodeState.ChildNodeEntry entry =
-                    (NodeState.ChildNodeEntry) iter.next();
+            ChildNodeEntry entry =
+                    (ChildNodeEntry) iter.next();
             if (entry.getId().equals(id)) {
                 return entry;
             }

Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeManagerImpl.java?rev=426067&r1=426066&r2=426067&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeManagerImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeManagerImpl.java Thu Jul 27 06:31:54 2006
@@ -26,6 +26,7 @@
 import org.apache.jackrabbit.util.IteratorHelper;
 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.Dumpable;
 import org.apache.jackrabbit.spi.QNodeDefinition;
 import org.apache.jackrabbit.spi.QPropertyDefinition;
@@ -194,7 +195,7 @@
                     // special case for root state
                     def = ntReg.getRootNodeDef();
                 } else {
-                    NodeState.ChildNodeEntry cne = parentState.getChildNodeEntry(nodeState.getNodeId());
+                    ChildNodeEntry cne = parentState.getChildNodeEntry(nodeState.getNodeId());
                     def = ntReg.getEffectiveNodeType(parentState.getNodeTypeNames()).getApplicableNodeDefinition(cne.getName(), nodeState.getNodeTypeName());
                 }
             } catch (NodeTypeConflictException e) {

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?rev=426067&r1=426066&r2=426067&view=diff
==============================================================================
--- 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 Thu Jul 27 06:31:54 2006
@@ -322,7 +322,7 @@
     private static Path.PathElement getNameElement(NodeState parent, ItemState state)
             throws ItemStateException {
         if (state.isNode()) {
-            NodeState.ChildNodeEntry entry = parent.getChildNodeEntry((NodeId) state.getId());
+            ChildNodeEntry entry = parent.getChildNodeEntry((NodeId) state.getId());
             if (entry == null) {
                 throw new ItemStateException("No child node entry " +
                         state.getId() + " found in " + parent.getId());

Added: 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=426067&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntry.java (added)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntry.java Thu Jul 27 06:31:54 2006
@@ -0,0 +1,38 @@
+/*
+ * $URL:$
+ * $Id:$
+ *
+ * Copyright 1997-2005 Day Management AG
+ * Barfuesserplatz 6, 4001 Basel, Switzerland
+ * All Rights Reserved.
+ *
+ * This software is the confidential and proprietary information of
+ * Day Management AG, ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license agreement you entered into
+ * with Day.
+ */
+package org.apache.jackrabbit.jcr2spi.state;
+
+import org.apache.jackrabbit.spi.NodeId;
+import org.apache.jackrabbit.name.QName;
+
+/**
+ * <code>ChildNodeEntry</code>...
+ *
+ * @author mreutegg
+ * @version $Rev:$, $Date:$
+ */
+public interface ChildNodeEntry {
+
+    /**
+     * the cvs/svn id
+     */
+    static final String CVS_ID = "$URL:$ $Rev:$ $Date:$";
+
+    NodeId getId();
+
+    QName getName();
+
+    int getIndex();
+}

Propchange: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntryImpl.java?rev=426067&view=auto
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntryImpl.java (added)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntryImpl.java Thu Jul 27 06:31:54 2006
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.jcr2spi.state;
+
+import org.apache.jackrabbit.name.QName;
+import org.apache.jackrabbit.name.Path;
+import org.apache.jackrabbit.spi.NodeId;
+
+/**
+ * <code>ChildNodeEntry</code> specifies the name, index (in the case of
+ * same-name siblings) and the UUID of a child node entry.
+ * <p/>
+ * <code>ChildNodeEntry</code> instances are immutable.
+ */
+public final class ChildNodeEntryImpl implements ChildNodeEntry {
+
+    private int hash = 0;
+
+    private final QName name;
+    private final int index; // 1-based index for same-name siblings
+    private final NodeId id;
+
+    public ChildNodeEntryImpl(QName name, NodeId id, int index) {
+        if (name == null) {
+            throw new IllegalArgumentException("name can not be null");
+        }
+        this.name = name;
+
+        if (id == null) {
+            throw new IllegalArgumentException("id can not be null");
+        }
+        this.id = id;
+
+        if (index < Path.INDEX_DEFAULT) {
+            throw new IllegalArgumentException("index is 1-based");
+        }
+        this.index = index;
+    }
+
+    public NodeId getId() {
+        return id;
+    }
+
+    public QName getName() {
+        return name;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    //---------------------------------------< java.lang.Object overrides >
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj instanceof ChildNodeEntryImpl) {
+            ChildNodeEntryImpl other = (ChildNodeEntryImpl) obj;
+            return (name.equals(other.name) && id.equals(other.id)
+                    && index == other.index);
+        }
+        return false;
+    }
+
+    public String toString() {
+        return name.toString() + "[" + index + "] -> " + id;
+    }
+
+    public int hashCode() {
+        // ChildNodeEntry is immutable, we can store the computed hash code value
+        int h = hash;
+        if (h == 0) {
+            h = 17;
+            h = 37 * h + name.hashCode();
+            h = 37 * h + id.hashCode();
+            h = 37 * h + index;
+            hash = h;
+        }
+        return h;
+    }
+}

Propchange: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChildNodeEntryImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=426067&r1=426066&r2=426067&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 Thu Jul 27 06:31:54 2006
@@ -762,7 +762,7 @@
 
         } else if (parentState.hasChildNodeEntry(nodeName)) {
             // retrieve the existing node state that ev. conflicts with the new one.
-            NodeState.ChildNodeEntry entry = parentState.getChildNodeEntry(nodeName, 1);
+            ChildNodeEntry entry = parentState.getChildNodeEntry(nodeName, 1);
             NodeState conflictingState = getNodeState(entry.getId());
 
             QNodeDefinition conflictDef = conflictingState.getDefinition();

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=426067&r1=426066&r2=426067&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 Thu Jul 27 06:31:54 2006
@@ -932,7 +932,7 @@
             }
             index++;
 
-            ChildNodeEntry entry = new ChildNodeEntry(nodeName, id, index);
+            ChildNodeEntry entry = new ChildNodeEntryImpl(nodeName, id, index);
             if (siblings != null) {
                 siblings.add(entry);
             } else {
@@ -987,7 +987,7 @@
             // update indices of subsequent same-name siblings
             for (int i = index - 1; i < siblings.size(); i++) {
                 ChildNodeEntry oldEntry = (ChildNodeEntry) siblings.get(i);
-                ChildNodeEntry newEntry = new ChildNodeEntry(nodeName, oldEntry.getId(), oldEntry.getIndex() - 1);
+                ChildNodeEntry newEntry = new ChildNodeEntryImpl(nodeName, oldEntry.getId(), oldEntry.getIndex() - 1);
                 // overwrite old entry with updated entry in siblings list
                 siblings.set(i, newEntry);
                 // overwrite old entry with updated entry in ordered entries map
@@ -1318,77 +1318,4 @@
         }
     }
 
-    /**
-     * <code>ChildNodeEntry</code> specifies the name, index (in the case of
-     * same-name siblings) and the UUID of a child node entry.
-     * <p/>
-     * <code>ChildNodeEntry</code> instances are immutable.
-     */
-    public static final class ChildNodeEntry {
-
-        private int hash = 0;
-
-        private final QName name;
-        private final int index; // 1-based index for same-name siblings
-        private final NodeId id;
-
-        private ChildNodeEntry(QName name, NodeId id, int index) {
-            if (name == null) {
-                throw new IllegalArgumentException("name can not be null");
-            }
-            this.name = name;
-
-            if (id == null) {
-                throw new IllegalArgumentException("id can not be null");
-            }
-            this.id = id;
-
-            if (index < Path.INDEX_DEFAULT) {
-                throw new IllegalArgumentException("index is 1-based");
-            }
-            this.index = index;
-        }
-
-        public NodeId getId() {
-            return id;
-        }
-
-        public QName getName() {
-            return name;
-        }
-
-        public int getIndex() {
-            return index;
-        }
-
-        //---------------------------------------< java.lang.Object overrides >
-        public boolean equals(Object obj) {
-            if (this == obj) {
-                return true;
-            }
-            if (obj instanceof ChildNodeEntry) {
-                ChildNodeEntry other = (ChildNodeEntry) obj;
-                return (name.equals(other.name) && id.equals(other.id)
-                        && index == other.index);
-            }
-            return false;
-        }
-
-        public String toString() {
-            return name.toString() + "[" + index + "] -> " + id;
-        }
-
-        public int hashCode() {
-            // ChildNodeEntry is immutable, we can store the computed hash code value
-            int h = hash;
-            if (h == 0) {
-                h = 17;
-                h = 37 * h + name.hashCode();
-                h = 37 * h + id.hashCode();
-                h = 37 * h + index;
-                hash = h;
-            }
-            return h;
-        }
-    }
 }

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=426067&r1=426066&r2=426067&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 Thu Jul 27 06:31:54 2006
@@ -866,13 +866,13 @@
                 // removed child node entries
                 Iterator cneIt = nodeState.getRemovedChildNodeEntries().iterator();
                 while (cneIt.hasNext()) {
-                    NodeState.ChildNodeEntry cne = (NodeState.ChildNodeEntry) cneIt.next();
+                    ChildNodeEntry cne = (ChildNodeEntry) cneIt.next();
                     dependentIDs.add(cne.getId());
                 }
                 // added child node entries
                 cneIt = nodeState.getAddedChildNodeEntries().iterator();
                 while (cneIt.hasNext()) {
-                    NodeState.ChildNodeEntry cne = (NodeState.ChildNodeEntry) cneIt.next();
+                    ChildNodeEntry cne = (ChildNodeEntry) cneIt.next();
                     dependentIDs.add(cne.getId());
                 }
 
@@ -975,7 +975,7 @@
         // perform the move (modifying states)
         // TODO: TO-BE-FIXED. Move with SPI id       
         boolean renameOnly = srcParent.getNodeId().equals(destParent.getNodeId());
-        NodeState.ChildNodeEntry cne = srcParent.getChildNodeEntry(srcState.getNodeId());
+        ChildNodeEntry cne = srcParent.getChildNodeEntry(srcState.getNodeId());
         QName srcName = cne.getName();
         int srcIndex = cne.getIndex();
         if (renameOnly) {
@@ -1100,7 +1100,7 @@
             // use temp array to avoid ConcurrentModificationException
             Iterator childNodes = new ArrayList(nState.getChildNodeEntries()).iterator();
             while (childNodes.hasNext()) {
-                NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) childNodes.next();
+                ChildNodeEntry entry = (ChildNodeEntry) childNodes.next();
                 NodeState childState = validator.getNodeState(entry.getId());
                 // check if node has been defined by mixin type (or one of its supertypes)
                 QName declNtName = childState.getDefinition().getDeclaringNodeType();
@@ -1140,7 +1140,7 @@
         ArrayList list = new ArrayList(parent.getChildNodeEntries());
         int srcInd = -1, destInd = -1;
         for (int i = 0; i < list.size(); i++) {
-            NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) list.get(i);
+            ChildNodeEntry entry = (ChildNodeEntry) list.get(i);
             if (srcInd == -1) {
                 if (entry.getId().equals(srcId)) {
                     srcInd = i;
@@ -1423,7 +1423,7 @@
             Iterator tmpIter = new ArrayList(targetState.getChildNodeEntries()).iterator();
             // remove from tail to avoid problems with same-name siblings
             while (tmpIter.hasNext()) {
-                NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) tmpIter.next();
+                ChildNodeEntry entry = (ChildNodeEntry) tmpIter.next();
                 try {
                     NodeState child = validator.getNodeState(entry.getId());
                     // remove child node

Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java?rev=426067&r1=426066&r2=426067&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java Thu Jul 27 06:31:54 2006
@@ -29,6 +29,7 @@
 import org.apache.jackrabbit.jcr2spi.operation.Remove;
 import org.apache.jackrabbit.jcr2spi.state.NodeState;
 import org.apache.jackrabbit.jcr2spi.state.ItemStateException;
+import org.apache.jackrabbit.jcr2spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.name.QName;
 import org.apache.jackrabbit.name.NameException;
 import org.apache.jackrabbit.name.NoPrefixDeclaredException;
@@ -73,7 +74,7 @@
         // retrieve nodestate of the jcr:versionLabels node
         vhState = state;
         if (vhState.hasChildNodeEntry(QName.JCR_VERSIONLABELS)) {
-            NodeState.ChildNodeEntry lnEntry = vhState.getChildNodeEntry(QName.JCR_VERSIONLABELS, Path.INDEX_DEFAULT);
+            ChildNodeEntry lnEntry = vhState.getChildNodeEntry(QName.JCR_VERSIONLABELS, Path.INDEX_DEFAULT);
             try {
                 labelNodeState = (NodeState) itemStateMgr.getItemState(lnEntry.getId());
             } catch (ItemStateException e) {
@@ -118,7 +119,7 @@
 
         // all child-nodes except from jcr:versionLabels point to Versions.
         while (childIter.hasNext()) {
-            NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) childIter.next();
+            ChildNodeEntry entry = (ChildNodeEntry) childIter.next();
             if (!QName.JCR_VERSIONLABELS.equals(entry.getName())) {
                 versionIds.add(entry.getId());
             }
@@ -332,7 +333,7 @@
     private NodeId getVersionId(String versionName) throws VersionException, RepositoryException {
         try {
             QName vQName = NameFormat.parse(versionName, session.getNamespaceResolver());
-            NodeState.ChildNodeEntry vEntry = vhState.getChildNodeEntry(vQName, Path.INDEX_DEFAULT);
+            ChildNodeEntry vEntry = vhState.getChildNodeEntry(vQName, Path.INDEX_DEFAULT);
             if (vEntry == null) {
                 throw new VersionException("Version '" + versionName + "' does not exist in this version history.");
             } else {

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=426067&r1=426066&r2=426067&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 Thu Jul 27 06:31:54 2006
@@ -21,6 +21,7 @@
 import org.apache.jackrabbit.jcr2spi.state.ItemStateValidator;
 import org.apache.jackrabbit.jcr2spi.state.ItemState;
 import org.apache.jackrabbit.jcr2spi.state.SessionItemStateManager;
+import org.apache.jackrabbit.jcr2spi.state.ChildNodeEntry;
 import org.apache.jackrabbit.jcr2spi.SessionImpl;
 import org.apache.jackrabbit.jcr2spi.HierarchyManager;
 import org.apache.jackrabbit.jcr2spi.SessionListener;
@@ -173,7 +174,7 @@
            NodeState nodeState = null;
            if (parent.hasChildNodeEntry(nodeInfo.getName())) {
                // a node with that name already exists...
-               NodeState.ChildNodeEntry entry = parent.getChildNodeEntry(nodeInfo.getName(), 1);
+               ChildNodeEntry entry = parent.getChildNodeEntry(nodeInfo.getName(), 1);
                NodeState existing = validator.getNodeState(entry.getId());
                QNodeDefinition def = existing.getDefinition();
                if (!def.allowsSameNameSiblings()) {
@@ -453,9 +454,9 @@
             List cne = parent.getChildNodeEntries(nodeInfo.getName());
             if (def.allowsSameNameSiblings()) {
                 // TODO: find proper solution. problem with same-name-siblings
-                childId = ((NodeState.ChildNodeEntry)cne.get(cne.size()-1)).getId();
+                childId = ((ChildNodeEntry)cne.get(cne.size()-1)).getId();
             } else {
-                childId = ((NodeState.ChildNodeEntry)cne.get(0)).getId();
+                childId = ((ChildNodeEntry)cne.get(0)).getId();
             }
             NodeState nodeState = validator.getNodeState(childId);