DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=32623>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=32623

           Summary: FTP component: FTPFile does not initialize miliseconds
                    correctly
           Product: Commons
           Version: 1.2 Final
          Platform: PC
        OS/Version: Windows 2000
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Net
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Hi, I have been working with the FTP utilities and was saving the filename and 
lastModifiedTime (as taken from FTPFile.lastModifiedTime()) and had a problem 
where I would query a directory, save those two parameters for each of the 
files, then later on query the same directory (which in my test case has not 
changed any) and I would find that the FTPFile.lastModifiedTime() objects did 
not match. 

In looking furthur into it I found that the calendar objects returned by this 
function were off by a some random number of milliseconds, however it looked 
like the hour, minutes, and all other times of the calendar were correct, it 
was only the milliseconds.

Drilling furthur into the source code for the Commons FTP components I think I 
see what was overlooked to cause this condition.

In version 1.2.2 if you look at the UnixFTPEntryParser.java source (I believe 
this is the parser being used for my WSFTP server I am running, you can 
download this ftp server from download.com, I am using this for my development 
environment), looking on line 185 you have the following code:

            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.SECOND, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.HOUR_OF_DAY, 0);

I see that you are initially creating a new calendar instance, which, by 
default sets the calendar to the current time. Then you update the seconds, 
minutes, and hour of dat, however you are not initializing the miliseconds, 
hence the miliseconds vary between different instantiations of the same ftp 
entry.  This causes the Calendar.equals() function to indicate that the two 
times are different, though they should be equal.

If you add:
            cal.set(Calendar.MILLISECOND, 0);

I think you eliminate this problem.

Best regards,
David

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to