| @@ -425,7 +425,9 @@ 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.4.0 is now required. | |||
| For all users, a minimum version of commons-net of 1.4.0 is recommended. Earlier | |||
| versions did not support the full range of configuration options, and 1.4.0 is needed | |||
| to compile Ant. | |||
| </td> | |||
| <td><a href="http://jakarta.apache.org/commons/net/index.html" | |||
| target="_top">http://jakarta.apache.org/commons/net/index.html</a></td> | |||
| @@ -17,7 +17,6 @@ | |||
| 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; | |||
| @@ -1322,12 +1321,48 @@ public class FTP | |||
| } | |||
| /** | |||
| * @return Returns the systemKeyConfig. | |||
| */ | |||
| String getSystemKeyConfig() { | |||
| return systemKeyConfig; | |||
| } | |||
| /** | |||
| * @return Returns the defaultDateFormatConfig. | |||
| */ | |||
| String getDefaultDateFormatConfig() { | |||
| return defaultDateFormatConfig; | |||
| } | |||
| /** | |||
| * @return Returns the recentDateFormatConfig. | |||
| */ | |||
| String getRecentDateFormatConfig() { | |||
| return recentDateFormatConfig; | |||
| } | |||
| /** | |||
| * @return Returns the serverLanguageCodeConfig. | |||
| */ | |||
| String getServerLanguageCodeConfig() { | |||
| return serverLanguageCodeConfig; | |||
| } | |||
| /** | |||
| * @return Returns the serverTimeZoneConfig. | |||
| */ | |||
| String getServerTimeZoneConfig() { | |||
| return serverTimeZoneConfig; | |||
| } | |||
| /** | |||
| * @return Returns the shortMonthNamesConfig. | |||
| */ | |||
| String getShortMonthNamesConfig() { | |||
| return shortMonthNamesConfig; | |||
| } | |||
| /** | |||
| * Checks to see that all required parameters are set. | |||
| * | |||
| * @throws BuildException if the configuration is not valid. | |||
| */ | |||
| protected void checkConfiguration() throws BuildException { | |||
| protected void checkAttributes() throws BuildException { | |||
| if (server == null) { | |||
| throw new BuildException("server attribute must be set!"); | |||
| } | |||
| @@ -1352,6 +1387,15 @@ public class FTP | |||
| throw new BuildException("chmod attribute must be set for chmod " | |||
| + "action!"); | |||
| } | |||
| if (this.isConfigurationSet) { | |||
| try { | |||
| Class.forName("org.apache.commons.net.ftp.FTPClientConfig"); | |||
| } catch (ClassNotFoundException e) { | |||
| throw new BuildException( | |||
| "commons-net.jar >= 1.4.0 is required for at least one of the attributes specified."); | |||
| } | |||
| } | |||
| } | |||
| @@ -2025,40 +2069,7 @@ 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); | |||
| FTPConfigurator.configure(ftp, this); | |||
| } | |||
| } | |||
| @@ -2069,7 +2080,7 @@ public class FTP | |||
| * correctly. | |||
| */ | |||
| public void execute() throws BuildException { | |||
| checkConfiguration(); | |||
| checkAttributes(); | |||
| FTPClient ftp = null; | |||
| @@ -0,0 +1,88 @@ | |||
| /* | |||
| * Copyright 2005 The Apache Software Foundation | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| * | |||
| */ | |||
| 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.tools.ant.Project; | |||
| /** | |||
| * The sole purpose of this class is (note that it is package-private | |||
| * is to serve as a separate, static compilation unit for importing | |||
| * FTPClientConfig, to enable users who wish to use the FTP task | |||
| * without using its new features to avoid the need to | |||
| * upgrade to jakarta-commons-net 1.4.0, where FTPClientConfig was | |||
| * introduced. | |||
| */ | |||
| class FTPConfigurator { | |||
| /** | |||
| * configures the supplied FTPClient with the various | |||
| * attributes set in the supplied FTP task. | |||
| * @param client the FTPClient to be configured | |||
| * @param task the FTP task whose attributes are used to | |||
| * configure the client | |||
| * @return the client as configured. | |||
| */ | |||
| static FTPClient configure(FTPClient client, FTP task) { | |||
| FTPClientConfig config; | |||
| String systemKeyConfig = task.getSystemKeyConfig(); | |||
| if (systemKeyConfig != null) { | |||
| config = new FTPClientConfig(systemKeyConfig); | |||
| task.log("custom config: system key = " | |||
| + systemKeyConfig, Project.MSG_VERBOSE); | |||
| } else { | |||
| config = new FTPClientConfig(); | |||
| } | |||
| String defaultDateFormatConfig = task.getDefaultDateFormatConfig(); | |||
| if (defaultDateFormatConfig != null) { | |||
| config.setDefaultDateFormatStr(defaultDateFormatConfig); | |||
| task.log("custom config: default date format = " | |||
| + defaultDateFormatConfig, Project.MSG_VERBOSE); | |||
| } | |||
| String recentDateFormatConfig = task.getRecentDateFormatConfig(); | |||
| if (recentDateFormatConfig != null) { | |||
| config.setRecentDateFormatStr(recentDateFormatConfig); | |||
| task.log("custom config: recent date format = " | |||
| + recentDateFormatConfig, Project.MSG_VERBOSE); | |||
| } | |||
| String serverLanguageCodeConfig = task.getServerLanguageCodeConfig(); | |||
| if (serverLanguageCodeConfig != null) { | |||
| config.setServerLanguageCode(serverLanguageCodeConfig); | |||
| task.log("custom config: server language code = " | |||
| + serverLanguageCodeConfig, Project.MSG_VERBOSE); | |||
| } | |||
| String serverTimeZoneConfig = task.getServerTimeZoneConfig(); | |||
| if (serverTimeZoneConfig != null) { | |||
| config.setServerTimeZoneId(serverTimeZoneConfig); | |||
| task.log("custom config: server time zone ID = " | |||
| + serverTimeZoneConfig, Project.MSG_VERBOSE); | |||
| } | |||
| String shortMonthNamesConfig = task.getShortMonthNamesConfig(); | |||
| if (shortMonthNamesConfig != null) { | |||
| config.setShortMonthNames(shortMonthNamesConfig); | |||
| task.log("custom config: short month names = " | |||
| + shortMonthNamesConfig, Project.MSG_VERBOSE); | |||
| } | |||
| client.configure(config); | |||
| return client; | |||
| } | |||
| } | |||