Mercurial > jhg
comparison src/org/tmatesoft/hg/core/HgLogCommand.java @ 157:d5268ca7715b
Merged branch wrap-data-access into default for resource-friendly data access. Updated API to promote that friendliness to clients (channels, not byte[]). More exceptions
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Wed, 09 Mar 2011 05:22:17 +0100 |
| parents | ba2bf656f00f |
| children | 37f3d4a596e4 |
comparison
equal
deleted
inserted
replaced
| 156:643ddec3be36 | 157:d5268ca7715b |
|---|---|
| 16 */ | 16 */ |
| 17 package org.tmatesoft.hg.core; | 17 package org.tmatesoft.hg.core; |
| 18 | 18 |
| 19 import static org.tmatesoft.hg.repo.HgRepository.TIP; | 19 import static org.tmatesoft.hg.repo.HgRepository.TIP; |
| 20 | 20 |
| 21 import java.io.IOException; | |
| 21 import java.util.Calendar; | 22 import java.util.Calendar; |
| 22 import java.util.Collections; | 23 import java.util.Collections; |
| 23 import java.util.ConcurrentModificationException; | 24 import java.util.ConcurrentModificationException; |
| 24 import java.util.LinkedList; | 25 import java.util.LinkedList; |
| 25 import java.util.List; | 26 import java.util.List; |
| 29 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; | 30 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; |
| 30 import org.tmatesoft.hg.repo.HgChangelog; | 31 import org.tmatesoft.hg.repo.HgChangelog; |
| 31 import org.tmatesoft.hg.repo.HgDataFile; | 32 import org.tmatesoft.hg.repo.HgDataFile; |
| 32 import org.tmatesoft.hg.repo.HgRepository; | 33 import org.tmatesoft.hg.repo.HgRepository; |
| 33 import org.tmatesoft.hg.repo.HgStatusCollector; | 34 import org.tmatesoft.hg.repo.HgStatusCollector; |
| 35 import org.tmatesoft.hg.util.ByteChannel; | |
| 36 import org.tmatesoft.hg.util.CancelledException; | |
| 34 import org.tmatesoft.hg.util.Path; | 37 import org.tmatesoft.hg.util.Path; |
| 35 import org.tmatesoft.hg.util.PathPool; | 38 import org.tmatesoft.hg.util.PathPool; |
| 36 import org.tmatesoft.hg.util.PathRewrite; | 39 import org.tmatesoft.hg.util.PathRewrite; |
| 37 | 40 |
| 38 | 41 |
| 162 } | 165 } |
| 163 | 166 |
| 164 /** | 167 /** |
| 165 * Similar to {@link #execute(org.tmatesoft.hg.repo.RawChangeset.Inspector)}, collects and return result as a list. | 168 * Similar to {@link #execute(org.tmatesoft.hg.repo.RawChangeset.Inspector)}, collects and return result as a list. |
| 166 */ | 169 */ |
| 167 public List<HgChangeset> execute() { | 170 public List<HgChangeset> execute() throws HgException { |
| 168 CollectHandler collector = new CollectHandler(); | 171 CollectHandler collector = new CollectHandler(); |
| 169 execute(collector); | 172 execute(collector); |
| 170 return collector.getChanges(); | 173 return collector.getChanges(); |
| 171 } | 174 } |
| 172 | 175 |
| 174 * | 177 * |
| 175 * @param inspector | 178 * @param inspector |
| 176 * @throws IllegalArgumentException when inspector argument is null | 179 * @throws IllegalArgumentException when inspector argument is null |
| 177 * @throws ConcurrentModificationException if this log command instance is already running | 180 * @throws ConcurrentModificationException if this log command instance is already running |
| 178 */ | 181 */ |
| 179 public void execute(Handler handler) { | 182 public void execute(Handler handler) throws HgException { |
| 180 if (handler == null) { | 183 if (handler == null) { |
| 181 throw new IllegalArgumentException(); | 184 throw new IllegalArgumentException(); |
| 182 } | 185 } |
| 183 if (delegate != null) { | 186 if (delegate != null) { |
| 184 throw new ConcurrentModificationException(); | 187 throw new ConcurrentModificationException(); |
| 307 return path; | 310 return path; |
| 308 } | 311 } |
| 309 public Nodeid getRevision() { | 312 public Nodeid getRevision() { |
| 310 return revision; | 313 return revision; |
| 311 } | 314 } |
| 312 public byte[] getContent() { | 315 public void putContentTo(ByteChannel sink) throws HgDataStreamException, IOException, CancelledException { |
| 313 // XXX Content wrapper, to allow formats other than byte[], e.g. Stream, DataAccess, etc? | 316 HgDataFile fn = repo.getFileNode(path); |
| 314 return repo.getFileNode(path).content(revision); | 317 int localRevision = fn.getLocalRevision(revision); |
| 318 fn.contentWithFilters(localRevision, sink); | |
| 315 } | 319 } |
| 316 } | 320 } |
| 317 } | 321 } |
