Author: toad
Date: 2009-01-27 14:50:31 +0000 (Tue, 27 Jan 2009)
New Revision: 25314
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
Log:
Fix NPE: referring to variables on the SplitFileInserter inside its constructor
Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
2009-01-27 14:48:45 UTC (rev 25313)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileInserter.java
2009-01-27 14:50:31 UTC (rev 25314)
@@ -129,7 +129,7 @@
}
// Create segments
- segments = splitIntoSegments(segmentSize, dataBuckets,
context.mainExecutor, container, context);
+ segments = splitIntoSegments(segmentSize, dataBuckets,
context.mainExecutor, container, context, persistent, put);
if(persistent) {
// Deactivate all buckets, and let dataBuckets be GC'ed
for(int i=0;i<dataBuckets.length;i++) {
@@ -242,7 +242,7 @@
SimpleFieldSet segment = segFS.subset(index);
segFS.removeSubset(index);
if(segment == null) throw new ResumeException("No
segment "+i);
- segments[i] = new SplitFileInserterSegment(this,
segment, splitfileAlgorithm, ctx, getCHKOnly, i, context, container);
+ segments[i] = new SplitFileInserterSegment(this,
persistent, parent, segment, splitfileAlgorithm, ctx, getCHKOnly, i, context,
container);
dataBlocks += segments[i].countDataBlocks();
checkBlocks += segments[i].countCheckBlocks();
}
@@ -254,7 +254,7 @@
/**
* Group the blocks into segments.
*/
- private SplitFileInserterSegment[] splitIntoSegments(int segmentSize,
Bucket[] origDataBlocks, Executor executor, ObjectContainer container,
ClientContext context) {
+ private SplitFileInserterSegment[] splitIntoSegments(int segmentSize,
Bucket[] origDataBlocks, Executor executor, ObjectContainer container,
ClientContext context, boolean persistent, BaseClientPutter putter) {
int dataBlocks = origDataBlocks.length;
Vector segs = new Vector();
@@ -262,7 +262,7 @@
// First split the data up
if((dataBlocks < segmentSize) || (segmentSize == -1)) {
// Single segment
- SplitFileInserterSegment onlySeg = new
SplitFileInserterSegment(this, splitfileAlgorithm,
FECCodec.getCheckBlocks(splitfileAlgorithm, origDataBlocks.length),
origDataBlocks, ctx, getCHKOnly, 0, container);
+ SplitFileInserterSegment onlySeg = new
SplitFileInserterSegment(this, persistent, putter, splitfileAlgorithm,
FECCodec.getCheckBlocks(splitfileAlgorithm, origDataBlocks.length),
origDataBlocks, ctx, getCHKOnly, 0, container);
segs.add(onlySeg);
} else {
int j = 0;
@@ -274,7 +274,7 @@
j = i;
for(int x=0;x<seg.length;x++)
if(seg[x] == null) throw new
NullPointerException("In splitIntoSegs: "+x+" is null of "+seg.length+" of
"+segNo);
- SplitFileInserterSegment s = new
SplitFileInserterSegment(this, splitfileAlgorithm,
FECCodec.getCheckBlocks(splitfileAlgorithm, seg.length), seg, ctx, getCHKOnly,
segNo, container);
+ SplitFileInserterSegment s = new
SplitFileInserterSegment(this, persistent, putter, splitfileAlgorithm,
FECCodec.getCheckBlocks(splitfileAlgorithm, seg.length), seg, ctx, getCHKOnly,
segNo, container);
segs.add(s);
if(i == dataBlocks) break;
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2009-01-27 14:48:45 UTC (rev 25313)
+++
branches/db4o/freenet/src/freenet/client/async/SplitFileInserterSegment.java
2009-01-27 14:50:31 UTC (rev 25314)
@@ -78,14 +78,14 @@
return hashCode;
}
- public SplitFileInserterSegment(SplitFileInserter parent,
+ public SplitFileInserterSegment(SplitFileInserter parent, boolean
persistent, BaseClientPutter putter,
short splitfileAlgo, int checkBlockCount, Bucket[]
origDataBlocks,
InsertContext blockInsertContext, boolean getCHKOnly,
int segNo, ObjectContainer container) {
logMINOR = Logger.shouldLog(Logger.MINOR, this);
hashCode = super.hashCode();
this.parent = parent;
this.getCHKOnly = getCHKOnly;
- this.persistent = parent.persistent;
+ this.persistent = persistent;
this.errors = new FailureCodeTracker(true);
this.blockInsertContext = blockInsertContext;
this.splitfileAlgo = splitfileAlgo;
@@ -95,8 +95,8 @@
dataURIs = new ClientCHK[origDataBlocks.length];
dataBlockInserters = new SingleBlockInserter[dataBlocks.length];
checkBlockInserters = new
SingleBlockInserter[checkBlocks.length];
- parent.parent.addBlocks(dataURIs.length + checkURIs.length,
container);
- parent.parent.addMustSucceedBlocks(dataURIs.length +
checkURIs.length, container);
+ putter.addBlocks(dataURIs.length + checkURIs.length, container);
+ putter.addMustSucceedBlocks(dataURIs.length + checkURIs.length,
container);
this.segNo = segNo;
}
@@ -105,14 +105,14 @@
*
* @throws ResumeException
*/
- public SplitFileInserterSegment(SplitFileInserter parent,
+ public SplitFileInserterSegment(SplitFileInserter parent, boolean
persistent, BaseClientPutter putter,
SimpleFieldSet fs, short splitfileAlgorithm,
InsertContext ctx,
boolean getCHKOnly, int segNo, ClientContext context,
ObjectContainer container) throws ResumeException {
hashCode = super.hashCode();
this.parent = parent;
this.splitfileAlgo = splitfileAlgorithm;
this.getCHKOnly = getCHKOnly;
- this.persistent = parent.persistent;
+ this.persistent = persistent;
this.blockInsertContext = ctx;
this.segNo = segNo;
if (!"SplitFileInserterSegment".equals(fs.get("Type")))
@@ -323,8 +323,8 @@
throw new ResumeException("Missing data
block " + i
+ " and need to
reconstruct check blocks");
}
- parent.parent.addBlocks(dataURIs.length + checkURIs.length,
container);
- parent.parent.addMustSucceedBlocks(dataURIs.length +
checkURIs.length, container);
+ putter.addBlocks(dataURIs.length + checkURIs.length, container);
+ putter.addMustSucceedBlocks(dataURIs.length + checkURIs.length,
container);
}
public synchronized SimpleFieldSet getProgressFieldset() {
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs