Author: imario Date: Fri Mar 25 11:43:39 2005 New Revision: 159052 URL: http://svn.apache.org/viewcvs?view=rev&rev=159052 Log: refactored filename parsing tests passed, though manual testing needet
Now every FileProvider can handle its own set of reserved characters through the *FileNameParser. This encoding is immediatley reflected in the FileName. Modified: jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java Modified: jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java?view=diff&r1=159051&r2=159052 ============================================================================== --- jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java (original) +++ jakarta/commons/sandbox/vfs/trunk/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java Fri Mar 25 11:43:39 2005 @@ -22,8 +22,11 @@ import org.apache.commons.vfs.FileObject; import org.apache.commons.vfs.FileSystemException; import org.apache.commons.vfs.FileType; +import org.apache.commons.vfs.RandomAccessContent; import org.apache.commons.vfs.provider.AbstractFileObject; +import org.apache.commons.vfs.provider.UriParser; import org.apache.commons.vfs.util.MonitorOutputStream; +import org.apache.commons.vfs.util.RandomAccessMode; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -39,7 +42,7 @@ * An SFTP file. * * @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a> - * @version $Revision$ $Date$ + * @version $Revision: 1.12 $ $Date$ */ public class SftpFileObject extends AbstractFileObject @@ -101,7 +104,7 @@ final ChannelSftp channel = fileSystem.getChannel(); try { - attrs = channel.stat(getName().getPath()); + attrs = channel.stat(getName().getPathDecoded()); } catch (final SftpException e) { @@ -129,7 +132,7 @@ final ChannelSftp channel = fileSystem.getChannel(); try { - channel.mkdir(getName().getPath()); + channel.mkdir(getName().getPathDecoded()); } finally { @@ -164,7 +167,7 @@ int newMTime = (int) (modtime / 1000L); attrs.setACMODTIME(attrs.getATime(), newMTime); - channel.setStat(getName().getPath(), attrs); + channel.setStat(getName().getPathDecoded(), attrs); } finally { @@ -183,11 +186,11 @@ { if (getType() == FileType.FILE) { - channel.rm(getName().getPath()); + channel.rm(getName().getPathDecoded()); } else { - channel.rmdir(getName().getPath()); + channel.rmdir(getName().getPathDecoded()); } } finally @@ -204,7 +207,7 @@ final ChannelSftp channel = fileSystem.getChannel(); try { - channel.rename(getName().getPath(), newfile.getName().getPath()); + channel.rename(getName().getPathDecoded(), newfile.getName().getPathDecoded()); } finally { @@ -223,7 +226,7 @@ final ChannelSftp channel = fileSystem.getChannel(); try { - vector = channel.ls(getName().getPath()); + vector = channel.ls(getName().getPathDecoded()); } finally { @@ -253,7 +256,7 @@ } children.add(name); } - return (String[]) children.toArray(new String[children.size()]); + return UriParser.encode((String[]) children.toArray(new String[children.size()])); } /** @@ -269,6 +272,46 @@ return attrs.getSize(); } + protected RandomAccessContent doGetRandomAccessContent(final RandomAccessMode mode) throws Exception + { + return new SftpRandomAccessContent(this, mode); + } + + /** + * Creates an input stream to read the file content from. + */ + InputStream getInputStream(long filePointer) throws IOException + { + throw new UnsupportedOperationException("Implemented. Yes. But have to wait for jsch release :-)"); + /* + final ChannelSftp channel = fileSystem.getChannel(); + try + { + // return channel.get(getName().getPath()); + // hmmm - using the in memory method is soooo much faster ... + + // TODO - Don't read the entire file into memory. Use the + // stream-based methods on ChannelSftp once they work properly + final ByteArrayOutputStream outstr = new ByteArrayOutputStream(); + try + { + channel.get(getName().getPathDecoded(), outstr, null, ChannelSftp.RESUME, filePointer); + } + catch (SftpException e) + { + throw new FileSystemException(e); + } + outstr.close(); + return new ByteArrayInputStream(outstr.toByteArray()); + + } + finally + { + fileSystem.putChannel(channel); + } + */ + } + /** * Creates an input stream to read the file content from. */ @@ -284,7 +327,7 @@ // TODO - Don't read the entire file into memory. Use the // stream-based methods on ChannelSftp once they work properly final ByteArrayOutputStream outstr = new ByteArrayOutputStream(); - channel.get(getName().getPath(), outstr); + channel.get(getName().getPathDecoded(), outstr); outstr.close(); return new ByteArrayInputStream(outstr.toByteArray()); @@ -332,7 +375,7 @@ { final ByteArrayOutputStream outstr = (ByteArrayOutputStream) out; channel.put(new ByteArrayInputStream(outstr.toByteArray()), - getName().getPath()); + getName().getPathDecoded()); } catch (final SftpException e) { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]