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]