NET-609 - DefaultUnixFTPFileEntryParserFactory Issue (leading spaces removal configuration)
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/net/trunk@1781925 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index c47ed76..2a42c65 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -64,6 +64,9 @@
<body>
<release version="3.6" date="TBA" description="">
+ <action issue="NET-609" type="fix" dev="sebb" due-to="Tqup3">
+ DefaultUnixFTPFileEntryParserFactory Issue (leading spaces removal configuration)
+ </action>
<action type="update" dev="sebb">
POP3Mail example: support host port; allow reading password from Console/stdin/environment
</action>
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.java b/src/main/java/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.java
index f4d0df0..75f2001 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.java
@@ -121,14 +121,15 @@
if (parser == null) { // Now try for aliases
String ukey = key.toUpperCase(java.util.Locale.ENGLISH);
- if (ukey.indexOf(FTPClientConfig.SYST_UNIX) >= 0)
- {
- parser = new UnixFTPEntryParser(config, false);
- }
- else if (ukey.indexOf(FTPClientConfig.SYST_UNIX_TRIM_LEADING) >= 0)
+ if (ukey.indexOf(FTPClientConfig.SYST_UNIX_TRIM_LEADING) >= 0)
{
parser = new UnixFTPEntryParser(config, true);
}
+ // must check this after SYST_UNIX_TRIM_LEADING as it is a substring of it
+ else if (ukey.indexOf(FTPClientConfig.SYST_UNIX) >= 0)
+ {
+ parser = new UnixFTPEntryParser(config, false);
+ }
else if (ukey.indexOf(FTPClientConfig.SYST_VMS) >= 0)
{
parser = new VMSVersioningFTPEntryParser(config);
diff --git a/src/main/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java b/src/main/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
index 3e70ebd..7520b66 100644
--- a/src/main/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
+++ b/src/main/java/org/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
@@ -148,7 +148,7 @@
// if true, leading spaces are trimmed from file names
// this was the case for the original implementation
- private final boolean trimLeadingSpaces;
+ final boolean trimLeadingSpaces; // package protected for access from test code
/**
* The default constructor for a UnixFTPEntryParser object.
diff --git a/src/test/java/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactoryTest.java b/src/test/java/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactoryTest.java
index 609d0b7..0bcb6e6 100644
--- a/src/test/java/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactoryTest.java
+++ b/src/test/java/org/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactoryTest.java
@@ -32,6 +32,11 @@
parser = factory.createFileEntryParser("UNIX");
assertTrue(parser instanceof UnixFTPEntryParser);
+ assertFalse(((UnixFTPEntryParser)parser).trimLeadingSpaces);
+
+ parser = factory.createFileEntryParser("UNIX_LTRIM");
+ assertTrue(parser instanceof UnixFTPEntryParser);
+ assertTrue(((UnixFTPEntryParser)parser).trimLeadingSpaces);
parser = factory.createFileEntryParser("Unix");
assertTrue(parser instanceof UnixFTPEntryParser);