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; |
