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 }