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 }