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);
 				}