You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2022/12/06 21:02:44 UTC

svn commit: r1905815 - in /jackrabbit/branches/2.20: ./ jackrabbit-jcr2spi/pom.xml jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/LinkedEntries.java

Author: reschke
Date: Tue Dec  6 21:02:44 2022
New Revision: 1905815

URL: http://svn.apache.org/viewvc?rev=1905815&view=rev
Log:
JCR-4862: jackrabbit-jcr2spi: Upgrade LinkedEntries to commons-collections4 (based on Roman Kovarik's work) (merged r1904802 into 2.20)

Modified:
    jackrabbit/branches/2.20/   (props changed)
    jackrabbit/branches/2.20/jackrabbit-jcr2spi/pom.xml
    jackrabbit/branches/2.20/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/LinkedEntries.java

Propchange: jackrabbit/branches/2.20/
------------------------------------------------------------------------------
  Merged /jackrabbit/trunk:r1904802

Modified: jackrabbit/branches/2.20/jackrabbit-jcr2spi/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.20/jackrabbit-jcr2spi/pom.xml?rev=1905815&r1=1905814&r2=1905815&view=diff
==============================================================================
--- jackrabbit/branches/2.20/jackrabbit-jcr2spi/pom.xml (original)
+++ jackrabbit/branches/2.20/jackrabbit-jcr2spi/pom.xml Tue Dec  6 21:02:44 2022
@@ -124,10 +124,6 @@
       <artifactId>slf4j-api</artifactId>
      </dependency>
     <dependency>
-      <groupId>commons-collections</groupId>
-      <artifactId>commons-collections</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-collections4</artifactId>
     </dependency>

Modified: jackrabbit/branches/2.20/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/LinkedEntries.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.20/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/LinkedEntries.java?rev=1905815&r1=1905814&r2=1905815&view=diff
==============================================================================
--- jackrabbit/branches/2.20/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/LinkedEntries.java (original)
+++ jackrabbit/branches/2.20/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/LinkedEntries.java Tue Dec  6 21:02:44 2022
@@ -22,7 +22,7 @@ import java.util.ConcurrentModificationE
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 
-import org.apache.commons.collections.list.AbstractLinkedList;
+import org.apache.commons.collections4.list.AbstractLinkedList;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.Path;
 
@@ -30,8 +30,12 @@ import org.apache.jackrabbit.spi.Path;
  * An implementation of a linked list which provides access to the internal
  * LinkNode which links the entries of the list.
  */
+@SuppressWarnings("rawtypes")
 class LinkedEntries extends AbstractLinkedList {
 
+    private Node<?> header;
+    private volatile int modCount;
+
     private final EntryFactory factory;
     private final NodeEntry parent;
 
@@ -42,6 +46,26 @@ class LinkedEntries extends AbstractLink
         init();
     }
 
+    @SuppressWarnings("unchecked")
+    @Override
+    protected void addNode(Node nodeToInsert, Node insertBeforeNode) {
+        super.addNode(nodeToInsert, insertBeforeNode);
+        modCount++;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override
+    protected void removeNode(Node node) {
+        super.removeNode(node);
+        modCount++;
+    }
+
+    @Override
+    protected void removeAllNodes() {
+        super.removeAllNodes();
+        modCount++;
+    }
+
     /**
      * Returns the matching <code>LinkNode</code> from a list or a single
      * <code>LinkNode</code>. This method will return <code>null</code>
@@ -76,7 +100,7 @@ class LinkedEntries extends AbstractLink
      */
     LinkedEntries.LinkNode add(NodeEntry cne, int index) {
         LinkedEntries.LinkNode ln = new LinkedEntries.LinkNode(cne, index);
-        addNode(ln, header);
+        addNode(ln, getHeader());
         return ln;
     }
 
@@ -95,7 +119,7 @@ class LinkedEntries extends AbstractLink
         if (insertAfter == null) {
             // insert at the beginning
             newNode = new LinkedEntries.LinkNode(cne, index);
-            addNode(newNode, header);
+            addNode(newNode, getHeader());
         } else if (insertAfter.getNextLinkNode() == null) {
             newNode = add(cne, index);
         } else {
@@ -130,7 +154,7 @@ class LinkedEntries extends AbstractLink
     void reorderNode(LinkedEntries.LinkNode insert, LinkedEntries.LinkNode before) {
         removeNode(insert);
         if (before == null) {
-            addNode(insert, header);
+            addNode(insert, getHeader());
         } else {
             addNode(insert, before);
         }
@@ -155,7 +179,8 @@ class LinkedEntries extends AbstractLink
      */
     @Override
     protected Node createHeaderNode() {
-        return new LinkedEntries.LinkNode();
+        header = new LinkedEntries.LinkNode();
+        return header;
     }
 
     /**
@@ -178,6 +203,7 @@ class LinkedEntries extends AbstractLink
             qName = null;
         }
 
+        @SuppressWarnings("unchecked")
         protected LinkNode(Object value, int index) {
             // add soft reference from linkNode to the NodeEntry (value)
             // unless the entry is a SNSibling. TODO: review again.
@@ -190,6 +216,7 @@ class LinkedEntries extends AbstractLink
             throw new UnsupportedOperationException("Not implemented");
         }
 
+        @SuppressWarnings("unchecked")
         @Override
         protected Object getValue() {
             Object val = super.getValue();
@@ -203,7 +230,7 @@ class LinkedEntries extends AbstractLink
             }
             // if the nodeEntry has been g-collected in the mean time
             // create a new NodeEntry in order to avoid returning null.
-            if (ne == null && this != header) {
+            if (ne == null && this != getHeader()) {
                 ne = factory.createNodeEntry(parent, qName, null);
                 super.setValue(new SoftReference<NodeEntry>(ne));
             }
@@ -242,7 +269,7 @@ class LinkedEntries extends AbstractLink
     //----------------------------------------------------------------------
     private class LinkNodeIterator implements Iterator<LinkedEntries.LinkNode> {
 
-        private LinkedEntries.LinkNode next = ((LinkedEntries.LinkNode) header).getNextLinkNode();
+        private LinkedEntries.LinkNode next = getHeader().getNextLinkNode();
         private final int expectedModCount = modCount;
 
         public boolean hasNext() {