Mercurial > hg4j
comparison src/org/tmatesoft/hg/internal/KeywordFilter.java @ 354:5f9073eabf06
Propagate errors with exceptions up to a end client
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 01 Dec 2011 05:21:40 +0100 |
parents | a37ce7145c3f |
children | 2fadf8695f8a |
comparison
equal
deleted
inserted
replaced
353:0f3687e79f5a | 354:5f9073eabf06 |
---|---|
16 */ | 16 */ |
17 package org.tmatesoft.hg.internal; | 17 package org.tmatesoft.hg.internal; |
18 | 18 |
19 import java.nio.ByteBuffer; | 19 import java.nio.ByteBuffer; |
20 import java.util.ArrayList; | 20 import java.util.ArrayList; |
21 import java.util.Date; | |
21 import java.util.TreeMap; | 22 import java.util.TreeMap; |
22 | 23 |
24 import org.tmatesoft.hg.core.HgException; | |
25 import org.tmatesoft.hg.core.HgInvalidControlFileException; | |
26 import org.tmatesoft.hg.core.Nodeid; | |
23 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; | 27 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; |
28 import org.tmatesoft.hg.repo.HgInternals; | |
24 import org.tmatesoft.hg.repo.HgRepository; | 29 import org.tmatesoft.hg.repo.HgRepository; |
25 import org.tmatesoft.hg.util.Pair; | 30 import org.tmatesoft.hg.util.Pair; |
26 import org.tmatesoft.hg.util.Path; | 31 import org.tmatesoft.hg.util.Path; |
27 | 32 |
28 /** | 33 /** |
251 private String identityString() { | 256 private String identityString() { |
252 return String.format("%s,v %s %s %s", path, revision(), date(), username()); | 257 return String.format("%s,v %s %s %s", path, revision(), date(), username()); |
253 } | 258 } |
254 | 259 |
255 private String revision() { | 260 private String revision() { |
256 // FIXME add cset's nodeid into Changeset class | 261 try { |
257 int csetRev = repo.getFileNode(path).getChangesetLocalRevision(HgRepository.TIP); | 262 // FIXME add cset's nodeid into Changeset class |
258 return repo.getChangelog().getRevision(csetRev).shortNotation(); | 263 int csetRev = repo.getFileNode(path).getChangesetLocalRevision(HgRepository.TIP); |
264 return repo.getChangelog().getRevision(csetRev).shortNotation(); | |
265 } catch (HgException ex) { | |
266 HgInternals.getContext(repo).getLog().error(getClass(), ex, null); | |
267 return Nodeid.NULL.shortNotation(); // XXX perhaps, might return anything better? Not sure how hg approaches this. | |
268 } | |
259 } | 269 } |
260 | 270 |
261 private String username() { | 271 private String username() { |
262 return getChangeset().user(); | 272 try { |
273 return getChangeset().user(); | |
274 } catch (HgException ex) { | |
275 HgInternals.getContext(repo).getLog().error(getClass(), ex, null); | |
276 return ""; | |
277 } | |
263 } | 278 } |
264 | 279 |
265 private String date() { | 280 private String date() { |
266 return String.format("%tY/%<tm/%<td %<tH:%<tM:%<tS", getChangeset().date()); | 281 Date d; |
267 } | 282 try { |
268 | 283 d = getChangeset().date(); |
269 private RawChangeset getChangeset() { | 284 } catch (HgException ex) { |
285 HgInternals.getContext(repo).getLog().error(getClass(), ex, null); | |
286 d = new Date(0l); | |
287 } | |
288 return String.format("%tY/%<tm/%<td %<tH:%<tM:%<tS", d); | |
289 } | |
290 | |
291 private RawChangeset getChangeset() throws HgInvalidControlFileException { | |
270 if (latestFileCset == null) { | 292 if (latestFileCset == null) { |
271 // XXX consider use of ChangelogHelper | 293 // XXX consider use of ChangelogHelper |
272 int csetRev = repo.getFileNode(path).getChangesetLocalRevision(HgRepository.TIP); | 294 int csetRev = repo.getFileNode(path).getChangesetLocalRevision(HgRepository.TIP); |
273 latestFileCset = repo.getChangelog().range(csetRev, csetRev).get(0); | 295 latestFileCset = repo.getChangelog().range(csetRev, csetRev).get(0); |
274 } | 296 } |