Mercurial > jhg
diff src/org/tmatesoft/hg/internal/ManifestEntryBuilder.java @ 618:7c0d2ce340b8
Refactor approach how content finds it way down to a commit revision
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 16 May 2013 19:46:13 +0200 |
parents | dd4f6311af52 |
children |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/internal/ManifestEntryBuilder.java Wed May 15 20:10:09 2013 +0200 +++ b/src/org/tmatesoft/hg/internal/ManifestEntryBuilder.java Thu May 16 19:46:13 2013 +0200 @@ -18,7 +18,9 @@ import java.io.ByteArrayOutputStream; +import org.tmatesoft.hg.core.HgIOException; import org.tmatesoft.hg.core.Nodeid; +import org.tmatesoft.hg.internal.DataSerializer.DataSource; /** * Create binary manifest entry ready to write down into 00manifest.i @@ -36,16 +38,20 @@ * @author Artem Tikhomirov * @author TMate Software Ltd. */ -public class ManifestEntryBuilder { - private ByteArrayOutputStream buffer = new ByteArrayOutputStream(); +public class ManifestEntryBuilder implements DataSource { + private final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + private final EncodingHelper encHelper; + public ManifestEntryBuilder(EncodingHelper encodingHelper) { + encHelper = encodingHelper; + } public ManifestEntryBuilder reset() { buffer.reset(); return this; } public ManifestEntryBuilder add(String fname, Nodeid revision) { - byte[] b = fname.getBytes(); + byte[] b = encHelper.toManifest(fname); buffer.write(b, 0, b.length); buffer.write('\0'); b = revision.toString().getBytes(); @@ -58,4 +64,13 @@ return buffer.toByteArray(); } + public void serialize(DataSerializer out) throws HgIOException { + byte[] r = build(); + out.write(r, 0 , r.length); + } + + public int serializeLength() { + return buffer.size(); + } + }