Author: toad
Date: 2009-02-03 22:59:42 +0000 (Tue, 03 Feb 2009)
New Revision: 25531

Modified:
   
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
Log:
Fix ClassCastException


Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java  
    2009-02-03 22:47:19 UTC (rev 25530)
+++ 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java  
    2009-02-03 22:59:42 UTC (rev 25531)
@@ -100,7 +100,7 @@
                                        Logger.minor(this, "Segment is 
finishing when getting key "+token+" on "+this);
                                return null;
                        }
-                       ClientKey key = 
segment.getBlockKey(((Integer)token).intValue(), container);
+                       ClientKey key = 
segment.getBlockKey(((MySendableRequestItem)token).x, container);
                        if(key == null) {
                                if(segment.isFinished(container)) {
                                        Logger.error(this, "Segment finished 
but didn't tell us! "+this);
@@ -284,7 +284,7 @@
                for(int i=0;i<items.length;i++) {
                        fetchExceptions[i] = translateException(items[i].e);
                        if(fetchExceptions[i].isFatal()) countFatal++;
-                       removeBlockNum(((Integer)items[i].token).intValue(), 
container, true);
+                       
removeBlockNum(((MySendableRequestItem)items[i].token).x, container, true);
                }
                if(persistent) {
                        container.store(blockNums);
@@ -310,7 +310,7 @@
                        // Call the fatal callbacks directly.
                        int x = 0;
                        for(int i=0;i<items.length;i++) {
-                               int blockNum = (Integer)items[i].token;
+                               int blockNum = 
((MySendableRequestItem)items[i].token).x;
                                if(fetchExceptions[i].isFatal()) {
                                        
segment.onFatalFailure(fetchExceptions[i], blockNum, this, container, context);
                                } else {
@@ -322,7 +322,7 @@
                        fetchExceptions = newFetchExceptions;
                } else {
                        for(int i=0;i<blockNumbers.length;i++)
-                               blockNumbers[i] = (Integer)items[i].token;
+                               blockNumbers[i] = 
((MySendableRequestItem)items[i].token).x;
                }
                segment.onNonFatalFailure(fetchExceptions, blockNumbers, this, 
container, context);
 
@@ -386,11 +386,11 @@
                if(e.isFatal() && token == null) {
                        segment.fail(e, container, context, false);
                } else if(e.isFatal() || forceFatal) {
-                       segment.onFatalFailure(e, (Integer)token, this, 
container, context);
+                       segment.onFatalFailure(e, 
((MySendableRequestItem)token).x, this, container, context);
                } else {
-                       segment.onNonFatalFailure(e, (Integer)token, this, 
container, context);
+                       segment.onNonFatalFailure(e, 
((MySendableRequestItem)token).x, this, container, context);
                }
-               removeBlockNum((Integer)token, container, false);
+               removeBlockNum(((MySendableRequestItem)token).x, container, 
false);
                if(persistent) {
                        container.deactivate(segment, 1);
                        container.deactivate(parent, 1);
@@ -406,6 +406,7 @@
                        container.activate(blockNums, 1);
                }
                Bucket data = extract(block, token, container, context);
+               int blockNum = ((MySendableRequestItem)token).x;
                if(fromStore) {
                        // Normally when this method is called the block number 
has already
                        // been removed. However if fromStore=true, it won't 
have been, so
@@ -415,7 +416,7 @@
                                for(int i=0;i<blockNums.size();i++) {
                                        Integer x = blockNums.get(i);
                                        // Compare by value as sometimes we 
will do new Integer(num) in requeueing after cooldown code.
-                                       if(x.equals(token)) {
+                                       if(x.intValue() == blockNum) {
                                                blockNums.remove(i);
                                                if(persistent) 
container.delete(x);
                                                if(logMINOR) Logger.minor(this, 
"Removed block "+i+" : "+x);
@@ -428,7 +429,7 @@
                                container.store(blockNums);
                }
                if(!block.isMetadata()) {
-                       onSuccess(data, fromStore, (Integer)token, 
(Integer)token, block, container, context);
+                       onSuccess(data, fromStore, blockNum, blockNum, block, 
container, context);
                } else {
                        onFailure(new 
FetchException(FetchException.INVALID_METADATA, "Metadata where expected 
data"), token, container, context);
                        data.free();
@@ -758,7 +759,7 @@
                        container.activate(this, 1);
                        container.activate(segment, 1);
                }
-               long ret = 
segment.getCooldownWakeup(((Integer)token).intValue());
+               long ret = 
segment.getCooldownWakeup(((MySendableRequestItem)token).x);
                return ret;
        }
 

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

Reply via email to