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);