Mercurial > jhg
comparison src/org/tmatesoft/hg/repo/HgStatusCollector.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 | 678e326fd27c | 
| children | 150500515714 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 353:0f3687e79f5a | 354:5f9073eabf06 | 
|---|---|
| 27 import java.util.Map; | 27 import java.util.Map; | 
| 28 import java.util.TreeSet; | 28 import java.util.TreeSet; | 
| 29 | 29 | 
| 30 import org.tmatesoft.hg.core.HgBadStateException; | 30 import org.tmatesoft.hg.core.HgBadStateException; | 
| 31 import org.tmatesoft.hg.core.HgDataStreamException; | 31 import org.tmatesoft.hg.core.HgDataStreamException; | 
| 32 import org.tmatesoft.hg.core.HgException; | |
| 33 import org.tmatesoft.hg.core.HgInvalidControlFileException; | |
| 32 import org.tmatesoft.hg.core.Nodeid; | 34 import org.tmatesoft.hg.core.Nodeid; | 
| 33 import org.tmatesoft.hg.internal.IntMap; | 35 import org.tmatesoft.hg.internal.IntMap; | 
| 34 import org.tmatesoft.hg.internal.ManifestRevision; | 36 import org.tmatesoft.hg.internal.ManifestRevision; | 
| 35 import org.tmatesoft.hg.internal.Pool; | 37 import org.tmatesoft.hg.internal.Pool; | 
| 36 import org.tmatesoft.hg.util.Path; | 38 import org.tmatesoft.hg.util.Path; | 
| 266 if (copyOrigin != null) { | 268 if (copyOrigin != null) { | 
| 267 inspector.copied(getPathPool().path(copyOrigin) /*pipe through pool, just in case*/, copyTarget); | 269 inspector.copied(getPathPool().path(copyOrigin) /*pipe through pool, just in case*/, copyTarget); | 
| 268 } else { | 270 } else { | 
| 269 inspector.added(copyTarget); | 271 inspector.added(copyTarget); | 
| 270 } | 272 } | 
| 271 } catch (HgDataStreamException ex) { | 273 } catch (HgException ex) { | 
| 272 ex.printStackTrace(); | 274 ex.printStackTrace(); | 
| 273 // FIXME perhaps, shall record this exception to dedicated mediator and continue | 275 // FIXME perhaps, shall record this exception to dedicated mediator and continue | 
| 274 // for a single file not to be irresolvable obstacle for a status operation | 276 // for a single file not to be irresolvable obstacle for a status operation | 
| 275 } | 277 } | 
| 276 } | 278 } | 
| 286 Record rv = new Record(); | 288 Record rv = new Record(); | 
| 287 walk(rev1, rev2, rv); | 289 walk(rev1, rev2, rv); | 
| 288 return rv; | 290 return rv; | 
| 289 } | 291 } | 
| 290 | 292 | 
| 291 /*package-local*/static Path getOriginIfCopy(HgRepository hgRepo, Path fname, Collection<Path> originals, int originalChangelogRevision) throws HgDataStreamException { | 293 /*package-local*/static Path getOriginIfCopy(HgRepository hgRepo, Path fname, Collection<Path> originals, int originalChangelogRevision) throws HgDataStreamException, HgInvalidControlFileException { | 
| 292 HgDataFile df = hgRepo.getFileNode(fname); | 294 HgDataFile df = hgRepo.getFileNode(fname); | 
| 293 if (!df.exists()) { | 295 if (!df.exists()) { | 
| 294 String msg = String.format("Didn't find file '%s' in the repo. Perhaps, bad storage name conversion?", fname); | 296 String msg = String.format("Didn't find file '%s' in the repo. Perhaps, bad storage name conversion?", fname); | 
| 295 throw new HgDataStreamException(fname, msg, null).setRevisionNumber(originalChangelogRevision); | 297 throw new HgDataStreamException(fname, msg, null).setRevisionNumber(originalChangelogRevision); | 
| 296 } | 298 } | 
