Mercurial > hg4j
comparison src/org/tmatesoft/hg/core/HgLogCommand.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 | a674b8590362 |
children | 189dc6dc1c3e |
comparison
equal
deleted
inserted
replaced
353:0f3687e79f5a | 354:5f9073eabf06 |
---|---|
32 import org.tmatesoft.hg.internal.IntMap; | 32 import org.tmatesoft.hg.internal.IntMap; |
33 import org.tmatesoft.hg.internal.IntVector; | 33 import org.tmatesoft.hg.internal.IntVector; |
34 import org.tmatesoft.hg.repo.HgChangelog; | 34 import org.tmatesoft.hg.repo.HgChangelog; |
35 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; | 35 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; |
36 import org.tmatesoft.hg.repo.HgDataFile; | 36 import org.tmatesoft.hg.repo.HgDataFile; |
37 import org.tmatesoft.hg.repo.HgInternals; | |
37 import org.tmatesoft.hg.repo.HgRepository; | 38 import org.tmatesoft.hg.repo.HgRepository; |
38 import org.tmatesoft.hg.repo.HgStatusCollector; | 39 import org.tmatesoft.hg.repo.HgStatusCollector; |
39 import org.tmatesoft.hg.util.CancelSupport; | 40 import org.tmatesoft.hg.util.CancelSupport; |
40 import org.tmatesoft.hg.util.CancelledException; | 41 import org.tmatesoft.hg.util.CancelledException; |
41 import org.tmatesoft.hg.util.Pair; | 42 import org.tmatesoft.hg.util.Pair; |
152 /** | 153 /** |
153 * Select specific changeset | 154 * Select specific changeset |
154 * | 155 * |
155 * @param nid changeset revision | 156 * @param nid changeset revision |
156 * @return <code>this</code> for convenience | 157 * @return <code>this</code> for convenience |
157 */ | 158 * @throws HgInvalidRevisionException if supplied nodeid doesn't identify any revision from this revlog |
158 public HgLogCommand changeset(Nodeid nid) { | 159 * @throws HgInvalidControlFileException if access to revlog index/data entry failed |
160 */ | |
161 public HgLogCommand changeset(Nodeid nid) throws HgInvalidControlFileException, HgInvalidRevisionException { | |
159 // XXX perhaps, shall support multiple (...) arguments and extend #execute to handle not only range, but also set of revisions. | 162 // XXX perhaps, shall support multiple (...) arguments and extend #execute to handle not only range, but also set of revisions. |
160 final int csetLocal = repo.getChangelog().getLocalRevision(nid); | 163 final int csetLocal = repo.getChangelog().getLocalRevision(nid); |
161 return range(csetLocal, csetLocal); | 164 return range(csetLocal, csetLocal); |
162 } | 165 } |
163 | 166 |
201 * | 204 * |
202 * @param handler callback to process changesets. | 205 * @param handler callback to process changesets. |
203 * @throws IllegalArgumentException when inspector argument is null | 206 * @throws IllegalArgumentException when inspector argument is null |
204 * @throws ConcurrentModificationException if this log command instance is already running | 207 * @throws ConcurrentModificationException if this log command instance is already running |
205 */ | 208 */ |
206 public void execute(HgChangesetHandler handler) throws HgDataStreamException, HgCallbackTargetException, CancelledException { | 209 public void execute(HgChangesetHandler handler) throws HgDataStreamException, HgInvalidControlFileException, HgCallbackTargetException, CancelledException { |
207 if (handler == null) { | 210 if (handler == null) { |
208 throw new IllegalArgumentException(); | 211 throw new IllegalArgumentException(); |
209 } | 212 } |
210 if (csetTransform != null) { | 213 if (csetTransform != null) { |
211 throw new ConcurrentModificationException(); | 214 throw new ConcurrentModificationException(); |
592 // XXX pipe through pool | 595 // XXX pipe through pool |
593 HgChangeset cs = cachedChangesets.get(changelogRevisionNumber); | 596 HgChangeset cs = cachedChangesets.get(changelogRevisionNumber); |
594 if (cs != null) { | 597 if (cs != null) { |
595 return cs.getNodeid(); | 598 return cs.getNodeid(); |
596 } else { | 599 } else { |
597 return repo.getChangelog().getRevision(changelogRevisionNumber); | 600 try { |
601 return repo.getChangelog().getRevision(changelogRevisionNumber); | |
602 } catch (HgException ex) { | |
603 HgInternals.getContext(repo).getLog().error(getClass(), ex, null); | |
604 // FIXME propagate, perhaps? | |
605 return Nodeid.NULL; // FIXME this is quick-n-dirty hack to move forward with introducing exceptions | |
606 } | |
598 } | 607 } |
599 } | 608 } |
600 } | 609 } |
601 } | 610 } |