Mercurial > jhg
comparison 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 |
comparison
equal
deleted
inserted
replaced
617:65c01508f002 | 618:7c0d2ce340b8 |
---|---|
16 */ | 16 */ |
17 package org.tmatesoft.hg.internal; | 17 package org.tmatesoft.hg.internal; |
18 | 18 |
19 import java.io.ByteArrayOutputStream; | 19 import java.io.ByteArrayOutputStream; |
20 | 20 |
21 import org.tmatesoft.hg.core.HgIOException; | |
21 import org.tmatesoft.hg.core.Nodeid; | 22 import org.tmatesoft.hg.core.Nodeid; |
23 import org.tmatesoft.hg.internal.DataSerializer.DataSource; | |
22 | 24 |
23 /** | 25 /** |
24 * Create binary manifest entry ready to write down into 00manifest.i | 26 * Create binary manifest entry ready to write down into 00manifest.i |
25 * <p>Usage: | 27 * <p>Usage: |
26 * <pre> | 28 * <pre> |
34 * </pre> | 36 * </pre> |
35 * | 37 * |
36 * @author Artem Tikhomirov | 38 * @author Artem Tikhomirov |
37 * @author TMate Software Ltd. | 39 * @author TMate Software Ltd. |
38 */ | 40 */ |
39 public class ManifestEntryBuilder { | 41 public class ManifestEntryBuilder implements DataSource { |
40 private ByteArrayOutputStream buffer = new ByteArrayOutputStream(); | 42 private final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); |
43 private final EncodingHelper encHelper; | |
41 | 44 |
45 public ManifestEntryBuilder(EncodingHelper encodingHelper) { | |
46 encHelper = encodingHelper; | |
47 } | |
42 | 48 |
43 public ManifestEntryBuilder reset() { | 49 public ManifestEntryBuilder reset() { |
44 buffer.reset(); | 50 buffer.reset(); |
45 return this; | 51 return this; |
46 } | 52 } |
47 public ManifestEntryBuilder add(String fname, Nodeid revision) { | 53 public ManifestEntryBuilder add(String fname, Nodeid revision) { |
48 byte[] b = fname.getBytes(); | 54 byte[] b = encHelper.toManifest(fname); |
49 buffer.write(b, 0, b.length); | 55 buffer.write(b, 0, b.length); |
50 buffer.write('\0'); | 56 buffer.write('\0'); |
51 b = revision.toString().getBytes(); | 57 b = revision.toString().getBytes(); |
52 buffer.write(b, 0, b.length); | 58 buffer.write(b, 0, b.length); |
53 buffer.write('\n'); | 59 buffer.write('\n'); |
56 | 62 |
57 public byte[] build() { | 63 public byte[] build() { |
58 return buffer.toByteArray(); | 64 return buffer.toByteArray(); |
59 } | 65 } |
60 | 66 |
67 public void serialize(DataSerializer out) throws HgIOException { | |
68 byte[] r = build(); | |
69 out.write(r, 0 , r.length); | |
70 } | |
71 | |
72 public int serializeLength() { | |
73 return buffer.size(); | |
74 } | |
75 | |
61 } | 76 } |