summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2010-06-28 10:44:09 -0700
committerShawn O. Pearce <spearce@spearce.org>2010-06-28 11:47:28 -0700
commitf288c27e465a91e80b53c4100c0d9b2f2341a9aa (patch)
treee9de98ef3f5efdc20c6de983770a6fad68514aa0
parent1ad2feb7b3d48d8bfedfdd03ee6ca4f599041476 (diff)
downloadjgit-f288c27e465a91e80b53c4100c0d9b2f2341a9aa.tar.gz
jgit-f288c27e465a91e80b53c4100c0d9b2f2341a9aa.zip
Pass the PackOutputStream down the call stack
Rather than storing this in an instance member, pass it down the calling stack. Its cleaner, we don't have to poke the stream as a temporary field, and then unset it. Change-Id: I0fd323371bc12edb10f0493bf11885d7057aeb13 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java32
1 files changed, 16 insertions, 16 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
index 08ea9625ec..1a636e84a8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
@@ -183,8 +183,6 @@ public class PackWriter {
private final Repository db;
- private PackOutputStream out;
-
private final Deflater deflater;
private ProgressMonitor initMonitor;
@@ -613,14 +611,14 @@ public class PackWriter {
if ((reuseDeltas || reuseObjects) && reuseSupport != null)
searchForReuse();
- out = new PackOutputStream(packStream, isDeltaBaseAsOffset());
+ final PackOutputStream out = new PackOutputStream(packStream,
+ isDeltaBaseAsOffset());
writeMonitor.beginTask(WRITING_OBJECTS_PROGRESS, getObjectsNumber());
out.writeFileHeader(PACK_VERSION_GENERATED, getObjectsNumber());
- writeObjects();
- writeChecksum();
+ writeObjects(out);
+ writeChecksum(out);
- out = null;
reader.release();
writeMonitor.endTask();
}
@@ -644,25 +642,26 @@ public class PackWriter {
initMonitor.endTask();
}
- private void writeObjects() throws IOException {
+ private void writeObjects(PackOutputStream out) throws IOException {
for (List<ObjectToPack> list : objectsLists) {
for (ObjectToPack otp : list) {
if (writeMonitor.isCancelled())
throw new IOException(
JGitText.get().packingCancelledDuringObjectsWriting);
if (!otp.isWritten())
- writeObject(otp);
+ writeObject(out, otp);
}
}
}
- private void writeObject(final ObjectToPack otp) throws IOException {
+ private void writeObject(PackOutputStream out, final ObjectToPack otp)
+ throws IOException {
if (otp.isWritten())
return; // We shouldn't be here.
otp.markWantWrite();
if (otp.isDeltaRepresentation())
- writeBaseFirst(otp);
+ writeBaseFirst(out, otp);
out.resetCRC32();
otp.setOffset(out.length());
@@ -690,12 +689,13 @@ public class PackWriter {
// If we reached here, reuse wasn't possible.
//
- writeWholeObjectDeflate(otp);
+ writeWholeObjectDeflate(out, otp);
otp.setCRC(out.getCRC32());
writeMonitor.update(1);
}
- private void writeBaseFirst(final ObjectToPack otp) throws IOException {
+ private void writeBaseFirst(PackOutputStream out, final ObjectToPack otp)
+ throws IOException {
ObjectToPack baseInPack = otp.getDeltaBase();
if (baseInPack != null) {
if (!baseInPack.isWritten()) {
@@ -708,7 +708,7 @@ public class PackWriter {
redoSearchForReuse(otp);
reuseDeltas = true;
} else {
- writeObject(baseInPack);
+ writeObject(out, baseInPack);
}
}
} else if (!thin) {
@@ -728,8 +728,8 @@ public class PackWriter {
reuseSupport.selectObjectRepresentation(this, otp);
}
- private void writeWholeObjectDeflate(final ObjectToPack otp)
- throws IOException {
+ private void writeWholeObjectDeflate(PackOutputStream out,
+ final ObjectToPack otp) throws IOException {
final ObjectLoader loader = reader.openObject(otp, otp.getType());
final byte[] data = loader.getCachedBytes();
out.writeHeader(otp, data.length);
@@ -745,7 +745,7 @@ public class PackWriter {
} while (!deflater.finished());
}
- private void writeChecksum() throws IOException {
+ private void writeChecksum(PackOutputStream out) throws IOException {
packcsum = out.getDigest();
out.write(packcsum);
}