Mercurial > jhg
comparison src/org/tmatesoft/hg/repo/HgBundle.java @ 358:fc8bc2f1edbe v0.7.0
Clean internal classes from public API
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 06 Dec 2011 20:02:48 +0100 |
parents | dfb8405d996f |
children | 994b5813a925 |
comparison
equal
deleted
inserted
replaced
357:dfb8405d996f | 358:fc8bc2f1edbe |
---|---|
27 import org.tmatesoft.hg.internal.ByteArrayChannel; | 27 import org.tmatesoft.hg.internal.ByteArrayChannel; |
28 import org.tmatesoft.hg.internal.ByteArrayDataAccess; | 28 import org.tmatesoft.hg.internal.ByteArrayDataAccess; |
29 import org.tmatesoft.hg.internal.DataAccess; | 29 import org.tmatesoft.hg.internal.DataAccess; |
30 import org.tmatesoft.hg.internal.DataAccessProvider; | 30 import org.tmatesoft.hg.internal.DataAccessProvider; |
31 import org.tmatesoft.hg.internal.DigestHelper; | 31 import org.tmatesoft.hg.internal.DigestHelper; |
32 import org.tmatesoft.hg.internal.Experimental; | |
32 import org.tmatesoft.hg.internal.InflaterDataAccess; | 33 import org.tmatesoft.hg.internal.InflaterDataAccess; |
33 import org.tmatesoft.hg.internal.Patch; | 34 import org.tmatesoft.hg.internal.Patch; |
34 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; | 35 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; |
35 import org.tmatesoft.hg.util.CancelledException; | 36 import org.tmatesoft.hg.util.CancelledException; |
36 | 37 |
356 da.skip(len - 4); // sizeof(int) | 357 da.skip(len - 4); // sizeof(int) |
357 len = da.isEmpty() ? 0 : da.readInt(); | 358 len = da.isEmpty() ? 0 : da.readInt(); |
358 } | 359 } |
359 } | 360 } |
360 | 361 |
361 // FIXME GroupElement exposes some internal API!!! (DataAccess) | 362 @Experimental(reason="Cumbersome API, rawData and apply with byte[] perhaps need replacement with ByteChannel/ByteBuffer, and better Exceptions. Perhaps, shall split into interface and impl") |
362 public static class GroupElement { | 363 public static class GroupElement { |
363 private final byte[] header; // byte[80] takes 120 bytes, 4 Nodeids - 192 | 364 private final byte[] header; // byte[80] takes 120 bytes, 4 Nodeids - 192 |
364 private final DataAccess dataAccess; | 365 private final DataAccess dataAccess; |
365 private Patch patches; | 366 private Patch patches; |
366 | 367 |
368 assert fourNodeids != null && fourNodeids.length == 80; | 369 assert fourNodeids != null && fourNodeids.length == 80; |
369 header = fourNodeids; | 370 header = fourNodeids; |
370 dataAccess = rawDataAccess; | 371 dataAccess = rawDataAccess; |
371 } | 372 } |
372 | 373 |
373 // non-null | 374 /** |
375 * <b>node</b> field of the group element | |
376 * @return node revision, never <code>null</code> | |
377 */ | |
374 public Nodeid node() { | 378 public Nodeid node() { |
375 return Nodeid.fromBinary(header, 0); | 379 return Nodeid.fromBinary(header, 0); |
376 } | 380 } |
377 | 381 |
378 // non-null | 382 /** |
383 * <b>p1</b> <i>(parent 1)</i> field of the group element | |
384 * @return revision of parent 1, never <code>null</code> | |
385 */ | |
379 public Nodeid firstParent() { | 386 public Nodeid firstParent() { |
380 return Nodeid.fromBinary(header, 20); | 387 return Nodeid.fromBinary(header, 20); |
381 } | 388 } |
382 | 389 |
383 // non-null | 390 /** |
391 * <b>p2</b> <i>(parent 2)</i> field of the group element | |
392 * @return revision of parent 2, never <code>null</code> | |
393 */ | |
384 public Nodeid secondParent() { | 394 public Nodeid secondParent() { |
385 return Nodeid.fromBinary(header, 40); | 395 return Nodeid.fromBinary(header, 40); |
386 } | 396 } |
387 | 397 |
388 // non-null | 398 /** |
389 public Nodeid cset() { // cs seems to be changeset | 399 * <b>cs</b> <i>(changeset link)</i> field of the group element |
400 * @return changeset revision, never <code>null</code> | |
401 */ | |
402 public Nodeid cset() { | |
390 return Nodeid.fromBinary(header, 60); | 403 return Nodeid.fromBinary(header, 60); |
391 } | 404 } |
392 | 405 |
393 public DataAccess rawData() { | 406 public byte[] rawDataByteArray() throws IOException { // XXX IOException or HgInvalidFileException? |
407 return rawData().byteArray(); | |
408 } | |
409 | |
410 public byte[] apply(byte[] baseContent) throws IOException { | |
411 return apply(new ByteArrayDataAccess(baseContent)); | |
412 } | |
413 | |
414 /*package-local*/ DataAccess rawData() { | |
394 return dataAccess; | 415 return dataAccess; |
395 } | 416 } |
396 | 417 |
397 /*package-local*/ Patch patch() throws IOException { | 418 /*package-local*/ Patch patch() throws IOException { |
398 if (patches == null) { | 419 if (patches == null) { |
401 patches.read(dataAccess); | 422 patches.read(dataAccess); |
402 } | 423 } |
403 return patches; | 424 return patches; |
404 } | 425 } |
405 | 426 |
406 public byte[] apply(DataAccess baseContent) throws IOException { | 427 /*package-local*/ byte[] apply(DataAccess baseContent) throws IOException { |
407 return patch().apply(baseContent, -1); | 428 return patch().apply(baseContent, -1); |
408 } | 429 } |
409 | 430 |
410 public String toString() { | 431 public String toString() { |
411 int patchCount; | 432 int patchCount; |