Mercurial > hg4j
comparison src/org/tmatesoft/hg/core/HgCallbackTargetException.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 | c251bbc979cf |
children | 678e326fd27c |
comparison
equal
deleted
inserted
replaced
274:9fb50c04f03c | 275:6d1804fe0ed7 |
---|---|
14 * the terms of a license other than GNU General Public License | 14 * the terms of a license other than GNU General Public License |
15 * contact TMate Software at support@hg4j.com | 15 * contact TMate Software at support@hg4j.com |
16 */ | 16 */ |
17 package org.tmatesoft.hg.core; | 17 package org.tmatesoft.hg.core; |
18 | 18 |
19 import static org.tmatesoft.hg.repo.HgRepository.BAD_REVISION; | 19 import org.tmatesoft.hg.util.Path; |
20 | 20 |
21 import org.tmatesoft.hg.repo.HgRepository; | 21 |
22 import org.tmatesoft.hg.util.Path; | |
23 | 22 |
24 /** | 23 /** |
25 * Checked exception that indicates errors in client code and tries to supply extra information about the context it occured in. | 24 * Checked exception that indicates errors in client code and tries to supply extra information about the context it occured in. |
26 * | 25 * |
27 * @author Artem Tikhomirov | 26 * @author Artem Tikhomirov |
28 * @author TMate Software Ltd. | 27 * @author TMate Software Ltd. |
29 */ | 28 */ |
30 @SuppressWarnings("serial") | 29 @SuppressWarnings("serial") |
31 public class HgCallbackTargetException extends HgException { | 30 public class HgCallbackTargetException extends HgException { |
32 private int revNumber = BAD_REVISION; | |
33 private Nodeid revision; | |
34 private Path filename; | |
35 | |
36 /** | 31 /** |
37 * @param cause can't be <code>null</code> | 32 * @param cause can't be <code>null</code> |
38 */ | 33 */ |
39 public HgCallbackTargetException(Throwable cause) { | 34 public HgCallbackTargetException(Throwable cause) { |
40 super((String) null); | 35 super((String) null); |
47 } else { | 42 } else { |
48 initCause(cause); | 43 initCause(cause); |
49 } | 44 } |
50 } | 45 } |
51 | 46 |
52 /** | |
53 * @return not {@link HgRepository#BAD_REVISION} only when local revision number was supplied at the construction time | |
54 */ | |
55 public int getRevisionNumber() { | |
56 return revNumber; | |
57 } | |
58 | |
59 public HgCallbackTargetException setRevisionNumber(int rev) { | |
60 revNumber = rev; | |
61 return this; | |
62 } | |
63 | |
64 /** | |
65 * @return non-null only when revision was supplied at construction time | |
66 */ | |
67 public Nodeid getRevision() { | |
68 return revision; | |
69 } | |
70 | |
71 public HgCallbackTargetException setRevision(Nodeid r) { | |
72 revision = r; | |
73 return this; | |
74 } | |
75 | |
76 /** | |
77 * @return non-null only if file name was set at construction time | |
78 */ | |
79 public Path getFileName() { | |
80 return filename; | |
81 } | |
82 | |
83 public HgCallbackTargetException setFileName(Path name) { | |
84 filename = name; | |
85 return this; | |
86 } | |
87 | |
88 @SuppressWarnings("unchecked") | 47 @SuppressWarnings("unchecked") |
89 public <T extends Exception> T getTargetException() { | 48 public <T extends Exception> T getTargetException() { |
90 return (T) getCause(); | 49 return (T) getCause(); |
91 } | 50 } |
92 | 51 |
95 * valuable debugging information about what led to the error. | 54 * valuable debugging information about what led to the error. |
96 */ | 55 */ |
97 @Override | 56 @Override |
98 public String getMessage() { | 57 public String getMessage() { |
99 StringBuilder sb = new StringBuilder(); | 58 StringBuilder sb = new StringBuilder(); |
100 if (filename != null) { | 59 appendDetails(sb); |
101 sb.append(filename); | |
102 sb.append(':'); | |
103 sb.append(' '); | |
104 } | |
105 if (revNumber != BAD_REVISION) { | |
106 sb.append(revNumber); | |
107 if (revision != null) { | |
108 sb.append(':'); | |
109 } | |
110 } | |
111 if (revision != null) { | |
112 sb.append(revision.shortNotation()); | |
113 } | |
114 return sb.toString(); | 60 return sb.toString(); |
61 } | |
62 | |
63 @Override | |
64 public HgCallbackTargetException setRevision(Nodeid r) { | |
65 return (HgCallbackTargetException) super.setRevision(r); | |
66 } | |
67 @Override | |
68 public HgCallbackTargetException setRevisionNumber(int rev) { | |
69 return (HgCallbackTargetException) super.setRevisionNumber(rev); | |
70 } | |
71 @Override | |
72 public HgCallbackTargetException setFileName(Path name) { | |
73 return (HgCallbackTargetException) super.setFileName(name); | |
115 } | 74 } |
116 | 75 |
117 /** | 76 /** |
118 * Given the approach high-level handlers throw RuntimeExceptions to indicate errors, and | 77 * Given the approach high-level handlers throw RuntimeExceptions to indicate errors, and |
119 * a need to throw reasonable checked exception from client code, clients may utilize this class | 78 * a need to throw reasonable checked exception from client code, clients may utilize this class |