Bug 319054: Eclipse deletes all files when I cancel a project creation (symlink in project location path)
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageTwo.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageTwo.java
index ddff49a..8cee5b2 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageTwo.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageTwo.java
@@ -349,12 +349,29 @@
}
private void restoreExistingFolders(URI projectLocation) {
+ HashSet<IFileStore> foldersToKeep= new HashSet<IFileStore>(fOrginalFolders);
+ // workaround for bug 319054: Eclipse deletes all files when I cancel a project creation (symlink in project location path)
+ for (IFileStore originalFileStore : fOrginalFolders) {
+ try {
+ File localFile= originalFileStore.toLocalFile(EFS.NONE, null);
+ if (localFile != null) {
+ File canonicalFile= localFile.getCanonicalFile();
+ IFileStore canonicalFileStore= originalFileStore.getFileSystem().fromLocalFile(canonicalFile);
+ if (! originalFileStore.equals(canonicalFileStore)) {
+ foldersToKeep.add(canonicalFileStore);
+ }
+ }
+ } catch (IOException e) {
+ } catch (CoreException e) {
+ }
+ }
+
try {
IFileStore[] children= EFS.getStore(projectLocation).childStores(EFS.NONE, null);
for (int i= 0; i < children.length; i++) {
IFileStore child= children[i];
IFileInfo info= child.fetchInfo();
- if (info.isDirectory() && info.exists() && !fOrginalFolders.contains(child)) {
+ if (info.isDirectory() && info.exists() && !foldersToKeep.contains(child)) {
child.delete(EFS.NONE, null);
fOrginalFolders.remove(child);
}