Author: j16sdiz
Date: 2009-04-03 06:44:51 +0000 (Fri, 03 Apr 2009)
New Revision: 26411

Modified:
   trunk/freenet/src/freenet/node/NodeRestartJobsQueue.java
   trunk/freenet/src/freenet/node/PacketTracker.java
   trunk/freenet/src/freenet/support/DoublyLinkedListImpl.java
   trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
   trunk/freenet/src/freenet/support/UpdatableSortedLinkedListItemImpl.java
   
trunk/freenet/src/freenet/support/UpdatableSortedLinkedListWithForeignIndex.java
Log:
Even more generic (fix bug 2512)

Modified: trunk/freenet/src/freenet/node/NodeRestartJobsQueue.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeRestartJobsQueue.java    2009-04-03 
06:44:22 UTC (rev 26410)
+++ trunk/freenet/src/freenet/node/NodeRestartJobsQueue.java    2009-04-03 
06:44:51 UTC (rev 26411)
@@ -39,7 +39,7 @@
                });
                if(results.hasNext()) {
                        System.err.println("Found old restart jobs queue");
-                       NodeRestartJobsQueue queue = (NodeRestartJobsQueue) 
results.next();
+                       NodeRestartJobsQueue queue = results.next();
                        container.activate(queue, 1);
                        queue.onInit(container);
                        return queue;

Modified: trunk/freenet/src/freenet/node/PacketTracker.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketTracker.java   2009-04-03 06:44:22 UTC 
(rev 26410)
+++ trunk/freenet/src/freenet/node/PacketTracker.java   2009-04-03 06:44:51 UTC 
(rev 26411)
@@ -71,12 +71,12 @@
         * other side to us, the time at which they become sendable,
         * and the time at which they become urgent. In order of
         * the latter. */
-       private final UpdatableSortedLinkedListWithForeignIndex 
resendRequestQueue;
+       private final 
UpdatableSortedLinkedListWithForeignIndex<QueuedResendRequest> 
resendRequestQueue;
        /** Serial numbers of packets we want to be acknowledged by
         * the other side, the time at which they become sendable,
         * and the time at which they become urgent. In order of
         * the latter. */
-       private final UpdatableSortedLinkedListWithForeignIndex ackRequestQueue;
+       private final 
UpdatableSortedLinkedListWithForeignIndex<QueuedAckRequest> ackRequestQueue;
        /** Numbered packets that we need to send to the other side
         * because they asked for them. Just contains the numbers. */
        private final HashSet<Integer> packetsToResend;
@@ -104,8 +104,8 @@
                highestSeenIncomingSerialNumber = -1;
                // give some leeway
                sentPacketsContents = new LimitedRangeIntByteArrayMap(128);
-               resendRequestQueue = new 
UpdatableSortedLinkedListWithForeignIndex();
-               ackRequestQueue = new 
UpdatableSortedLinkedListWithForeignIndex();
+               resendRequestQueue = new 
UpdatableSortedLinkedListWithForeignIndex<QueuedResendRequest>();
+               ackRequestQueue = new 
UpdatableSortedLinkedListWithForeignIndex<QueuedAckRequest>();
                packetsToResend = new HashSet<Integer>();
                packetNumbersReceived = new ReceivedPacketNumbers(512);
                isDeprecated = false;
@@ -215,8 +215,8 @@
                }
        }
 
