]> source.dussan.org Git - jgit.git/commitdiff
Prepare RawText for diff-index and diff-files 09/9/2
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 3 Sep 2009 10:47:01 +0000 (12:47 +0200)
committerShawn O. Pearce <spearce@spearce.org>
Tue, 6 Oct 2009 14:43:25 +0000 (07:43 -0700)
Bug: 291083
Eclipse-CQ: 3559
Change-Id: Ia02f346a96b5f1e24f8bc9676bd428b968a41222
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/diff/RawText.java

index 61a3ef41cdcb205db831947133277afa54ca83a3..0bbbb1991a05d532fea94936ad61e69ae7e28cc1 100644 (file)
@@ -44,6 +44,8 @@
 
 package org.eclipse.jgit.diff;
 
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 
@@ -87,6 +89,18 @@ public class RawText implements Sequence {
                hashes = computeHashes();
        }
 
+       /**
+        * Create a new sequence from a file.
+        * <p>
+        * The entire file contents are used.
+        *
+        * @param file
+        *            the text file.
+        */
+       public RawText(File file) throws IOException {
+               this(readFile(file));
+       }
+
        public int size() {
                // The line map is always 2 entries larger than the number of lines in
                // the file. Index 0 is padded out/unused. The last index is the total
@@ -187,4 +201,16 @@ public class RawText implements Sequence {
                        hash = (hash << 5) ^ (raw[ptr] & 0xff);
                return hash;
        }
-}
\ No newline at end of file
+
+       private static byte[] readFile(File file) throws IOException {
+               byte[] result = new byte[(int)file.length()];
+               FileInputStream in = new FileInputStream(file);
+               for (int off = 0; off < result.length; ) {
+                       int read = in.read(result, off, result.length - off);
+                       if (read < 0)
+                               throw new IOException("Early EOF");
+                       off += read;
+               }
+               return result;
+       }
+}