Mercurial > hg4j
comparison src/org/tmatesoft/hg/core/HgException.java @ 403:2747b0723867
FIXMEs: work on exceptions and javadoc
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Mon, 05 Mar 2012 14:50:51 +0100 |
parents | 0ae53c32ecef |
children | 6437d261048a |
comparison
equal
deleted
inserted
replaced
402:1fcc7f7b6d65 | 403:2747b0723867 |
---|---|
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.internal.ExceptionInfo; |
20 | |
21 import org.tmatesoft.hg.repo.HgRepository; | 20 import org.tmatesoft.hg.repo.HgRepository; |
22 import org.tmatesoft.hg.util.Path; | 21 import org.tmatesoft.hg.util.Path; |
23 | 22 |
24 /** | 23 /** |
25 * Root class for all hg4j exceptions. | 24 * Root class for all hg4j exceptions. |
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 HgException extends Exception { | 30 public class HgException extends Exception { |
32 | 31 |
33 protected int revNumber = BAD_REVISION; | 32 protected final ExceptionInfo<HgException> extras = new ExceptionInfo<HgException>(this); |
34 protected Nodeid revision; | |
35 protected Path filename; | |
36 | 33 |
37 public HgException(String reason) { | 34 public HgException(String reason) { |
38 super(reason); | 35 super(reason); |
39 } | 36 } |
40 | 37 |
48 | 45 |
49 /** | 46 /** |
50 * @return not {@link HgRepository#BAD_REVISION} only when revision index was supplied at the construction time | 47 * @return not {@link HgRepository#BAD_REVISION} only when revision index was supplied at the construction time |
51 */ | 48 */ |
52 public int getRevisionIndex() { | 49 public int getRevisionIndex() { |
53 return revNumber; | 50 return extras.getRevisionIndex(); |
54 } | 51 } |
55 | 52 |
56 /** | 53 /** |
57 * @deprecated use {@link #getRevisionIndex()} | 54 * @deprecated use {@link #getRevisionIndex()} |
58 */ | 55 */ |
60 public int getRevisionNumber() { | 57 public int getRevisionNumber() { |
61 return getRevisionIndex(); | 58 return getRevisionIndex(); |
62 } | 59 } |
63 | 60 |
64 public HgException setRevisionIndex(int rev) { | 61 public HgException setRevisionIndex(int rev) { |
65 revNumber = rev; | 62 return extras.setRevisionIndex(rev); |
66 return this; | |
67 } | 63 } |
68 | 64 |
69 public boolean isRevisionIndexSet() { | 65 public boolean isRevisionIndexSet() { |
70 return revNumber != BAD_REVISION; | 66 return extras.isRevisionIndexSet(); |
71 } | 67 } |
72 | 68 |
73 /** | 69 /** |
74 * @deprecated use {@link #setRevisionIndex(int)} | 70 * @deprecated use {@link #setRevisionIndex(int)} |
75 */ | 71 */ |
80 | 76 |
81 /** | 77 /** |
82 * @return non-null only when revision was supplied at construction time | 78 * @return non-null only when revision was supplied at construction time |
83 */ | 79 */ |
84 public Nodeid getRevision() { | 80 public Nodeid getRevision() { |
85 return revision; | 81 return extras.getRevision(); |
86 } | 82 } |
87 | 83 |
88 public HgException setRevision(Nodeid r) { | 84 public HgException setRevision(Nodeid r) { |
89 revision = r; | 85 return extras.setRevision(r); |
90 return this; | |
91 } | 86 } |
92 | 87 |
93 public boolean isRevisionSet() { | 88 public boolean isRevisionSet() { |
94 return revision != null; | 89 return extras.isRevisionSet(); |
95 } | 90 } |
96 | 91 |
97 /** | 92 /** |
98 * @return non-null only if file name was set at construction time | 93 * @return non-null only if file name was set at construction time |
99 */ | 94 */ |
100 public Path getFileName() { | 95 public Path getFileName() { |
101 return filename; | 96 return extras.getFileName(); |
102 } | 97 } |
103 | 98 |
104 public HgException setFileName(Path name) { | 99 public HgException setFileName(Path name) { |
105 filename = name; | 100 return extras.setFileName(name); |
106 return this; | |
107 } | |
108 | |
109 protected void appendDetails(StringBuilder sb) { | |
110 if (filename != null) { | |
111 sb.append("path:'"); | |
112 sb.append(filename); | |
113 sb.append('\''); | |
114 sb.append(';'); | |
115 sb.append(' '); | |
116 } | |
117 sb.append("rev:"); | |
118 if (revNumber != BAD_REVISION) { | |
119 sb.append(revNumber); | |
120 if (revision != null) { | |
121 sb.append(':'); | |
122 } | |
123 } | |
124 if (revision != null) { | |
125 sb.append(revision.shortNotation()); | |
126 } | |
127 } | 101 } |
128 | 102 |
129 @Override | 103 @Override |
130 public String toString() { | 104 public String toString() { |
131 StringBuilder sb = new StringBuilder(super.toString()); | 105 StringBuilder sb = new StringBuilder(super.toString()); |
132 sb.append(' '); | 106 sb.append(' '); |
133 sb.append('('); | 107 sb.append('('); |
134 appendDetails(sb); | 108 extras.appendDetails(sb); |
135 sb.append(')'); | 109 sb.append(')'); |
136 return sb.toString(); | 110 return sb.toString(); |
137 } | 111 } |
138 // /* XXX CONSIDER capability to pass extra information about errors */ | 112 // /* XXX CONSIDER capability to pass extra information about errors */ |
139 // public static class Status { | 113 // public static class Status { |