Allow specifying alternate path separator (for Windows SFTP implementations)

This commit is contained in:
Shikhar Bhushan
2011-05-15 11:56:40 +01:00
parent 4f7b29da0d
commit 2ff9f2ae50
3 changed files with 20 additions and 5 deletions

View File

@@ -19,11 +19,16 @@ import java.io.IOException;
public class PathHelper { public class PathHelper {
public static final String DEFAULT_SEPARATOR = "/";
private final SFTPEngine engine; private final SFTPEngine engine;
private final String separator;
private String dotDir; private String dotDir;
public PathHelper(SFTPEngine engine) { public PathHelper(SFTPEngine engine, String separator) {
this.engine = engine; this.engine = engine;
this.separator = separator;
} }
public PathComponents getComponents(String path) public PathComponents getComponents(String path)
@@ -31,7 +36,7 @@ public class PathHelper {
if (path.isEmpty() || path.equals(".")) if (path.isEmpty() || path.equals("."))
return getComponents(getDotDir()); return getComponents(getDotDir());
final int lastSlash = path.lastIndexOf("/"); final int lastSlash = path.lastIndexOf(separator);
if (lastSlash == -1) if (lastSlash == -1)
if (path.equals("..")) if (path.equals(".."))

View File

@@ -40,9 +40,13 @@ public class SFTPClient
private final PathHelper pathHelper; private final PathHelper pathHelper;
public SFTPClient(SFTPEngine engine) { public SFTPClient(SFTPEngine engine) {
this(engine, PathHelper.DEFAULT_SEPARATOR);
}
public SFTPClient(SFTPEngine engine, String separator) {
this.engine = engine; this.engine = engine;
this.pathHelper = new PathHelper(engine); this.pathHelper = new PathHelper(engine, separator);
this.xfer = new SFTPFileTransfer(engine); this.xfer = new SFTPFileTransfer(engine, pathHelper);
} }
public SFTPEngine getSFTPEngine() { public SFTPEngine getSFTPEngine() {

View File

@@ -40,9 +40,15 @@ public class SFTPFileTransfer
private volatile LocalFileFilter uploadFilter; private volatile LocalFileFilter uploadFilter;
private volatile RemoteResourceFilter downloadFilter; private volatile RemoteResourceFilter downloadFilter;
public SFTPFileTransfer(SFTPEngine engine, PathHelper pathHelper) {
this.engine = engine;
this.pathHelper = pathHelper;
}
@Deprecated
public SFTPFileTransfer(SFTPEngine engine) { public SFTPFileTransfer(SFTPEngine engine) {
this.engine = engine; this.engine = engine;
this.pathHelper = new PathHelper(engine); this.pathHelper = new PathHelper(engine, PathHelper.DEFAULT_SEPARATOR);
} }
@Override @Override