Return-Path: Delivered-To: apmail-jakarta-ant-dev-archive@apache.org Received: (qmail 80765 invoked from network); 19 Nov 2001 14:13:39 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 19 Nov 2001 14:13:39 -0000 Received: (qmail 21308 invoked by uid 97); 19 Nov 2001 14:13:35 -0000 Delivered-To: qmlist-jakarta-archive-ant-dev@jakarta.apache.org Received: (qmail 21292 invoked by uid 97); 19 Nov 2001 14:13:34 -0000 Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Ant Developers List" Reply-To: "Ant Developers List" Delivered-To: mailing list ant-dev@jakarta.apache.org Received: (qmail 21281 invoked by uid 97); 19 Nov 2001 14:13:34 -0000 Date: 19 Nov 2001 13:58:52 -0000 Message-ID: <20011119135852.8758.qmail@icarus.apache.org> From: bodewig@apache.org To: jakarta-ant-cvs@apache.org Subject: cvs commit: jakarta-ant/src/testcases/org/apache/tools/ant/util FileUtilsTest.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N bodewig 01/11/19 05:58:52 Modified: src/main/org/apache/tools/ant/taskdefs FixCRLF.java src/main/org/apache/tools/ant/util FileUtils.java src/testcases/org/apache/tools/ant/util FileUtilsTest.java Log: add method that compares file contents to FileUtils, use it in FixCrLf. Revision Changes Path 1.24 +4 -51 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java Index: FixCRLF.java =================================================================== RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/FixCRLF.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- FixCRLF.java 2001/11/13 14:49:48 1.23 +++ FixCRLF.java 2001/11/19 13:58:52 1.24 @@ -115,7 +115,7 @@ * * @author Sam Ruby rubys@us.ibm.com * @author Peter B. West - * @version $Revision: 1.23 $ $Name: $ + * @version $Revision: 1.24 $ $Name: $ */ public class FixCRLF extends MatchingTask { @@ -389,55 +389,6 @@ } - /** - * Checks for the inequality of two files - */ - private boolean filesEqual(File file1, File file2) { - BufferedReader reader1 = null; - BufferedReader reader2 = null; - char buf1[] = new char[INBUFLEN]; - char buf2[] = new char[INBUFLEN]; - int buflen; - - if (file1.length() != file2.length()) { - return false; - } - - try { - reader1 = new BufferedReader - (getReader(file1), INBUFLEN); - reader2 = new BufferedReader - (getReader(file2), INBUFLEN); - while ((buflen = reader1.read(buf1, 0, INBUFLEN)) != -1 ) { - reader2.read(buf2, 0, INBUFLEN); - // Compare the contents of the buffers - // There must be an easier way to do this, but I don''t - // know what it is - for (int i = 0; i < buflen; i++) { - if (buf1[i] != buf2[i]) { - return false; - } // end of if (buf1[i] != buf2[i]) - } - } - return true; // equal - } catch (IOException e) { - throw new BuildException("IOException in filesEqual: " + - file1 + " : " + file2); - } finally { - if (reader1 != null) { - try { - reader1.close(); - } catch (IOException e) {} - } - if (reader2 != null) { - try { - reader2.close(); - } catch (IOException e) {} - } - } - } - - private void processFile(String file) throws BuildException { File srcFile = new File(srcDir, file); File destD = destDir == null ? srcDir : destDir; @@ -602,7 +553,7 @@ if (destFile.exists()) { // Compare the destination with the temp file log("destFile exists", Project.MSG_DEBUG); - if ( ! filesEqual(destFile, tmpFile)) { + if (!fileUtils.contentEquals(destFile, tmpFile)) { log(destFile + " is being written", Project.MSG_DEBUG); if (!destFile.delete()) { throw new BuildException("Unable to delete " @@ -638,6 +589,8 @@ tmpFile = null; + } catch (IOException e) { + throw new BuildException(e); } finally { try { if (lines != null) { 1.9 +59 -5 jakarta-ant/src/main/org/apache/tools/ant/util/FileUtils.java Index: FileUtils.java =================================================================== RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/util/FileUtils.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- FileUtils.java 2001/11/02 16:36:49 1.8 +++ FileUtils.java 2001/11/19 13:58:52 1.9 @@ -54,14 +54,17 @@ package org.apache.tools.ant.util; -import java.io.IOException; -import java.io.File; +import java.io.BufferedInputStream; import java.io.BufferedReader; -import java.io.FileReader; import java.io.BufferedWriter; -import java.io.FileWriter; +import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStream; import java.lang.reflect.Method; import java.text.DecimalFormat; import java.util.Random; @@ -82,7 +85,7 @@ * @author Conor MacNeill * @author Stefan Bodewig * - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ */ public class FileUtils { @@ -503,6 +506,57 @@ } while (result.exists()); } return result; + } + + /** + * Compares the contents of two files. + * + * @since 1.9 + */ + public boolean contentEquals(File f1, File f2) throws IOException { + if (f1.exists() != f2.exists()) { + return false; + } + + if (!f1.exists()) { + // two not existing files are equal + return true; + } + + if (f1.isDirectory() || f2.isDirectory()) { + // don't want to compare directory contents for now + return false; + } + + InputStream in1 = null; + InputStream in2 = null; + try { + in1 = new BufferedInputStream(new FileInputStream(f1)); + in2 = new BufferedInputStream(new FileInputStream(f2)); + + int expectedByte = in1.read(); + while (expectedByte != -1) { + if (expectedByte != in2.read()) { + return false; + } + expectedByte = in1.read(); + } + if (in2.read() != -1) { + return false; + } + return true; + } finally { + if (in1 != null) { + try { + in1.close(); + } catch (IOException e) {} + } + if (in2 != null) { + try { + in2.close(); + } catch (IOException e) {} + } + } } } 1.6 +18 -0 jakarta-ant/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java Index: FileUtilsTest.java =================================================================== RCS file: /home/cvs/jakarta-ant/src/testcases/org/apache/tools/ant/util/FileUtilsTest.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- FileUtilsTest.java 2001/11/02 16:36:49 1.5 +++ FileUtilsTest.java 2001/11/19 13:58:52 1.6 @@ -299,6 +299,24 @@ } /** + * Test contentEquals + */ + public void testContentEquals() throws IOException { + assertTrue("Non existing files", fu.contentEquals(new File("foo"), + new File("bar"))); + assertTrue("One exists, the other one doesn\'t", + !fu.contentEquals(new File("foo"), new File("build.xml"))); + assertTrue("Don\'t compare directories", + !fu.contentEquals(new File("src"), new File("src"))); + assertTrue("File equals itself", + fu.contentEquals(new File("build.xml"), + new File("build.xml"))); + assertTrue("Files are different", + !fu.contentEquals(new File("build.xml"), + new File("docs.xml"))); + } + + /** * adapt file separators to local conventions */ private String localize(String path) { -- To unsubscribe, e-mail: For additional commands, e-mail: