You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2011/02/25 23:20:51 UTC
svn commit: r1074720 - in /commons/proper/net/trunk/src: changes/changes.xml
main/java/org/apache/commons/net/ftp/FTPClient.java
Author: sebb
Date: Fri Feb 25 22:20:50 2011
New Revision: 1074720
URL: http://svn.apache.org/viewvc?rev=1074720&view=rev
Log:
NET-332 Commons net ftp cannot handle unknown type parser and should allow override of parser through vm argument.
Modified:
commons/proper/net/trunk/src/changes/changes.xml
commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java
Modified: commons/proper/net/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/changes/changes.xml?rev=1074720&r1=1074719&r2=1074720&view=diff
==============================================================================
--- commons/proper/net/trunk/src/changes/changes.xml (original)
+++ commons/proper/net/trunk/src/changes/changes.xml Fri Feb 25 22:20:50 2011
@@ -52,6 +52,10 @@ The <action> type attribute can be add,u
<body>
<release version="2.3" date="TBA" description="TBA">
+ <action issue="NET-332" dev="sebb" type="add">
+ Commons net ftp cannot handle unknown type parser and should allow override of parser through vm argument.
+ The system property "org.apache.commons.net.ftp.systemType" can be used to provide the system type.
+ </action>
<action issue="NET-360" dev="sebb" type="fix">
DefaultFTPFileEntryParserFactory.createFileEntryParser(String key) always tries to load a class.
</action>
Modified: commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java
URL: http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java?rev=1074720&r1=1074719&r2=1074720&view=diff
==============================================================================
--- commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java (original)
+++ commons/proper/net/trunk/src/main/java/org/apache/commons/net/ftp/FTPClient.java Fri Feb 25 22:20:50 2011
@@ -237,6 +237,11 @@ import org.apache.commons.net.io.Util;
public class FTPClient extends FTP
implements Configurable
{
+ /**
+ * The system property ({@value}) which can be used to override the system type.
+ */
+ public static final String FTP_SYSTEM_TYPE = "org.apache.commons.net.ftp.systemType";
+
/***
* A constant indicating the FTP session is expecting all transfers
* to occur between the client (local) and server and that the server
@@ -2538,8 +2543,9 @@ implements Configurable
* @param parserKey A string representing a designated code or fully-qualified
* class name of an <code> FTPFileEntryParser </code> that should be
* used to parse each server file listing.
- * May be {@code null}, in which case the {@link #getSystemType()}
- * is used to provide the value.
+ * May be {@code null}, in which case the code checks first
+ * the system property {@link #FTP_SYSTEM_TYPE}, and if that is
+ * not defined the SYST command is used to provide the value.
*
* @return A FTPListParseEngine object that holds the raw information and
* is capable of providing parsed FTPFile objects, one for each file
@@ -2592,9 +2598,13 @@ implements Configurable
__entryParserKey = __configuration.getServerSystemKey();
} else {
// if a parserKey hasn't been supplied, and a configuration
- // hasn't been supplied, then autodetect by calling
+ // hasn't been supplied, and the override property is not set
+ // then autodetect by calling
// the SYST command and use that to choose the parser.
- final String systemType = getSystemType(); // cannot be null
+ String systemType = System.getProperty(FTP_SYSTEM_TYPE);
+ if (systemType == null) {
+ systemType = getSystemType(); // cannot be null
+ }
__entryParser =
__parserFactory.createFileEntryParser(systemType);
__entryParserKey = systemType;