Mercurial > hg4j
comparison src/org/tmatesoft/hg/core/HgStatusCommand.java @ 427:31a89587eb04
FIXMEs: consistent names, throws for commands and their handlers. Use of checked exceptions in hi-level api
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 29 Mar 2012 17:14:35 +0200 |
parents | 6437d261048a |
children | cd658b24a620 |
comparison
equal
deleted
inserted
replaced
426:063b0663495a | 427:31a89587eb04 |
---|---|
23 import java.io.IOException; | 23 import java.io.IOException; |
24 import java.util.ConcurrentModificationException; | 24 import java.util.ConcurrentModificationException; |
25 | 25 |
26 import org.tmatesoft.hg.internal.ChangelogHelper; | 26 import org.tmatesoft.hg.internal.ChangelogHelper; |
27 import org.tmatesoft.hg.repo.HgRepository; | 27 import org.tmatesoft.hg.repo.HgRepository; |
28 import org.tmatesoft.hg.repo.HgRuntimeException; | |
28 import org.tmatesoft.hg.repo.HgStatusCollector; | 29 import org.tmatesoft.hg.repo.HgStatusCollector; |
29 import org.tmatesoft.hg.repo.HgStatusInspector; | 30 import org.tmatesoft.hg.repo.HgStatusInspector; |
30 import org.tmatesoft.hg.repo.HgWorkingCopyStatusCollector; | 31 import org.tmatesoft.hg.repo.HgWorkingCopyStatusCollector; |
31 import org.tmatesoft.hg.util.CancelSupport; | 32 import org.tmatesoft.hg.util.CancelSupport; |
32 import org.tmatesoft.hg.util.CancelledException; | 33 import org.tmatesoft.hg.util.CancelledException; |
160 | 161 |
161 /** | 162 /** |
162 * Perform status operation according to parameters set. | 163 * Perform status operation according to parameters set. |
163 * | 164 * |
164 * @param statusHandler callback to get status information | 165 * @param statusHandler callback to get status information |
165 * @throws HgCallbackTargetException wrapper for any exception user callback code may produce | 166 * @throws HgCallbackTargetException propagated exception from the handler |
167 * @throws HgException subclass thereof to indicate specific issue with the command arguments or repository state | |
166 * @throws CancelledException if execution of the command was cancelled | 168 * @throws CancelledException if execution of the command was cancelled |
167 * @throws IOException FIXME EXCEPTIONS WTF it's doing here if there are (further unspecified) errors while walking working copy | 169 * @throws IOException FIXME EXCEPTIONS WTF it's doing here if there are (further unspecified) errors while walking working copy |
168 * @throws IllegalArgumentException if handler is <code>null</code> | 170 * @throws IllegalArgumentException if handler is <code>null</code> |
169 * @throws ConcurrentModificationException if this command already runs (i.e. being used from another thread) | 171 * @throws ConcurrentModificationException if this command already runs (i.e. being used from another thread) |
170 */ | 172 */ |
171 public void execute(HgStatusHandler statusHandler) throws HgCallbackTargetException, CancelledException, HgException, IOException { | 173 public void execute(HgStatusHandler statusHandler) throws HgCallbackTargetException, HgException, CancelledException, IOException { |
172 if (statusHandler == null) { | 174 if (statusHandler == null) { |
173 throw new IllegalArgumentException(); | 175 throw new IllegalArgumentException(); |
174 } | 176 } |
175 if (mediator.busy()) { | 177 if (mediator.busy()) { |
176 throw new ConcurrentModificationException(); | 178 throw new ConcurrentModificationException(); |
195 } | 197 } |
196 } catch (CancelledException ex) { | 198 } catch (CancelledException ex) { |
197 // this is our exception, thrown from Mediator. | 199 // this is our exception, thrown from Mediator. |
198 // next check shall throw original cause of the stop - either HgCallbackTargetException or original CancelledException | 200 // next check shall throw original cause of the stop - either HgCallbackTargetException or original CancelledException |
199 mediator.checkFailure(); | 201 mediator.checkFailure(); |
202 } catch (HgRuntimeException ex) { | |
203 throw new HgLibraryFailureException(ex); | |
200 } finally { | 204 } finally { |
201 mediator.done(); | 205 mediator.done(); |
202 } | 206 } |
203 } | 207 } |
204 | 208 |
262 } | 266 } |
263 } | 267 } |
264 | 268 |
265 private void dispatch(HgStatus s) { | 269 private void dispatch(HgStatus s) { |
266 try { | 270 try { |
267 handler.handleStatus(s); | 271 handler.status(s); |
268 handlerCancelSupport.checkCancelled(); | 272 handlerCancelSupport.checkCancelled(); |
269 } catch (HgCallbackTargetException ex) { | 273 } catch (HgCallbackTargetException ex) { |
270 failure = ex; | 274 failure = ex; |
271 } catch (CancelledException ex) { | 275 } catch (CancelledException ex) { |
272 cancellation = ex; | 276 cancellation = ex; |
315 } | 319 } |
316 } | 320 } |
317 | 321 |
318 public void invalid(Path fname, Exception err) { | 322 public void invalid(Path fname, Exception err) { |
319 try { | 323 try { |
320 handler.handleError(fname, new Status(Status.Kind.ERROR, "Failed to get file status", err)); | 324 handler.error(fname, new Status(Status.Kind.ERROR, "Failed to get file status", err)); |
321 handlerCancelSupport.checkCancelled(); | 325 handlerCancelSupport.checkCancelled(); |
322 } catch (HgCallbackTargetException ex) { | 326 } catch (HgCallbackTargetException ex) { |
323 failure = ex; | 327 failure = ex; |
324 } catch (CancelledException ex) { | 328 } catch (CancelledException ex) { |
325 cancellation = ex; | 329 cancellation = ex; |