DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=29699>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=29699

ftp task erronously assumes FTPClient.listFiles() returns an array of length > 0

           Summary: ftp task erronously assumes FTPClient.listFiles()
                    returns an array of length > 0
           Product: Ant
           Version: 1.6.1
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Optional Tasks
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]
                CC: [EMAIL PROTECTED]


Please see
http://issues.apache.org/bugzilla/show_bug.cgi?id=29650

That bug was originally about a defect that had already been addressed in
commons-net and so it was marked as a duplicate of another bug.  However, in the
process of discussion, a different issue was raised for which I am creating a
separate bug.

This ant script

Ant script:
                <ftp
                        action="list" 
                        server="${ftp.host}" 
                        userid="${ftp.login}" 
                        password="${ftp.password}" 
                        verbose="yes"
                        listing="xsl/listing.txt"
                >
                
                        <fileset>
                                <include name="**/*"/>

                        </fileset>
                
        </ftp>

produces this output:

BUILD FAILED
java.lang.ArrayIndexOutOfBoundsException: 0
        at org.apache.tools.ant.taskdefs.optional.net.FTP.listFile(FTP.java:1856
)
        at org.apache.tools.ant.taskdefs.optional.net.FTP.transferFiles(FTP.java
:1345)
        at org.apache.tools.ant.taskdefs.optional.net.FTP.transferFiles(FTP.java
:1388)
        at org.apache.tools.ant.taskdefs.optional.net.FTP.execute(FTP.java:2016)

        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:301)
        at org.apache.tools.ant.Target.performTasks(Target.java:328)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1215)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1063)
        at org.apache.tools.ant.Main.runBuild(Main.java:632)
        at org.apache.tools.ant.Main.startAnt(Main.java:183)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:197)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:56)

Total time: 1 minute 16 seconds
java.lang.ArrayIndexOutOfBoundsException: 0
        at org.apache.tools.ant.taskdefs.optional.net.FTP.listFile(FTP.java:1856
)
        at org.apache.tools.ant.taskdefs.optional.net.FTP.transferFiles(FTP.java
:1345)
        at org.apache.tools.ant.taskdefs.optional.net.FTP.transferFiles(FTP.java
:1388)
        at org.apache.tools.ant.taskdefs.optional.net.FTP.execute(FTP.java:2016)

        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:301)
        at org.apache.tools.ant.Target.performTasks(Target.java:328)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1215)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1063)
        at org.apache.tools.ant.Main.runBuild(Main.java:632)
        at org.apache.tools.ant.Main.startAnt(Main.java:183)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:197)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:56)

What I think is happening is that there are some empty directories to be found
under the tree when **/* is the specified filelist.  Since commons-net list
files does not handle recursive listings, ant must be processing each directory
found under the root of this tree separately.  The Ant code 

        FTPFile ftpfile = ftp.listFiles(resolveFile(filename))[0]; 

seems to be making an assumption that an array with a length of at least 1 will
be returned, but in actuality it is quite possible for a 0-length array to be
returned by listFiles().

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to