From f288c27e465a91e80b53c4100c0d9b2f2341a9aa Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Mon, 28 Jun 2010 10:44:09 -0700 Subject: [PATCH] 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 --- .../eclipse/jgit/storage/pack/PackWriter.java | 32 +++++++++---------- 1 file 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 08ea9625e..1a636e84a 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 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); }