-       private abstract class BaseQueuedResend extends PacketActionItem
-               implements 
IndexableUpdatableSortedLinkedListItem<BaseQueuedResend> {
+       private abstract class BaseQueuedResend<T extends BaseQueuedResend<T>> 
extends PacketActionItem
+               implements IndexableUpdatableSortedLinkedListItem<T> {
 
                /** Time at which this item becomes sendable.
                 * When we send a resend request, this is reset to t+500ms.
@@ -243,30 +243,30 @@
                abstract long urgentDelay();
 
                abstract long initialActiveTime(long now);
-               private BaseQueuedResend next;
-               private BaseQueuedResend prev;
+               private T next;
+               private T prev;
 
-               public final BaseQueuedResend getNext() {
+               public final T getNext() {
                        return next;
                }
 
-               public final BaseQueuedResend setNext(Item<?> i) {
-                       BaseQueuedResend old = next;
-                       next = (BaseQueuedResend)i;
+               public final T setNext(Item<?> i) {
+                       T old = next;
+                       next = (T)i;
                        return old;
                }
 
-               public BaseQueuedResend getPrev() {
+               public T getPrev() {
                        return prev;
                }
 
-               public BaseQueuedResend setPrev(Item<?> i) {
-                       BaseQueuedResend old = prev;
-                       prev = (BaseQueuedResend)i;
+               public T setPrev(Item<?> i) {
+                       T old = prev;
+                       prev = (T)i;
                        return old;
                }
 
-               public int compareTo(BaseQueuedResend r) {
+               public int compareTo(T r) {
                        if(urgentTime > r.urgentTime)
                                return 1;
                        if(urgentTime < r.urgentTime)
@@ -281,20 +281,20 @@
                public Object indexValue() {
                        return packetNumber;
                }
-               private DoublyLinkedList<? super BaseQueuedResend> parent;
+               private DoublyLinkedList<? super T> parent;
 
-               public DoublyLinkedList<? super BaseQueuedResend> getParent() {
+               public DoublyLinkedList<? super T> getParent() {
                        return parent;
                }
 
-               public DoublyLinkedList<? super BaseQueuedResend> 
setParent(DoublyLinkedList<? super BaseQueuedResend> l) {
-                       DoublyLinkedList<? super BaseQueuedResend> old = parent;
+               public DoublyLinkedList<? super T> setParent(DoublyLinkedList<? 
super T> l) {
+                       DoublyLinkedList<? super T> old = parent;
                        parent = l;
                        return old;
                }
        }
 
-       private class QueuedResendRequest extends BaseQueuedResend {
+       private class QueuedResendRequest extends 
BaseQueuedResend<QueuedResendRequest> {
 
                @Override
                long initialActiveTime( long now) {
@@ -319,7 +319,7 @@
                }
        }
 
-       private class QueuedAckRequest extends BaseQueuedResend {
+       private class QueuedAckRequest extends 
BaseQueuedResend<QueuedAckRequest> {
 
                final long createdTime;
                long activeDelay;
@@ -596,7 +596,7 @@
                QueuedAckRequest qr = null;
 
                synchronized(ackRequestQueue) {
-                       qr = (QueuedAckRequest) 
ackRequestQueue.removeByKey(seqNo);
+                       qr = ackRequestQueue.removeByKey(seqNo);
                }
                if(qr != null)
                        qr.onAcked();
@@ -908,13 +908,13 @@
                }
                synchronized(resendRequestQueue) {
                        if(!resendRequestQueue.isEmpty()) {
-                               QueuedResendRequest qr = (QueuedResendRequest) 
resendRequestQueue.getLowest();
+                               QueuedResendRequest qr = 
resendRequestQueue.getLowest();
                                earliestTime = Math.min(earliestTime, 
qr.urgentTime);
                        }
                }
                synchronized(ackRequestQueue) {
                        if(!ackRequestQueue.isEmpty()) {
-                               QueuedAckRequest qr = (QueuedAckRequest) 
ackRequestQueue.getLowest();
+                               QueuedAckRequest qr = 
ackRequestQueue.getLowest();
                                earliestTime = Math.min(earliestTime, 
qr.urgentTime);
                        }
                }

Modified: trunk/freenet/src/freenet/support/DoublyLinkedListImpl.java
===================================================================
--- trunk/freenet/src/freenet/support/DoublyLinkedListImpl.java 2009-04-03 
06:44:22 UTC (rev 26410)
+++ trunk/freenet/src/freenet/support/DoublyLinkedListImpl.java 2009-04-03 
06:44:51 UTC (rev 26411)
@@ -455,6 +455,7 @@
             return next;
         }
 
+               @SuppressWarnings("unchecked")
                public final T setNext(DoublyLinkedList.Item<?> i) {
                        T old = next;
                        next = (T) i;
@@ -465,6 +466,7 @@
             return prev;
         }
 
+               @SuppressWarnings("unchecked")
                public final T setPrev(DoublyLinkedList.Item<?> i) {
                        T old = prev;
                        prev = (T) i;

Modified: trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
===================================================================
--- trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java    
2009-04-03 06:44:22 UTC (rev 26410)
+++ trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java    
2009-04-03 06:44:51 UTC (rev 26411)
@@ -71,8 +71,8 @@
        if(ctr % 256 != 0 && !debug) return;
        int statedLength = list.size();
        int realLength = 0;
-       for(Enumeration e = list.elements();e.hasMoreElements();) {
-               UpdatableSortedLinkedListItem i = 
(UpdatableSortedLinkedListItem) e.nextElement();
+       for(Enumeration<T> e = list.elements();e.hasMoreElements();) {
+               T i = e.nextElement();
                // Sanity check for infinite looping 
                if(realLength > 100*1000)
                        Logger.normal(this, "["+realLength+"] = "+i+" 
(prev="+i.getPrev()+ ')');
@@ -185,8 +185,8 @@
      */
     private synchronized void dump() throws 
UpdatableSortedLinkedListKilledException {
        if(killed) throw new UpdatableSortedLinkedListKilledException();
-        for(Enumeration e=list.elements();e.hasMoreElements();) {
-            UpdatableSortedLinkedListItem item = 
(UpdatableSortedLinkedListItem) e.nextElement();
+        for(Enumeration<T> e=list.elements();e.hasMoreElements();) {
+            T item = e.nextElement();
             if(logMINOR) Logger.minor(this, item.toString());
         }
     }
@@ -202,6 +202,7 @@
      * @return an array, in order, of the elements in the list
      * @throws UpdatableSortedLinkedListKilledException 
      */
+    @SuppressWarnings("unchecked")
     public synchronized UpdatableSortedLinkedListItem[] toArray() throws 
UpdatableSortedLinkedListKilledException {
        if(killed) throw new UpdatableSortedLinkedListKilledException();
         int size = list.size();
@@ -211,8 +212,8 @@
         UpdatableSortedLinkedListItem[] output = 
             new UpdatableSortedLinkedListItem[size];
         int i=0;
-        for(Enumeration e = list.elements();e.hasMoreElements();) {
-            output[i++] = (UpdatableSortedLinkedListItem)e.nextElement();
+        for(Enumeration<T> e = list.elements();e.hasMoreElements();) {
+            output[i++] = e.nextElement();
             //Logger.minor(this, "["+(i-1)+"] = "+output[i-1]);
         }
         return output;

Modified: 
trunk/freenet/src/freenet/support/UpdatableSortedLinkedListItemImpl.java
===================================================================
--- trunk/freenet/src/freenet/support/UpdatableSortedLinkedListItemImpl.java    
2009-04-03 06:44:22 UTC (rev 26410)
+++ trunk/freenet/src/freenet/support/UpdatableSortedLinkedListItemImpl.java    
2009-04-03 06:44:51 UTC (rev 26411)
@@ -15,6 +15,7 @@
                return next;
        }
 
+       @SuppressWarnings("unchecked")
        public T setNext(Item<?> i) {
                T old = next;
                next = (T) i;
@@ -25,6 +26,7 @@
                return prev;
        }
 
+       @SuppressWarnings("unchecked")
        public T setPrev(Item<?> i) {
                T old = prev;
                prev = (T) i;

Modified: 
trunk/freenet/src/freenet/support/UpdatableSortedLinkedListWithForeignIndex.java
===================================================================
--- 
trunk/freenet/src/freenet/support/UpdatableSortedLinkedListWithForeignIndex.java
    2009-04-03 06:44:22 UTC (rev 26410)
+++ 
trunk/freenet/src/freenet/support/UpdatableSortedLinkedListWithForeignIndex.java
    2009-04-03 06:44:51 UTC (rev 26411)
@@ -20,9 +20,6 @@
     
     @Override
        public synchronized void add(T item) throws 
UpdatableSortedLinkedListKilledException {
-        if(!(item instanceof IndexableUpdatableSortedLinkedListItem)) {
-            throw new IllegalArgumentException();
-        }
        if(killed) throw new UpdatableSortedLinkedListKilledException();
         T i = item;
         if(map.get(i.indexValue()) != null) {
@@ -42,8 +39,8 @@
         return super.remove(item);
     }
     
-       public synchronized IndexableUpdatableSortedLinkedListItem<?> 
get(Object key) {
-               return (IndexableUpdatableSortedLinkedListItem<?>)map.get(key);
+       public synchronized T get(Object key) {
+               return map.get(key);
        }
 
     public synchronized boolean containsKey(Object key) {
@@ -58,7 +55,7 @@
      * Remove an element from the list by its key.
      * @throws UpdatableSortedLinkedListKilledException 
      */
-    public synchronized IndexableUpdatableSortedLinkedListItem<?> 
removeByKey(Object key) throws UpdatableSortedLinkedListKilledException {
+    public synchronized T removeByKey(Object key) throws 
UpdatableSortedLinkedListKilledException {
        if(killed) throw new UpdatableSortedLinkedListKilledException();
         T item = map.get(key);
         if(item != null) remove(item);

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to