[ 
https://issues.apache.org/jira/browse/NET-190?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12573935#action_12573935
 ] 

Wade Poziombka commented on NET-190:
------------------------------------

I've drilled in and the problem is that the timestamp parsing code depends on 
SimpleDateFormat with leniency disabled.  That does not parse the date e.g., 
"Feb 29 17:46".

                        ParsePosition pp = new ParsePosition(0);
                        SimpleDateFormat format = new SimpleDateFormat("MMM d 
HH:mm");
                        format.setLenient(false);
                        Date date = format.parse("Feb 29 17:46", pp);

Yields null.  This should probably be a little smarter about how it parsed 
timestamps.  One should append the year to the recent date before parsing with 
SimpleDateFormat.  For instance, 

                        Calendar c = Calendar.getInstance();                    
                        ParsePosition pp = new ParsePosition(0);
                        SimpleDateFormat recentWithYear = new 
SimpleDateFormat("MMM d HH:mmyyyy");
                        format.setLenient(false);
                        Date date = recentWithYear.parse("Feb 29 17:46" + 
c.get(Calendar.YEAR), pp);

produces the correct date.  

> [FTP Client] Not listing files with 'invalid' date
> --------------------------------------------------
>
>                 Key: NET-190
>                 URL: https://issues.apache.org/jira/browse/NET-190
>             Project: Commons Net
>          Issue Type: Bug
>    Affects Versions: 1.4
>         Environment: FTP Gateway: Response:   331-httpiproxy2 FTP server 
> (Version 1.9.2.4 - 2005/01/11 13:03:28) ready.
> FTP Server: Response: 215 UNIX Type: L8
> FTP Client: Jakarta Commons VFS over Jakarta Commons NET
>            Reporter: Diego Souto
>   Original Estimate: 3h
>  Remaining Estimate: 3h
>
> When trying to list files in a FTP directory with two files returns 0 
> FileObjects.
> With another FTP client.... response is:
> ftp> ls
> 227 Entering Passive Mode (212,163,35,155,160,40)
> 150 Conexión de datos aceptada
> -rw-r--r--    1 0        0             222 Feb 29 09:47 AYC01R
> -rw-r--r--    1 0        0             688 Feb 29 03:04 AYC02R
> 226-Options: -l 
> 226 2 ocurrencias en total
> ... so there are two files with date "FEBRUARY 29" (2008 is a leap year)
> When listing files with Jakarta Commons VFS over Jakarta Commons NET it 
> returns 0 files.
> I revised Commons Net source and I found in 
> 'org.apache.commons.net.ftp.parser.UnixFTPEntryParser' the following code:
>             try
>             {
>                 file.setTimestamp(super.parseTimestamp(datestr));
>             }
>             catch (ParseException e)
>             {
>               return null;  // this is a parsing failure too.
>             }
> So I guess maybe the timestamp parser is throwing a ParseException (perhaps 
> it's guessing a incorrect year) and in this case is returning NULL so the 
> calling class is ignoring these files with 'Feb 29' date.
> I think this behaviour is incorrect and must be fixed. If date is considered 
> invalid it would throw an exception,... not simply ignore the file.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to