diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServer.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServer.java index 8f3bfa209be9c5f924acbbf774d7c1dc5a8f015f..95fac237ab66851bfcce9946cea70012e1bd8a2f 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServer.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpServer.java @@ -294,6 +294,7 @@ public class FtpServer implements FileSystemFactory, org.apache.sshd.server.File private final FileSystemView fileView; private final String path; private final List<InputStream> inputStreams = new ArrayList<InputStream>(); + private FtpFile file; FileView(FileSystemView fileView, String path) { @@ -303,13 +304,17 @@ public class FtpServer implements FileSystemFactory, org.apache.sshd.server.File private FtpFile getFile() { - try - { - return fileView.getFile(path); - } catch (FtpException ex) + if (file == null) { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); + try + { + file = fileView.getFile(path); + } catch (FtpException ex) + { + throw CheckedExceptionTunnel.wrapIfNecessary(ex); + } } + return file; } public String getAbsolutePath() @@ -406,9 +411,9 @@ public class FtpServer implements FileSystemFactory, org.apache.sshd.server.File { List<FtpFile> files = getFile().listFiles(); List<SshFile> result = new ArrayList<SshFile>(); - for (FtpFile file : files) + for (FtpFile child : files) { - result.add(new FileView(fileView, file.getAbsolutePath())); + result.add(new FileView(fileView, child.getAbsolutePath())); } return result; }