Mercurial > hg4j
diff src/org/tmatesoft/hg/repo/HgDataFile.java @ 215:41a778e3fd31
Issue 5: Facilities for progress and cancellation. More specific exceptions. Exceptions from callbacks as RuntimeException
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 17 May 2011 00:56:54 +0200 |
parents | a5198b6487dc |
children | 1d389c0cb0a5 |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/repo/HgDataFile.java Mon May 16 21:10:36 2011 +0200 +++ b/src/org/tmatesoft/hg/repo/HgDataFile.java Tue May 17 00:56:54 2011 +0200 @@ -136,7 +136,7 @@ insp = new ContentPipe(sink, metadata.dataOffset(revision)); } else { // do not know if there's metadata - insp = new MetadataContentPipe(sink, metadata); + insp = new MetadataContentPipe(sink, metadata, getPath()); } insp.checkCancelled(); super.content.iterate(revision, revision, true, insp); @@ -146,7 +146,7 @@ throw ex; } catch (HgException ex) { // shall not happen, unless we changed ContentPipe or its subclass - throw new HgDataStreamException(ex.getClass().getName(), ex); + throw new HgDataStreamException(getPath(), ex.getClass().getName(), ex); } } @@ -210,7 +210,7 @@ } catch (CancelledException ex) { // it's ok, we did that } catch (Exception ex) { - throw new HgDataStreamException("Can't initialize metadata", ex); + throw new HgDataStreamException(getPath(), "Can't initialize metadata", ex); } } if (!metadata.known(0)) { @@ -319,10 +319,12 @@ private static class MetadataContentPipe extends ContentPipe { private final Metadata metadata; + private final Path fname; // need this only for error reporting - public MetadataContentPipe(ByteChannel sink, Metadata _metadata) { + public MetadataContentPipe(ByteChannel sink, Metadata _metadata, Path file) { super(sink, 0); metadata = _metadata; + fname = file; } @Override @@ -382,7 +384,7 @@ _metadata.trimToSize(); metadata.add(revisionNumber, lastEntryStart, _metadata); if (da.isEmpty() || !byteOne) { - throw new HgDataStreamException(String.format("Metadata for revision %d is not closed properly", revisionNumber), null); + throw new HgDataStreamException(fname, String.format("Metadata for revision %d is not closed properly", revisionNumber), null); } // da is in prepared state (i.e. we consumed all bytes up to metadata end). }