Browse Source

Adapt Ant to use the new functionalities of commons-net 1.4.0 to enable greater configurability of the server:

Month names other than English, date formats other than the standard ones (such as all-numeric timestamps
on unix), and different server time zones can now be supported in Ant.
PR:30706, 33443
Obtained from:
Submitted by: Neeme Praks
Reviewed by: Steve Cohen
CVS: ----------------------------------------------------------------------
CVS: PR:
CVS:   If this change addresses a PR in the problem report tracking
CVS:   database, then enter the PR number(s) here.
CVS: Obtained from:
CVS:   If this change has been taken from another system, such as NCSA,
CVS:   then name the system in this line, otherwise delete it.
CVS: Submitted by:
CVS:   If this code has been contributed to Apache by someone else; i.e.,
CVS:   they sent us a patch or a new module, then include their name/email
CVS:   address here. If this is your work then delete this line.
CVS: Reviewed by:
CVS:   If we are doing pre-commit code reviews and someone else has
CVS:   reviewed your changes, include their name(s) here.
CVS:   If you have not had it reviewed then delete this line.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278251 13f79535-47bb-0310-9956-ffa450edef68
master
Steven M. Cohen 20 years ago
parent
commit
ce53f734e0
2 changed files with 119 additions and 2 deletions
  1. +1
    -2
      docs/manual/install.html
  2. +118
    -0
      src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java

+ 1
- 2
docs/manual/install.html View File

@@ -425,8 +425,7 @@ you need jakarta-oro 2.0.1 or later, and <a href="#commons-net">commons-net</a><
<td><a name="commons-net">commons-net.jar</td>
<td>ftp, rexec and telnet tasks<br>
jakarta-oro 2.0.1 or later is required in any case together with commons-net.<br>
For all users, a minimum version of commons-net of 1.2.2 is recommended. Earlier
versions did not support autodetection of system type or had significant bugs.
For all users, a minimum version of commons-net of 1.4.0 is now required.
</td>
<td><a href="http://jakarta.apache.org/commons/net/index.html"
target="_top">http://jakarta.apache.org/commons/net/index.html</a></td>


+ 118
- 0
src/main/org/apache/tools/ant/taskdefs/optional/net/FTP.java View File

@@ -17,6 +17,7 @@
package org.apache.tools.ant.taskdefs.optional.net;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import java.io.BufferedInputStream;
@@ -109,6 +110,13 @@ public class FTP
private boolean preserveLastModified = false;
private String chmod = null;
private String umask = null;
private String systemKeyConfig = null;
private String defaultDateFormatConfig = null;
private String recentDateFormatConfig = null;
private String serverLanguageCodeConfig = null;
private String serverTimeZoneConfig = null;
private String shortMonthNamesConfig = null;
private boolean isConfigurationSet = false;

protected static final String[] ACTION_STRS = {
"sending",
@@ -1243,6 +1251,76 @@ public class FTP
this.ignoreNoncriticalErrors = ignoreNoncriticalErrors;
}

private void configurationHasBeenSet() {
this.isConfigurationSet = true;
}

/**
* Method for setting <code>FTPClientConfig</code> remote system key.
*
* @param systemKeyConfig
* @see org.apache.commons.net.ftp.FTPClientConfig
*/
public void setSystemKeyConfig(String systemKey) {
this.systemKeyConfig = systemKey;
configurationHasBeenSet();
}

/**
* Delegate method for <code>FTPClientConfig.setDefaultDateFormatStr(String)</code>.
*
* @param defaultDateFormatConfig
* @see org.apache.commons.net.ftp.FTPClientConfig
*/
public void setDefaultDateFormatConfig(String defaultDateFormat) {
this.defaultDateFormatConfig = defaultDateFormat;
configurationHasBeenSet();
}

/**
* Delegate method for <code>FTPClientConfig.setRecentDateFormatStr(String)</code>.
*
* @param recentDateFormatConfig
* @see org.apache.commons.net.ftp.FTPClientConfig
*/
public void setRecentDateFormatConfig(String recentDateFormat) {
this.recentDateFormatConfig = recentDateFormat;
configurationHasBeenSet();
}

/**
* Delegate method for <code>FTPClientConfig.setServerLanguageCode(String)</code>.
*
* @param serverLanguageCodeConfig
* @see org.apache.commons.net.ftp.FTPClientConfig
*/
public void setServerLanguageCodeConfig(String serverLanguageCode) {
this.serverLanguageCodeConfig = serverLanguageCode;
configurationHasBeenSet();
}

/**
* Delegate method for <code>FTPClientConfig.setServerTimeZoneId(String)</code>.
*
* @param serverTimeZoneConfig
* @see org.apache.commons.net.ftp.FTPClientConfig
*/
public void setServerTimeZoneConfig(String serverTimeZoneId) {
this.serverTimeZoneConfig = serverTimeZoneId;
configurationHasBeenSet();
}

/**
* Delegate method for <code>FTPClientConfig.setShortMonthNames(String)</code>.
*
* @param shortMonthNamesConfig
* @see org.apache.commons.net.ftp.FTPClientConfig
*/
public void setShortMonthNamesConfig(String shortMonthNames) {
this.shortMonthNamesConfig = shortMonthNames;
configurationHasBeenSet();
}


/**
* Checks to see that all required parameters are set.
@@ -1945,6 +2023,45 @@ public class FTP
}
}

private void configure(FTPClient ftp) {
if (this.isConfigurationSet) {
FTPClientConfig config;
if (this.systemKeyConfig != null) {
config = new FTPClientConfig(this.systemKeyConfig);
log("custom config: system key = "
+ this.systemKeyConfig, Project.MSG_VERBOSE);
} else {
config = new FTPClientConfig();
}
if (this.defaultDateFormatConfig != null) {
config.setDefaultDateFormatStr(this.defaultDateFormatConfig);
log("custom config: default date format = "
+ this.defaultDateFormatConfig, Project.MSG_VERBOSE);
}
if (this.recentDateFormatConfig != null) {
config.setRecentDateFormatStr(this.recentDateFormatConfig);
log("custom config: recent date format = "
+ this.recentDateFormatConfig, Project.MSG_VERBOSE);
}
if (this.serverLanguageCodeConfig != null) {
config.setServerLanguageCode(this.serverLanguageCodeConfig);
log("custom config: server language code = "
+ this.serverLanguageCodeConfig, Project.MSG_VERBOSE);
}
if (this.serverTimeZoneConfig != null) {
config.setServerTimeZoneId(this.serverTimeZoneConfig);
log("custom config: server time zone ID = "
+ this.serverTimeZoneConfig, Project.MSG_VERBOSE);
}
if (this.shortMonthNamesConfig != null) {
config.setShortMonthNames(this.shortMonthNamesConfig);
log("custom config: short month names = "
+ this.shortMonthNamesConfig, Project.MSG_VERBOSE);
}
ftp.configure(config);
}
}

/**
* Runs the task.
*
@@ -1960,6 +2077,7 @@ public class FTP
log("Opening FTP connection to " + server, Project.MSG_VERBOSE);

ftp = new FTPClient();
configure(ftp);

ftp.connect(server, port);
if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {


Loading…
Cancel
Save