Mercurial > hg4j
comparison src/org/tmatesoft/hg/repo/HgWorkingCopyStatusCollector.java @ 490:b3c16d1aede0
Refactoring: move HgRepository's implementation aspects to Internals (which is now its imlementation counterpart and primary repository class to be used by other parts of the library)
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 16 Aug 2012 17:08:34 +0200 |
parents | 5c09a9f2e073 |
children | ba36f66c32b4 |
comparison
equal
deleted
inserted
replaced
489:9c0138cda59a | 490:b3c16d1aede0 |
---|---|
363 } else { | 363 } else { |
364 inspector.clean(df.getPath()); | 364 inspector.clean(df.getPath()); |
365 } | 365 } |
366 } | 366 } |
367 } catch (HgRuntimeException ex) { | 367 } catch (HgRuntimeException ex) { |
368 repo.getContext().getLog().dump(getClass(), Warn, ex, null); | 368 repo.getSessionContext().getLog().dump(getClass(), Warn, ex, null); |
369 inspector.invalid(fname, ex); | 369 inspector.invalid(fname, ex); |
370 } | 370 } |
371 } | 371 } |
372 } else if ((r = getDirstateImpl().checkAdded(fname)) != null) { | 372 } else if ((r = getDirstateImpl().checkAdded(fname)) != null) { |
373 if (r.copySource() == null) { | 373 if (r.copySource() == null) { |
455 inspector.clean(fname); | 455 inspector.clean(fname); |
456 } else { | 456 } else { |
457 inspector.modified(fname); | 457 inspector.modified(fname); |
458 } | 458 } |
459 } catch (HgRuntimeException ex) { | 459 } catch (HgRuntimeException ex) { |
460 repo.getContext().getLog().dump(getClass(), Warn, ex, null); | 460 repo.getSessionContext().getLog().dump(getClass(), Warn, ex, null); |
461 inspector.invalid(fname, ex); | 461 inspector.invalid(fname, ex); |
462 } | 462 } |
463 baseRevNames.remove(fname); // consumed, processed, handled. | 463 baseRevNames.remove(fname); // consumed, processed, handled. |
464 } else if (getDirstateImpl().checkRemoved(fname) != null) { | 464 } else if (getDirstateImpl().checkRemoved(fname) != null) { |
465 // was known, and now marked as removed, report it right away, do not rely on baseRevNames processing later | 465 // was known, and now marked as removed, report it right away, do not rely on baseRevNames processing later |
492 } | 492 } |
493 | 493 |
494 private boolean areTheSame(FileInfo f, final byte[] data, Path p) throws HgInvalidFileException { | 494 private boolean areTheSame(FileInfo f, final byte[] data, Path p) throws HgInvalidFileException { |
495 ReadableByteChannel is = null; | 495 ReadableByteChannel is = null; |
496 class Check implements ByteChannel { | 496 class Check implements ByteChannel { |
497 final boolean debug = repo.getContext().getLog().isDebug(); | 497 final boolean debug = repo.getSessionContext().getLog().isDebug(); |
498 boolean sameSoFar = true; | 498 boolean sameSoFar = true; |
499 int x = 0; | 499 int x = 0; |
500 | 500 |
501 public int write(ByteBuffer buffer) { | 501 public int write(ByteBuffer buffer) { |
502 for (int i = buffer.remaining(); i > 0; i--, x++) { | 502 for (int i = buffer.remaining(); i > 0; i--, x++) { |
512 exp = new String(data, max(0, x - 4), min(data.length - x, 20)); | 512 exp = new String(data, max(0, x - 4), min(data.length - x, 20)); |
513 } else { | 513 } else { |
514 int offset = max(0, x - 4); | 514 int offset = max(0, x - 4); |
515 exp = new String(data, offset, min(data.length - offset, 20)); | 515 exp = new String(data, offset, min(data.length - offset, 20)); |
516 } | 516 } |
517 repo.getContext().getLog().dump(getClass(), Debug, "expected >>%s<< but got >>%s<<", exp, new String(xx)); | 517 repo.getSessionContext().getLog().dump(getClass(), Debug, "expected >>%s<< but got >>%s<<", exp, new String(xx)); |
518 } | 518 } |
519 sameSoFar = false; | 519 sameSoFar = false; |
520 break; | 520 break; |
521 } | 521 } |
522 } | 522 } |
545 } | 545 } |
546 // reset channel to read once again | 546 // reset channel to read once again |
547 try { | 547 try { |
548 is.close(); | 548 is.close(); |
549 } catch (IOException ex) { | 549 } catch (IOException ex) { |
550 repo.getContext().getLog().dump(getClass(), Info, ex, null); | 550 repo.getSessionContext().getLog().dump(getClass(), Info, ex, null); |
551 } | 551 } |
552 is = f.newInputChannel(); | 552 is = f.newInputChannel(); |
553 fb.clear(); | 553 fb.clear(); |
554 } | 554 } |
555 while (is.read(fb) != -1 && check.sameSoFar()) { | 555 while (is.read(fb) != -1 && check.sameSoFar()) { |
557 filters.write(fb); | 557 filters.write(fb); |
558 fb.compact(); | 558 fb.compact(); |
559 } | 559 } |
560 return check.ultimatelyTheSame(); | 560 return check.ultimatelyTheSame(); |
561 } catch (CancelledException ex) { | 561 } catch (CancelledException ex) { |
562 repo.getContext().getLog().dump(getClass(), Warn, ex, "Unexpected cancellation"); | 562 repo.getSessionContext().getLog().dump(getClass(), Warn, ex, "Unexpected cancellation"); |
563 return check.ultimatelyTheSame(); | 563 return check.ultimatelyTheSame(); |
564 } catch (IOException ex) { | 564 } catch (IOException ex) { |
565 throw new HgInvalidFileException("File comparison failed", ex).setFileName(p); | 565 throw new HgInvalidFileException("File comparison failed", ex).setFileName(p); |
566 } finally { | 566 } finally { |
567 if (is != null) { | 567 if (is != null) { |
568 try { | 568 try { |
569 is.close(); | 569 is.close(); |
570 } catch (IOException ex) { | 570 } catch (IOException ex) { |
571 repo.getContext().getLog().dump(getClass(), Info, ex, null); | 571 repo.getSessionContext().getLog().dump(getClass(), Info, ex, null); |
572 } | 572 } |
573 } | 573 } |
574 } | 574 } |
575 } | 575 } |
576 | 576 |
629 } | 629 } |
630 } | 630 } |
631 // final Path[] dirs = f.toArray(new Path[d.size()]); | 631 // final Path[] dirs = f.toArray(new Path[d.size()]); |
632 if (d.isEmpty()) { | 632 if (d.isEmpty()) { |
633 final Path[] files = f.toArray(new Path[f.size()]); | 633 final Path[] files = f.toArray(new Path[f.size()]); |
634 FileIterator fi = new FileListIterator(hgRepo.getContext(), hgRepo.getWorkingDir(), files); | 634 FileIterator fi = new FileListIterator(hgRepo.getSessionContext(), hgRepo.getWorkingDir(), files); |
635 return new HgWorkingCopyStatusCollector(hgRepo, fi); | 635 return new HgWorkingCopyStatusCollector(hgRepo, fi); |
636 } | 636 } |
637 // | 637 // |
638 | 638 |
639 //FileIterator fi = file.isDirectory() ? new DirFileIterator(hgRepo, file) : new FileListIterator(, file); | 639 //FileIterator fi = file.isDirectory() ? new DirFileIterator(hgRepo, file) : new FileListIterator(, file); |