ProvidedExtensions.getDeleteHandler
was added.
+ ProvidedExtensions.getDeleteHandler
was added, which
+ is the way how to impose handlers for
+ deleting into mastersfs implementation
+ which was required by module org.netbeans.modules.subversion.
+
DeleteHandler
is used by
+ * MasterFileSystem
+ *
+ * @param f file or folder to be deleted
+ * @return instance of {@link ProvidedExtensions.DeleteHandler}
+ * that is responsible for deleting the file or null
+ */
+ public ProvidedExtensions.DeleteHandler getDeleteHandler(File f) {
+ return null;
+ }
public interface IOHandler {
@@ -80,6 +95,19 @@
*/
void handle() throws IOException;
}
+
+ public interface DeleteHandler {
+ /**
+ * Deletes the file or directory denoted by this abstract pathname. If
+ * this pathname denotes a directory, then the directory must be empty in
+ * order to be deleted.
+ *
+ * @return true
if and only if the file or directory is
+ * successfully deleted; false
otherwise
+ */
+ boolean delete(File file);
+ }
+
public void createSuccess(FileObject fo) {}
public void createFailure(FileObject parent, String name, boolean isFolder) {}
Index: test/unit/src/org/netbeans/modules/masterfs/CacheTest.java
===================================================================
RCS file: /cvs/openide/masterfs/test/unit/src/org/netbeans/modules/masterfs/CacheTest.java,v
retrieving revision 1.4
diff -u -r1.4 CacheTest.java
--- test/unit/src/org/netbeans/modules/masterfs/CacheTest.java 1 Jul 2006 09:08:49 -0000 1.4
+++ test/unit/src/org/netbeans/modules/masterfs/CacheTest.java 1 Aug 2006 09:53:22 -0000
@@ -22,9 +22,8 @@
import java.io.File;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.List;
import org.netbeans.junit.NbTestCase;
+import org.netbeans.modules.masterfs.providers.ProvidedExtensionsTest;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
@@ -58,7 +57,9 @@
testFo.getFileSystem().findResource(testFo.getPath());
FileObject testFo2 = Cache.getDefault().getValidOrInvalid(((MasterFileObject)testFo).getResource());
- assertFalse(testFo2.isValid());
+ if (!ProvidedExtensionsTest.ProvidedExtensionsImpl.isImplsDeleteRetVal()) {
+ assertFalse(testFo2.isValid());
+ }
assertEquals(testFo, testFo2);
}
Index: test/unit/src/org/netbeans/modules/masterfs/MasterFileObjectTestHid.java
===================================================================
RCS file: /cvs/openide/masterfs/test/unit/src/org/netbeans/modules/masterfs/MasterFileObjectTestHid.java,v
retrieving revision 1.32
diff -u -r1.32 MasterFileObjectTestHid.java
--- test/unit/src/org/netbeans/modules/masterfs/MasterFileObjectTestHid.java 1 Jul 2006 09:08:49 -0000 1.32
+++ test/unit/src/org/netbeans/modules/masterfs/MasterFileObjectTestHid.java 1 Aug 2006 09:53:22 -0000
@@ -37,6 +37,7 @@
import javax.swing.filechooser.FileSystemView;
import org.netbeans.modules.masterfs.filebasedfs.fileobjects.WriteLockUtils;
+import org.netbeans.modules.masterfs.providers.ProvidedExtensionsTest;
public class MasterFileObjectTestHid extends TestBaseHid{
private FileObject root;
@@ -443,8 +444,10 @@
}
});
- assertNotNull(fo.getFileObject("newchild.txt"));
- assertTrue(list.size() == 1);
+ if (!ProvidedExtensionsTest.ProvidedExtensionsImpl.isImplsDeleteRetVal()) {
+ assertNotNull(fo.getFileObject("newchild.txt"));
+ assertTrue(list.size() == 1);
+ }
fo.removeFileChangeListener(fcl);
}
@@ -547,10 +550,12 @@
MountTable mt = MountTable.getDefault();
mt.mount(mountFile.getAbsolutePath(), ifs);
-
- mountDir.delete();
- assertTrue(!mountDir.isValid());
- assertNull(root.getFileObject("testdir/mountdir"));
+
+ if (!ProvidedExtensionsTest.ProvidedExtensionsImpl.isImplsDeleteRetVal()) {
+ mountDir.delete();
+ assertTrue(!mountDir.isValid());
+ assertNull(root.getFileObject("testdir/mountdir"));
+ }
}
public void testDeleteCaptureExteralChanges () throws Exception {
@@ -565,7 +570,9 @@
assertTrue(f.exists());
assertTrue (f.delete());
- assertFalse(fileObject.isValid());
+ if (!ProvidedExtensionsTest.ProvidedExtensionsImpl.isImplsDeleteRetVal()) {
+ assertFalse(fileObject.isValid());
+ }
}
public void testFindResourceCaptureExteralChanges () throws Exception {
Index: test/unit/src/org/netbeans/modules/masterfs/MasterFileSystemTest.java
===================================================================
RCS file: /cvs/openide/masterfs/test/unit/src/org/netbeans/modules/masterfs/MasterFileSystemTest.java,v
retrieving revision 1.9
diff -u -r1.9 MasterFileSystemTest.java
--- test/unit/src/org/netbeans/modules/masterfs/MasterFileSystemTest.java 1 Jul 2006 09:08:50 -0000 1.9
+++ test/unit/src/org/netbeans/modules/masterfs/MasterFileSystemTest.java 1 Aug 2006 09:53:22 -0000
@@ -58,7 +58,7 @@
super(test);
ProvidedExtensionsTest.ProvidedExtensionsImpl.setImplsMoveRetVal(false);
ProvidedExtensionsTest.ProvidedExtensionsImpl.setImplsRenameRetVal(false);
-
+ ProvidedExtensionsTest.ProvidedExtensionsImpl.setImplsDeleteRetVal(false);
}
Index: test/unit/src/org/netbeans/modules/masterfs/MasterFileSystemWithExtensionsTest.java
===================================================================
RCS file: /cvs/openide/masterfs/test/unit/src/org/netbeans/modules/masterfs/MasterFileSystemWithExtensionsTest.java,v
retrieving revision 1.3
diff -u -r1.3 MasterFileSystemWithExtensionsTest.java
--- test/unit/src/org/netbeans/modules/masterfs/MasterFileSystemWithExtensionsTest.java 1 Jul 2006 09:08:50 -0000 1.3
+++ test/unit/src/org/netbeans/modules/masterfs/MasterFileSystemWithExtensionsTest.java 1 Aug 2006 09:53:22 -0000
@@ -30,7 +30,8 @@
public MasterFileSystemWithExtensionsTest(Test test) {
super(test);
ProvidedExtensionsTest.ProvidedExtensionsImpl.setImplsMoveRetVal(true);
- ProvidedExtensionsTest.ProvidedExtensionsImpl.setImplsRenameRetVal(true);
+ ProvidedExtensionsTest.ProvidedExtensionsImpl.setImplsRenameRetVal(true);
+ ProvidedExtensionsTest.ProvidedExtensionsImpl.setImplsDeleteRetVal(true);
}
public static Test suite() {
Index: test/unit/src/org/netbeans/modules/masterfs/providers/ProvidedExtensionsTest.java
===================================================================
RCS file: /cvs/openide/masterfs/test/unit/src/org/netbeans/modules/masterfs/providers/ProvidedExtensionsTest.java,v
retrieving revision 1.3
diff -u -r1.3 ProvidedExtensionsTest.java
--- test/unit/src/org/netbeans/modules/masterfs/providers/ProvidedExtensionsTest.java 1 Jul 2006 09:08:51 -0000 1.3
+++ test/unit/src/org/netbeans/modules/masterfs/providers/ProvidedExtensionsTest.java 1 Aug 2006 09:53:22 -0000
@@ -20,6 +20,7 @@
package org.netbeans.modules.masterfs.providers;
import java.io.File;
+import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -27,8 +28,10 @@
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import junit.framework.AssertionFailedError;
import org.netbeans.junit.NbTestCase;
import org.netbeans.modules.masterfs.filebasedfs.FileBasedFileSystem;
@@ -368,6 +371,7 @@
private static boolean implsMoveRetVal = true;
private static boolean implsRenameRetVal = true;
+ private static boolean implsDeleteRetVal = true;
public static FileLock lock;
@@ -377,7 +381,31 @@
implsRenameCalls = 0;
renameImplCalls = 0;
}
-
+
+ public ProvidedExtensions.DeleteHandler getDeleteHandler(File f) {
+ return (!isImplsDeleteRetVal()) ? null : new ProvidedExtensions.DeleteHandler(){
+ final Set s = new HashSet();
+ public boolean delete(File file) {
+ if (file.isDirectory()) {
+ File[] childs = file.listFiles(new FileFilter() {
+ public boolean accept(File pathname) {
+ boolean accepted = pathname.isFile();
+ if (!accepted && pathname.isDirectory()) {
+ accepted = !s.contains(pathname);
+ if (!s.contains(pathname)) {
+ s.add(pathname);
+ }
+ }
+ return accepted;
+ }
+ });
+ return childs.length == 0;
+ }
+ return file.delete();
+ }
+ };
+ }
+
public ProvidedExtensions.IOHandler getRenameHandler(final File from, final String newName) {
implsRenameCalls++;
final File f = new File(from.getParentFile(),newName);
@@ -441,5 +469,13 @@
public static void setImplsRenameRetVal(boolean implsRenameRetVal) {
ProvidedExtensionsImpl.implsRenameRetVal = implsRenameRetVal;
}
+
+ public static boolean isImplsDeleteRetVal() {
+ return implsDeleteRetVal;
+ }
+
+ public static void setImplsDeleteRetVal(boolean implsDeleteRetVal) {
+ ProvidedExtensionsImpl.implsDeleteRetVal = implsDeleteRetVal;
+ }
}
}