You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by im...@apache.org on 2004/06/30 21:06:39 UTC
cvs commit: jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/impl VirtualFileSystem.java
imario 2004/06/30 12:06:39
Modified: vfs/src/java/org/apache/commons/vfs/provider
AbstractFileObject.java AbstractFileSystem.java
vfs/src/java/org/apache/commons/vfs Capability.java
FileSystem.java
vfs/src/java/org/apache/commons/vfs/provider/local
DefaultLocalFileProvider.java
vfs/src/java/org/apache/commons/vfs/provider/ftp
FtpFileProvider.java
vfs/src/test/org/apache/commons/vfs/test
LastModifiedTests.java
vfs/src/java/org/apache/commons/vfs/provider/sftp
SftpFileProvider.java SftpFileSystem.java
vfs/src/java/org/apache/commons/vfs/impl
VirtualFileSystem.java
Log:
PR: 29469
Submitted By: rami.ojares -at- elisa.fi (Rami Ojares)
Not fully implemented yet (the main part is missing in this commit as we have to wait for the jsch-0.1.16 release)
Modified to honor the fact that sftp (jsch) cant set the lastmodtime on folders.
Split Capability.SET_LAST_MODIFICATION_TIME into
Capability.SET_LAST_MODIFICATION_TIME_FILE and
Capability.SET_LAST_MODIFICATION_TIME_FOLDER
Added a getLastModTimeAccuracy, mainly for the testcase-check.
Revision Changes Path
1.48 +2 -1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/AbstractFileObject.java
Index: AbstractFileObject.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/AbstractFileObject.java,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- AbstractFileObject.java 23 Jun 2004 18:17:44 -0000 1.47
+++ AbstractFileObject.java 30 Jun 2004 19:06:38 -0000 1.48
@@ -856,7 +856,8 @@
destFile.copyFrom(this, Selectors.SELECT_SELF);
- if (destFile.getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED) &&
+ if (((destFile.getType() == FileType.FILE && destFile.getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FILE)) ||
+ (destFile.getType() == FileType.FOLDER && destFile.getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FOLDER))) &&
getFileSystem().hasCapability(Capability.GET_LAST_MODIFIED))
{
destFile.getContent().setLastModifiedTime(this.getContent().getLastModifiedTime());
1.27 +10 -0 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/AbstractFileSystem.java
Index: AbstractFileSystem.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/AbstractFileSystem.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- AbstractFileSystem.java 17 May 2004 20:13:20 -0000 1.26
+++ AbstractFileSystem.java 30 Jun 2004 19:06:38 -0000 1.27
@@ -286,6 +286,16 @@
}
/**
+ * Returns the accuracy of the last modification time
+ *
+ * @return ms 0 perfectly accurate, >0 might be off by this value e.g. sftp 1000ms
+ */
+ public double getLastModTimeAccuracy()
+ {
+ return 0;
+ }
+
+ /**
* Creates a temporary local copy of a file and its descendents.
*/
protected File doReplicateFile(final FileObject file,
1.12 +7 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/Capability.java
Index: Capability.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/Capability.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- Capability.java 17 Jun 2004 19:29:28 -0000 1.11
+++ Capability.java 30 Jun 2004 19:06:38 -0000 1.12
@@ -66,7 +66,12 @@
/**
* File set last-modified time is supported.
*/
- public static final Capability SET_LAST_MODIFIED = new Capability("SET_LAST_MODIFIED");
+ public static final Capability SET_LAST_MODIFIED_FILE = new Capability("SET_LAST_MODIFIED_FILE");
+
+ /**
+ * folder set last-modified time is supported.
+ */
+ public static final Capability SET_LAST_MODIFIED_FOLDER = new Capability("SET_LAST_MODIFIED_FOLDER");
/**
* File content signing is supported.
1.17 +8 -1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/FileSystem.java
Index: FileSystem.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/FileSystem.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- FileSystem.java 21 May 2004 20:43:29 -0000 1.16
+++ FileSystem.java 30 Jun 2004 19:06:38 -0000 1.17
@@ -160,4 +160,11 @@
* Returns a reference to the FileSytemManager
*/
FileSystemManager getFileSystemManager();
+
+ /**
+ * Returns the accuracy of the last modification time
+ *
+ * @return ms 0 perfectly accurate, >0 might be off by this value e.g. sftp 1000ms
+ */
+ double getLastModTimeAccuracy();
}
1.9 +3 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/local/DefaultLocalFileProvider.java
Index: DefaultLocalFileProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/local/DefaultLocalFileProvider.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DefaultLocalFileProvider.java 17 Jun 2004 19:29:28 -0000 1.8
+++ DefaultLocalFileProvider.java 30 Jun 2004 19:06:38 -0000 1.9
@@ -47,7 +47,8 @@
Capability.RENAME,
Capability.GET_TYPE,
Capability.GET_LAST_MODIFIED,
- Capability.SET_LAST_MODIFIED,
+ Capability.SET_LAST_MODIFIED_FILE,
+ Capability.SET_LAST_MODIFIED_FOLDER,
Capability.LIST_CHILDREN,
Capability.READ_CONTENT,
Capability.URI,
1.9 +3 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/ftp/FtpFileProvider.java
Index: FtpFileProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/ftp/FtpFileProvider.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- FtpFileProvider.java 26 May 2004 08:20:27 -0000 1.8
+++ FtpFileProvider.java 30 Jun 2004 19:06:38 -0000 1.9
@@ -49,7 +49,8 @@
Capability.GET_TYPE,
Capability.LIST_CHILDREN,
Capability.READ_CONTENT,
- Capability.SET_LAST_MODIFIED,
+ Capability.SET_LAST_MODIFIED_FILE,
+ Capability.SET_LAST_MODIFIED_FOLDER,
Capability.GET_LAST_MODIFIED,
Capability.URI,
Capability.WRITE_CONTENT,
1.5 +15 -14 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/LastModifiedTests.java
Index: LastModifiedTests.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/LastModifiedTests.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- LastModifiedTests.java 10 May 2004 20:09:44 -0000 1.4
+++ LastModifiedTests.java 30 Jun 2004 19:06:38 -0000 1.5
@@ -57,21 +57,22 @@
*/
public void testSetLastModified() throws Exception
{
- if (!getReadFolder().getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED))
- {
- // Can't set last modified
- return;
- }
final long now = System.currentTimeMillis();
- // Try a file
- final FileObject file = getReadFolder().resolveFile("file1.txt");
- file.getContent().setLastModifiedTime(now);
- assertEquals(now, file.getContent().getLastModifiedTime());
+ if (getReadFolder().getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FILE))
+ {
+ // Try a file
+ final FileObject file = getReadFolder().resolveFile("file1.txt");
+ file.getContent().setLastModifiedTime(now);
+ assertEquals(now, file.getContent().getLastModifiedTime(), file.getFileSystem().getLastModTimeAccuracy());
+ }
- // Try a folder
- final FileObject folder = getReadFolder().resolveFile("dir1");
- folder.getContent().setLastModifiedTime(now);
- assertEquals(now, folder.getContent().getLastModifiedTime());
+ if (getReadFolder().getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FOLDER))
+ {
+ // Try a folder
+ final FileObject folder = getReadFolder().resolveFile("dir1");
+ folder.getContent().setLastModifiedTime(now);
+ assertEquals(now, folder.getContent().getLastModifiedTime(), folder.getFileSystem().getLastModTimeAccuracy());
+ }
}
}
1.13 +4 -3 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/sftp/SftpFileProvider.java
Index: SftpFileProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/sftp/SftpFileProvider.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- SftpFileProvider.java 27 May 2004 19:09:37 -0000 1.12
+++ SftpFileProvider.java 30 Jun 2004 19:06:38 -0000 1.13
@@ -31,7 +31,7 @@
/**
* A provider for accessing files over SFTP.
- *
+ *
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @author Gary D. Gregory
* @version $Id$
@@ -48,7 +48,8 @@
Capability.READ_CONTENT,
Capability.URI,
Capability.WRITE_CONTENT,
- Capability.GET_LAST_MODIFIED
+ Capability.GET_LAST_MODIFIED,
+ Capability.SET_LAST_MODIFIED_FILE
}));
public final static String ATTR_USER_INFO = "UI";
1.12 +11 -1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/sftp/SftpFileSystem.java
Index: SftpFileSystem.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/sftp/SftpFileSystem.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- SftpFileSystem.java 27 May 2004 19:09:37 -0000 1.11
+++ SftpFileSystem.java 30 Jun 2004 19:06:38 -0000 1.12
@@ -146,4 +146,14 @@
{
return new SftpFileObject(name, this);
}
+
+ /**
+ * last mod time is only a int and in seconds, thus can be off by 999
+ *
+ * @return 1000
+ */
+ public double getLastModTimeAccuracy()
+ {
+ return 1000L;
+ }
}
1.16 +3 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/impl/VirtualFileSystem.java
Index: VirtualFileSystem.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/impl/VirtualFileSystem.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- VirtualFileSystem.java 10 May 2004 20:09:47 -0000 1.15
+++ VirtualFileSystem.java 30 Jun 2004 19:06:38 -0000 1.16
@@ -59,7 +59,8 @@
caps.add(Capability.GET_TYPE);
caps.add(Capability.JUNCTIONS);
caps.add(Capability.GET_LAST_MODIFIED);
- caps.add(Capability.SET_LAST_MODIFIED);
+ caps.add(Capability.SET_LAST_MODIFIED_FILE);
+ caps.add(Capability.SET_LAST_MODIFIED_FOLDER);
caps.add(Capability.LIST_CHILDREN);
caps.add(Capability.READ_CONTENT);
caps.add(Capability.SIGNING);
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org