Mercurial > hg4j
comparison src/org/tmatesoft/hg/internal/RevlogStreamWriter.java @ 628:6526d8adbc0f
Explicit HgRuntimeException to facilitate easy switch from runtime to checked exceptions
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Wed, 22 May 2013 15:52:31 +0200 |
parents | 7c0d2ce340b8 |
children | 14dac192aa26 |
comparison
equal
deleted
inserted
replaced
627:5153eb73b18d | 628:6526d8adbc0f |
---|---|
27 import org.tmatesoft.hg.core.SessionContext; | 27 import org.tmatesoft.hg.core.SessionContext; |
28 import org.tmatesoft.hg.internal.DataSerializer.ByteArrayDataSerializer; | 28 import org.tmatesoft.hg.internal.DataSerializer.ByteArrayDataSerializer; |
29 import org.tmatesoft.hg.internal.DataSerializer.ByteArrayDataSource; | 29 import org.tmatesoft.hg.internal.DataSerializer.ByteArrayDataSource; |
30 import org.tmatesoft.hg.internal.DataSerializer.DataSource; | 30 import org.tmatesoft.hg.internal.DataSerializer.DataSource; |
31 import org.tmatesoft.hg.repo.HgInvalidControlFileException; | 31 import org.tmatesoft.hg.repo.HgInvalidControlFileException; |
32 import org.tmatesoft.hg.repo.HgInvalidRevisionException; | |
32 import org.tmatesoft.hg.repo.HgInvalidStateException; | 33 import org.tmatesoft.hg.repo.HgInvalidStateException; |
34 import org.tmatesoft.hg.repo.HgRuntimeException; | |
33 | 35 |
34 /** | 36 /** |
35 * | 37 * |
36 * TODO [post-1.1] separate operation to check if index is too big and split into index+data | 38 * TODO [post-1.1] separate operation to check if index is too big and split into index+data |
37 * | 39 * |
59 transaction = tr; | 61 transaction = tr; |
60 } | 62 } |
61 | 63 |
62 /** | 64 /** |
63 * @return nodeid of added revision | 65 * @return nodeid of added revision |
66 * @throws HgRuntimeException | |
64 */ | 67 */ |
65 public Nodeid addRevision(DataSource content, int linkRevision, int p1, int p2) throws HgIOException { | 68 public Nodeid addRevision(DataSource content, int linkRevision, int p1, int p2) throws HgIOException, HgRuntimeException { |
66 lastEntryRevision = Nodeid.NULL; | 69 lastEntryRevision = Nodeid.NULL; |
67 int revCount = revlogStream.revisionCount(); | 70 int revCount = revlogStream.revisionCount(); |
68 lastEntryIndex = revCount == 0 ? NO_REVISION : revCount - 1; | 71 lastEntryIndex = revCount == 0 ? NO_REVISION : revCount - 1; |
69 populateLastEntry(); | 72 populateLastEntry(); |
70 // | 73 // |
136 } | 139 } |
137 } | 140 } |
138 return lastEntryRevision; | 141 return lastEntryRevision; |
139 } | 142 } |
140 | 143 |
141 private byte[] toByteArray(DataSource content) throws HgIOException { | 144 private byte[] toByteArray(DataSource content) throws HgIOException, HgRuntimeException { |
142 ByteArrayDataSerializer ba = new ByteArrayDataSerializer(); | 145 ByteArrayDataSerializer ba = new ByteArrayDataSerializer(); |
143 content.serialize(ba); | 146 content.serialize(ba); |
144 return ba.toByteArray(); | 147 return ba.toByteArray(); |
145 } | 148 } |
146 | 149 |
147 private Nodeid revision(int revisionIndex) { | 150 private Nodeid revision(int revisionIndex) throws HgInvalidControlFileException, HgInvalidRevisionException { |
148 if (revisionIndex == NO_REVISION) { | 151 if (revisionIndex == NO_REVISION) { |
149 return Nodeid.NULL; | 152 return Nodeid.NULL; |
150 } | 153 } |
151 Nodeid n = revisionCache.get(revisionIndex); | 154 Nodeid n = revisionCache.get(revisionIndex); |
152 if (n == null) { | 155 if (n == null) { |
154 revisionCache.put(revisionIndex, n); | 157 revisionCache.put(revisionIndex, n); |
155 } | 158 } |
156 return n; | 159 return n; |
157 } | 160 } |
158 | 161 |
159 private void populateLastEntry() throws HgInvalidControlFileException { | 162 private void populateLastEntry() throws HgRuntimeException { |
160 if (lastEntryContent != null) { | 163 if (lastEntryContent != null) { |
161 return; | 164 return; |
162 } | 165 } |
163 if (lastEntryIndex != NO_REVISION) { | 166 if (lastEntryIndex != NO_REVISION) { |
164 assert lastEntryIndex >= 0; | 167 assert lastEntryIndex >= 0; |