Remove System.out.println from RevWalkFilterTest
[egit/chris.git] / org.spearce.jgit / src / org / spearce / jgit / lib / PackIndexWriterV2.java
blobda29d4d185e6871b93fb5678aa39bea019797d46
1 /*
2 * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
4 * All rights reserved.
6 * Redistribution and use in source and binary forms, with or
7 * without modification, are permitted provided that the following
8 * conditions are met:
10 * - Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * - Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
18 * - Neither the name of the Git Development Community nor the
19 * names of its contributors may be used to endorse or promote
20 * products derived from this software without specific prior
21 * written permission.
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
24 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
25 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
28 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
30 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
33 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
35 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 package org.spearce.jgit.lib;
40 import java.io.IOException;
41 import java.io.OutputStream;
43 import org.spearce.jgit.transport.PackedObjectInfo;
44 import org.spearce.jgit.util.NB;
46 /**
47 * Creates the version 2 pack table of contents files.
49 * @see PackIndexWriter
50 * @see PackIndexV2
52 class PackIndexWriterV2 extends PackIndexWriter {
53 PackIndexWriterV2(final OutputStream dst) {
54 super(dst);
57 @Override
58 protected void writeImpl() throws IOException {
59 writeTOC(2);
60 writeFanOutTable();
61 writeObjectNames();
62 writeCRCs();
63 writeOffset32();
64 writeOffset64();
65 writeChecksumFooter();
68 private void writeObjectNames() throws IOException {
69 for (final PackedObjectInfo oe : entries)
70 oe.copyRawTo(out);
73 private void writeCRCs() throws IOException {
74 for (final PackedObjectInfo oe : entries) {
75 NB.encodeInt32(tmp, 0, oe.getCRC());
76 out.write(tmp, 0, 4);
80 private void writeOffset32() throws IOException {
81 int o64 = 0;
82 for (final PackedObjectInfo oe : entries) {
83 final long o = oe.getOffset();
84 if (o < Integer.MAX_VALUE)
85 NB.encodeInt32(tmp, 0, (int) o);
86 else
87 NB.encodeInt32(tmp, 0, (1 << 31) | o64++);
88 out.write(tmp, 0, 4);
92 private void writeOffset64() throws IOException {
93 for (final PackedObjectInfo oe : entries) {
94 final long o = oe.getOffset();
95 if (o > Integer.MAX_VALUE) {
96 NB.encodeInt64(tmp, 0, o);
97 out.write(tmp, 0, 8);