Mercurial > hg4j
comparison src/org/tmatesoft/hg/repo/HgWorkingCopyStatusCollector.java @ 355:f2c11fe7f3e9
Newline filter shall respect whole stream when deciding whether to process line terminators, hence added stream preview functionality
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 06 Dec 2011 12:57:21 +0100 |
parents | 5f9073eabf06 |
children | 91d75e1bac9f |
comparison
equal
deleted
inserted
replaced
354:5f9073eabf06 | 355:f2c11fe7f3e9 |
---|---|
37 import org.tmatesoft.hg.internal.ByteArrayChannel; | 37 import org.tmatesoft.hg.internal.ByteArrayChannel; |
38 import org.tmatesoft.hg.internal.Experimental; | 38 import org.tmatesoft.hg.internal.Experimental; |
39 import org.tmatesoft.hg.internal.FilterByteChannel; | 39 import org.tmatesoft.hg.internal.FilterByteChannel; |
40 import org.tmatesoft.hg.internal.ManifestRevision; | 40 import org.tmatesoft.hg.internal.ManifestRevision; |
41 import org.tmatesoft.hg.internal.PathScope; | 41 import org.tmatesoft.hg.internal.PathScope; |
42 import org.tmatesoft.hg.internal.Preview; | |
42 import org.tmatesoft.hg.util.ByteChannel; | 43 import org.tmatesoft.hg.util.ByteChannel; |
43 import org.tmatesoft.hg.util.CancelledException; | 44 import org.tmatesoft.hg.util.CancelledException; |
44 import org.tmatesoft.hg.util.FileInfo; | 45 import org.tmatesoft.hg.util.FileInfo; |
45 import org.tmatesoft.hg.util.FileIterator; | 46 import org.tmatesoft.hg.util.FileIterator; |
46 import org.tmatesoft.hg.util.FileWalker; | 47 import org.tmatesoft.hg.util.FileWalker; |
467 Check check = new Check(); | 468 Check check = new Check(); |
468 try { | 469 try { |
469 is = f.newInputChannel(); | 470 is = f.newInputChannel(); |
470 ByteBuffer fb = ByteBuffer.allocate(min(1 + data.length * 2 /*to fit couple of lines appended; never zero*/, 8192)); | 471 ByteBuffer fb = ByteBuffer.allocate(min(1 + data.length * 2 /*to fit couple of lines appended; never zero*/, 8192)); |
471 FilterByteChannel filters = new FilterByteChannel(check, repo.getFiltersFromWorkingDirToRepo(p)); | 472 FilterByteChannel filters = new FilterByteChannel(check, repo.getFiltersFromWorkingDirToRepo(p)); |
473 Preview preview = filters.getAdapter(Preview.class); | |
474 if (preview != null) { | |
475 while (is.read(fb) != -1) { | |
476 fb.flip(); | |
477 preview.preview(fb); | |
478 fb.clear(); | |
479 } | |
480 // reset channel to read once again | |
481 try { | |
482 is.close(); | |
483 } catch (IOException ex) { | |
484 repo.getContext().getLog().info(getClass(), ex, null); | |
485 } | |
486 is = f.newInputChannel(); | |
487 fb.clear(); | |
488 } | |
472 while (is.read(fb) != -1 && check.sameSoFar()) { | 489 while (is.read(fb) != -1 && check.sameSoFar()) { |
473 fb.flip(); | 490 fb.flip(); |
474 filters.write(fb); | 491 filters.write(fb); |
475 fb.compact(); | 492 fb.compact(); |
476 } | 493 } |