Return-Path: Delivered-To: apmail-commons-commits-archive@locus.apache.org Received: (qmail 80916 invoked from network); 12 Oct 2007 23:37:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Oct 2007 23:37:09 -0000 Received: (qmail 30689 invoked by uid 500); 12 Oct 2007 23:36:55 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 30603 invoked by uid 500); 12 Oct 2007 23:36:55 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 30594 invoked by uid 99); 12 Oct 2007 23:36:55 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Oct 2007 16:36:55 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Oct 2007 23:37:07 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 05EAA1A9838; Fri, 12 Oct 2007 16:36:17 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r584325 - in /commons/proper/io/trunk/src: java/org/apache/commons/io/FilenameUtils.java test/org/apache/commons/io/FilenameUtilsTestCase.java Date: Fri, 12 Oct 2007 23:36:15 -0000 To: commits@commons.apache.org From: niallp@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071012233617.05EAA1A9838@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: niallp Date: Fri Oct 12 16:36:12 2007 New Revision: 584325 URL: http://svn.apache.org/viewvc?rev=584325&view=rev Log: IO-128 - currently file name "normalization" errors in the equals method causes a mis-leading NullPointerException. Adding a check for this and throwing an IllegalArgumentException with a better message should improve the user experience. Modified: commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsTestCase.java Modified: commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java?rev=584325&r1=584324&r2=584325&view=diff ============================================================================== --- commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java (original) +++ commons/proper/io/trunk/src/java/org/apache/commons/io/FilenameUtils.java Fri Oct 12 16:36:12 2007 @@ -977,6 +977,10 @@ if (normalized) { filename1 = normalize(filename1); filename2 = normalize(filename2); + if (filename1 == null || filename2 == null) { + throw new IllegalArgumentException( + "Error normalizing one or both of the file names"); + } } if (caseSensitivity == null) { caseSensitivity = IOCase.SENSITIVE; Modified: commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsTestCase.java URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsTestCase.java?rev=584325&r1=584324&r2=584325&view=diff ============================================================================== --- commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsTestCase.java (original) +++ commons/proper/io/trunk/src/test/org/apache/commons/io/FilenameUtilsTestCase.java Fri Oct 12 16:36:12 2007 @@ -784,6 +784,30 @@ assertEquals(false, FilenameUtils.equalsNormalizedOnSystem("a/b/", "a/b")); } + /** + * Test for https://issues.apache.org/jira/browse/IO-128 + */ + public void testEqualsNormalizedError_IO_128() { + try { + FilenameUtils.equalsNormalizedOnSystem("//file.txt", "file.txt"); + fail("Invalid normalized first file"); + } catch(IllegalArgumentException e) { + // expected result + } + try { + FilenameUtils.equalsNormalizedOnSystem("file.txt", "//file.txt"); + fail("Invalid normalized second file"); + } catch(IllegalArgumentException e) { + // expected result + } + try { + FilenameUtils.equalsNormalizedOnSystem("//file.txt", "//file.txt"); + fail("Invalid normalized both filse"); + } catch(IllegalArgumentException e) { + // expected result + } + } + public void testEquals_fullControl() { assertEquals(false, FilenameUtils.equals("file.txt", "FILE.TXT", true, IOCase.SENSITIVE)); assertEquals(true, FilenameUtils.equals("file.txt", "FILE.TXT", true, IOCase.INSENSITIVE));