scohen      2005/05/22 11:48:42

  Modified:    src/main/org/apache/tools/ant/taskdefs/optional/net FTP.java
               src/etc/testcases/taskdefs/optional/net ftp.xml
  Log:
  Add new timestampGranularity attribute to account for the typical case in PUT 
operations where the client
  is HH:mm:ss and the ftp server is HH:mm.
  
  Revision  Changes    Path
  1.74      +56 -4     
ant/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java
  
  Index: FTP.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java,v
  retrieving revision 1.73
  retrieving revision 1.74
  diff -u -r1.73 -r1.74
  --- FTP.java  21 May 2005 13:02:02 -0000      1.73
  +++ FTP.java  22 May 2005 18:48:42 -0000      1.74
  @@ -81,6 +81,11 @@
       protected static final int RM_DIR = 6;
       /** return code of ftp - not implemented in commons-net version 1.0 */
       private static final int CODE_521 = 521;
  +    
  +    /** adjust uptodate calculations where server timestamps are HH:mm and 
client's
  +     * are HH:mm:ss */
  +    private static final long GRANULARITY_MINUTE = 60000L;
  +    
       /** Default port for FTP */
       public static final int DEFAULT_FTP_PORT = 21;
   
  @@ -115,6 +120,8 @@
       private String serverLanguageCodeConfig = null;
       private String serverTimeZoneConfig = null;
       private String shortMonthNamesConfig = null;
  +    private String timestampGranularity = null;
  +    private long serverTimestampGranularity = 0L;
       private boolean isConfigurationSet = false;
   
       protected static final String[] ACTION_STRS = {
  @@ -1387,6 +1394,21 @@
           return shortMonthNamesConfig;
       }
       /**
  +     * @return Returns the timestampGranularity.
  +     */
  +    String getTimestampGranularity() {
  +        return timestampGranularity;
  +    }
  +    /**
  +     * @param timestampGranularity The timestampGranularity to set.
  +     */
  +    public void setTimestampGranularity(String timestampGranularity) {
  +        if (null == timestampGranularity || "".equals(timestampGranularity)) 
{
  +            return;
  +        }
  +        this.timestampGranularity = timestampGranularity;
  +     }
  +    /**
        * Checks to see that all required parameters are set.
        *
        * @throws BuildException if the configuration is not valid.
  @@ -1493,7 +1515,32 @@
                   for (int i = dsfiles.length - 1; i >= 0; i--) {
                       rmDir(ftp, dsfiles[i]);
                   }
  -            }   else {
  +            } else {
  +                if (this.newerOnly) {
  +                     if (action == SEND_FILES) {
  +                         if 
("NONE".equalsIgnoreCase(this.timestampGranularity)) 
  +                         {
  +                             this.serverTimestampGranularity = 0L;
  +                         }
  +                         else if 
("MINUTE".equalsIgnoreCase(this.timestampGranularity)) 
  +                         {
  +                             this.serverTimestampGranularity = 
GRANULARITY_MINUTE;
  +                         } 
  +                         else 
  +                         {
  +                             this.serverTimestampGranularity = 
GRANULARITY_MINUTE;
  +                         }
  +                     } else if (action == GET_FILES) {
  +                         if 
("MINUTE".equalsIgnoreCase(this.timestampGranularity)) 
  +                         {
  +                             this.serverTimestampGranularity = 
GRANULARITY_MINUTE;
  +                         }
  +                         else 
  +                         {
  +                             this.serverTimestampGranularity = 0L;
  +                         }
  +                     }
  +                }
                   for (int i = 0; i < dsfiles.length; i++) {
                       switch (action) {
                           case SEND_FILES:
  @@ -1749,11 +1796,16 @@
   
           long remoteTimestamp = files[0].getTimestamp().getTime().getTime();
           long localTimestamp = localFile.lastModified();
  -
           if (this.action == SEND_FILES) {
  -            return remoteTimestamp + timeDiffMillis >= localTimestamp;
  +            return remoteTimestamp 
  +                     + this.timeDiffMillis 
  +                     + this.serverTimestampGranularity 
  +             >= localTimestamp;
           } else {
  -            return localTimestamp >= remoteTimestamp + timeDiffMillis;
  +            return localTimestamp 
  +             >= remoteTimestamp 
  +                     + this.timeDiffMillis
  +                     + this.serverTimestampGranularity;
           }
       }
   
  
  
  
  1.10      +2 -3      ant/src/etc/testcases/taskdefs/optional/net/ftp.xml
  
  Index: ftp.xml
  ===================================================================
  RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/optional/net/ftp.xml,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ftp.xml   22 May 2005 02:58:47 -0000      1.9
  +++ ftp.xml   22 May 2005 18:48:42 -0000      1.10
  @@ -142,10 +142,10 @@
   
       <target name="timed.test.put.older">
           <tstamp>
  -            <format property="five.minutes.older" pattern="${tstamp.format}" 
offset="-5" unit="minute"/>
  +            <format property="one.minute.older" pattern="${tstamp.format}" 
offset="-60" unit="second"/>
           </tstamp>
   
  -        <touch datetime="${five.minutes.older}" pattern="${tstamp.format}" 
verbose="true">
  +        <touch datetime="${one.minute.older}" pattern="${tstamp.format}" 
verbose="true">
               <fileset dir="${tmp.remote}">
                   <include name="A.timed"/>
               </fileset>
  @@ -156,7 +156,6 @@
               password="${ftp.password}"
               separator="${ftp.filesep}"
               remotedir="${tmp.remote}"
  -            timediffmillis="${server.timestamp.granularity.millis}" 
               newer="true"
               serverTimeZoneConfig="${ftp.server.timezone}"
               >
  
  
  

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

Reply via email to