Mercurial > jhg
diff src/org/tmatesoft/hg/core/HgException.java @ 275:6d1804fe0ed7
Issue 10: Report file content length with respect of metadata. Respect dirstate parents for WC's status. Exceptions to keep useful attributes of the location
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 25 Aug 2011 21:35:03 +0200 |
parents | 1a7a9a20e1f9 |
children | 678e326fd27c |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/core/HgException.java Thu Aug 25 03:57:39 2011 +0200 +++ b/src/org/tmatesoft/hg/core/HgException.java Thu Aug 25 21:35:03 2011 +0200 @@ -16,6 +16,11 @@ */ package org.tmatesoft.hg.core; +import static org.tmatesoft.hg.repo.HgRepository.BAD_REVISION; + +import org.tmatesoft.hg.repo.HgRepository; +import org.tmatesoft.hg.util.Path; + /** * Root class for all hg4j exceptions. * @@ -25,6 +30,10 @@ @SuppressWarnings("serial") public class HgException extends Exception { + protected int revNumber = BAD_REVISION; + protected Nodeid revision; + protected Path filename; + public HgException(String reason) { super(reason); } @@ -37,6 +46,59 @@ super(cause); } + /** + * @return not {@link HgRepository#BAD_REVISION} only when local revision number was supplied at the construction time + */ + public int getRevisionNumber() { + return revNumber; + } + + public HgException setRevisionNumber(int rev) { + revNumber = rev; + return this; + } + + /** + * @return non-null only when revision was supplied at construction time + */ + public Nodeid getRevision() { + return revision; + } + + public HgException setRevision(Nodeid r) { + revision = r; + return this; + } + + /** + * @return non-null only if file name was set at construction time + */ + public Path getFileName() { + return filename; + } + + public HgException setFileName(Path name) { + filename = name; + return this; + } + + protected void appendDetails(StringBuilder sb) { + if (filename != null) { + sb.append(filename); + sb.append(':'); + sb.append(' '); + } + if (revNumber != BAD_REVISION) { + sb.append(revNumber); + if (revision != null) { + sb.append(':'); + } + } + if (revision != null) { + sb.append(revision.shortNotation()); + } + } + // /* XXX CONSIDER capability to pass extra information about errors */ // public static class Status { // public Status(String message, Throwable cause, int errorCode, Object extraData) {