Mercurial > hg4j
comparison src/org/tmatesoft/hg/core/HgChangeset.java @ 366:189dc6dc1c3e
Use exceptions to expose errors reading mercurial data
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Fri, 16 Dec 2011 04:43:18 +0100 |
| parents | ee6b467c1a5f |
| children | 9517df1ef7ec |
comparison
equal
deleted
inserted
replaced
| 365:3572fcb06473 | 366:189dc6dc1c3e |
|---|---|
| 114 rv.add(pathHelper.path(name)); | 114 rv.add(pathHelper.path(name)); |
| 115 } | 115 } |
| 116 return rv; | 116 return rv; |
| 117 } | 117 } |
| 118 | 118 |
| 119 public List<HgFileRevision> getModifiedFiles() { | 119 public List<HgFileRevision> getModifiedFiles() throws HgInvalidControlFileException { |
| 120 if (modifiedFiles == null) { | 120 if (modifiedFiles == null) { |
| 121 initFileChanges(); | 121 initFileChanges(); |
| 122 } | 122 } |
| 123 return modifiedFiles; | 123 return modifiedFiles; |
| 124 } | 124 } |
| 125 | 125 |
| 126 public List<HgFileRevision> getAddedFiles() { | 126 public List<HgFileRevision> getAddedFiles() throws HgInvalidControlFileException { |
| 127 if (addedFiles == null) { | 127 if (addedFiles == null) { |
| 128 initFileChanges(); | 128 initFileChanges(); |
| 129 } | 129 } |
| 130 return addedFiles; | 130 return addedFiles; |
| 131 } | 131 } |
| 132 | 132 |
| 133 public List<Path> getRemovedFiles() { | 133 public List<Path> getRemovedFiles() throws HgInvalidControlFileException { |
| 134 if (deletedFiles == null) { | 134 if (deletedFiles == null) { |
| 135 initFileChanges(); | 135 initFileChanges(); |
| 136 } | 136 } |
| 137 return deletedFiles; | 137 return deletedFiles; |
| 138 } | 138 } |
| 139 | 139 |
| 140 public boolean isMerge() { | 140 public boolean isMerge() throws HgInvalidControlFileException { |
| 141 // p1 == -1 and p2 != -1 is legitimate case | 141 // p1 == -1 and p2 != -1 is legitimate case |
| 142 return !(getFirstParentRevision().isNull() || getSecondParentRevision().isNull()); | 142 return !(getFirstParentRevision().isNull() || getSecondParentRevision().isNull()); |
| 143 } | 143 } |
| 144 | 144 |
| 145 /** | 145 /** |
| 146 * @return never <code>null</code> | 146 * @return never <code>null</code> |
| 147 * @throws HgInvalidControlFileException FIXME | |
| 147 */ | 148 */ |
| 148 public Nodeid getFirstParentRevision() { | 149 public Nodeid getFirstParentRevision() throws HgInvalidControlFileException { |
| 149 if (parentHelper != null) { | 150 if (parentHelper != null) { |
| 150 return parentHelper.safeFirstParent(nodeid); | 151 return parentHelper.safeFirstParent(nodeid); |
| 151 } | 152 } |
| 152 // read once for both p1 and p2 | 153 // read once for both p1 and p2 |
| 153 if (parent1 == null) { | 154 if (parent1 == null) { |
| 158 return Nodeid.fromBinary(parent1, 0); | 159 return Nodeid.fromBinary(parent1, 0); |
| 159 } | 160 } |
| 160 | 161 |
| 161 /** | 162 /** |
| 162 * @return never <code>null</code> | 163 * @return never <code>null</code> |
| 164 * @throws HgInvalidControlFileException FIXME | |
| 163 */ | 165 */ |
| 164 public Nodeid getSecondParentRevision() { | 166 public Nodeid getSecondParentRevision() throws HgInvalidControlFileException { |
| 165 if (parentHelper != null) { | 167 if (parentHelper != null) { |
| 166 return parentHelper.safeSecondParent(nodeid); | 168 return parentHelper.safeSecondParent(nodeid); |
| 167 } | 169 } |
| 168 if (parent2 == null) { | 170 if (parent2 == null) { |
| 169 parent1 = new byte[20]; | 171 parent1 = new byte[20]; |
| 182 } catch (CloneNotSupportedException ex) { | 184 } catch (CloneNotSupportedException ex) { |
| 183 throw new InternalError(ex.toString()); | 185 throw new InternalError(ex.toString()); |
| 184 } | 186 } |
| 185 } | 187 } |
| 186 | 188 |
| 187 private /*synchronized*/ void initFileChanges() { | 189 private /*synchronized*/ void initFileChanges() throws HgInvalidControlFileException { |
| 188 ArrayList<Path> deleted = new ArrayList<Path>(); | 190 ArrayList<Path> deleted = new ArrayList<Path>(); |
| 189 ArrayList<HgFileRevision> modified = new ArrayList<HgFileRevision>(); | 191 ArrayList<HgFileRevision> modified = new ArrayList<HgFileRevision>(); |
| 190 ArrayList<HgFileRevision> added = new ArrayList<HgFileRevision>(); | 192 ArrayList<HgFileRevision> added = new ArrayList<HgFileRevision>(); |
| 191 HgStatusCollector.Record r = new HgStatusCollector.Record(); | 193 HgStatusCollector.Record r = new HgStatusCollector.Record(); |
| 192 statusHelper.change(revNumber, r); | 194 statusHelper.change(revNumber, r); |
