You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2009/09/14 02:33:44 UTC

svn commit: r814451 - in /commons/proper/net/trunk: src/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java src/test/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java xdocs/changes.xml

Author: sebb
Date: Mon Sep 14 00:33:44 2009
New Revision: 814451

URL: http://svn.apache.org/viewvc?rev=814451&view=rev
Log:
NET-294 UnixFTPEntryParser fails to parse some entries

Modified:
    commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
    commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java
    commons/proper/net/trunk/xdocs/changes.xml

Modified: commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java?rev=814451&r1=814450&r2=814451&view=diff
==============================================================================
--- commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java (original)
+++ commons/proper/net/trunk/src/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java Mon Sep 14 00:33:44 2009
@@ -88,23 +88,25 @@
     private static final String REGEX =
         "([bcdlfmpSs-])"
         +"(((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-]))((r|-)(w|-)([xsStTL-])))\\+?\\s+"
-        + "(\\d+)\\s+"
-        + "(\\S+)\\s+"
-        + "(?:(\\S+(?:\\s\\S+)*)\\s+)?"
-        + "(\\d+(?:,\\s*\\d+)?)\\s+"
+        + "(\\d+)\\s+"                    // link count
+        + "(\\S+)\\s+"                    // owner name
+        + "(?:(\\S+(?:\\s\\S+)*)\\s+)?"   // group name (optional spaces)
+        + "(\\d+(?:,\\s*\\d+)?)\\s+"      // size or n,m
         
         /*
-          numeric or standard format date
+         * numeric or standard format date:
+         *   yyyy-mm-dd (expecting hh:mm to follow)
+         *   MMMM [d]d
+         *   [d]d MMM
         */
-        + "((?:\\d+[-/]\\d+[-/]\\d+)|(?:\\S+\\s+\\S+))\\s+"
-        
+        + "((?:\\d+[-/]\\d+[-/]\\d+)|(?:[a-zA-Z]{3}\\s+\\d{1,2})|(?:\\d{1,2}\\s+[a-zA-Z]{3}))\\s+"
         /* 
-           year (for non-recent standard format) 
-           or time (for numeric or recent standard format  
+           year (for non-recent standard format) - yyyy
+           or time (for numeric or recent standard format [h]h:mm  
         */
         + "(\\d+(?::\\d+)?)\\s+"
         
-        + "(\\S*)(\\s*.*)";
+        + "(\\S*)(\\s*.*)"; // the rest
 
 
     /**

Modified: commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java?rev=814451&r1=814450&r2=814451&view=diff
==============================================================================
--- commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java (original)
+++ commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/UnixFTPEntryParserTest.java Mon Sep 14 00:33:44 2009
@@ -74,7 +74,8 @@
             "lrwxrwxrwx   1 neeme neeme             23 Mar  2 18:06 macros -> ./../../global/macros/.",
             "-rw-r--r--   1 ftp      group with spaces in it as allowed in cygwin see bug 38634   83853 Jan 22  2001 zxJDBC-1.2.4.tar.gz",
             "crw-r----- 1 root kmem 0, 27 Jan 30 11:42 kmem",  //FreeBSD device
-            "crw-------   1 root     sys      109,767 Jul  2  2004 pci@1c,600000:devctl" //Solaris device
+            "crw-------   1 root     sys      109,767 Jul  2  2004 pci@1c,600000:devctl", //Solaris device
+            "-rwxrwx---   1 ftp      ftp-admin 816026400 Oct  5  2008 bloplab 7 cd1.img", // NET-294
 
 
         };
@@ -233,6 +234,18 @@
         assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp().getTime()));
     }
     
+    public void testNET294() {
+        FTPFile f = getParser().parseFTPEntry(
+                "-rwxrwx---   1 ftp      ftp-admin 816026400 Oct  5  2008 bloplab 7 cd1.img");
+        assertNotNull(f);
+        assertEquals("ftp", f.getUser());
+        assertEquals("ftp-admin", f.getGroup());
+        assertEquals(816026400L,f.getSize());
+        assertNotNull("Timestamp should not be null",f.getTimestamp());
+        assertEquals(2008,f.getTimestamp().get(Calendar.YEAR));
+        assertEquals("bloplab 7 cd1.img",f.getName());
+    }
+    
 
     /**
      * Method suite.
@@ -268,6 +281,7 @@
         case 'b':
         case 'c':
             assertEquals(0, f.getHardLinkCount());
+            //$FALL-THROUGH$ TODO fix if DEVICE_TYPE introduced
         case 'f':
         case '-':
             assertEquals("Type of "+ test, type, FTPFile.FILE_TYPE);
@@ -290,5 +304,6 @@
             }
         }
 
+        assertNotNull("Expecting valid timestamp",f.getTimestamp());
     }
 }

Modified: commons/proper/net/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/xdocs/changes.xml?rev=814451&r1=814450&r2=814451&view=diff
==============================================================================
--- commons/proper/net/trunk/xdocs/changes.xml (original)
+++ commons/proper/net/trunk/xdocs/changes.xml Mon Sep 14 00:33:44 2009
@@ -105,6 +105,9 @@
             <action dev="sebb" type="fix" issue="NET-225">
                 FTPFileEntryParserImpl.preParse() doesn't remove unparsable entries at the end of the file list
             </action>
+            <action dev="sebb" type="fix" issue="NET-294">
+                UnixFTPEntryParser fails to parse some entries
+            </action>
 		</release> 
 		
 		<release version="1.4.1" date="December 3, 2005" description="fix release to restore jdk 1.3 compatability">