From 3949aa0a93458efd05280985bf30a6ce26c33fae Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Tue, 7 Aug 2018 14:44:38 -0700 Subject: [PATCH] Fix https://github.com/spring-projects/sts4/issues/59 UriUtil.normalize did not properly ensure that drive-letters on windows are canonically represented (i.e allways in upper-case or allways in lower-case). --- .../springframework/ide/vscode/commons/java/JavaProject.java | 5 +++++ .../org/springframework/ide/vscode/commons/util/UriUtil.java | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/JavaProject.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/JavaProject.java index 01150d681..6173593cf 100644 --- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/JavaProject.java +++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/JavaProject.java @@ -74,4 +74,9 @@ public class JavaProject implements IJavaProject, Disposable { public boolean exists() { return new File(uri).exists(); } + + @Override + public String toString() { + return "JavaProject("+uri+")"; + } } diff --git a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/UriUtil.java b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/UriUtil.java index 660a0416e..201f12a7d 100644 --- a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/UriUtil.java +++ b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/UriUtil.java @@ -28,7 +28,7 @@ public class UriUtil { public static String normalize(String uriVal) { try { if (uriVal != null && uriVal.startsWith("file:")) { - File file = new File(URI.create(uriVal)); + File file = new File(URI.create(uriVal)).getCanonicalFile(); uriVal = file.toURI().toString(); //Careful!!! If the project uri points to a existing project... then it will be //a directory and then the uri we computed will get a slash at the end. @@ -39,6 +39,7 @@ public class UriUtil { while (uriVal.endsWith("/")) { uriVal = uriVal.substring(0, uriVal.length()-1); } + //Careful on windows, drive letters return uriVal; } } catch (Exception e) {