diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/DelegatingCachedClasspath.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/DelegatingCachedClasspath.java index addf5d95f..4882e1e73 100644 --- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/DelegatingCachedClasspath.java +++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/DelegatingCachedClasspath.java @@ -205,6 +205,9 @@ public class DelegatingCachedClasspath implements IClasspa return false; } catch (Exception e) { cachedData.set(new ClasspathData(null, Collections.emptySet(), Collections.emptySet(), null)); + if (cacheFile != null && cacheFile.exists()) { + cacheFile.delete(); + } throw e; } } diff --git a/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java b/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java index 646226841..29c42cd9c 100644 --- a/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java +++ b/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java @@ -32,6 +32,7 @@ import java.nio.file.FileVisitOption; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Comparator; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -84,8 +85,8 @@ public class MavenProjectCacheTest { Path cacheFolerPath = testProjectPath.resolve(IJavaProject.PROJECT_CACHE_FOLDER); if (cacheFolerPath.toFile().exists()) { - Files.walk(cacheFolerPath, FileVisitOption.FOLLOW_LINKS).map(Path::toFile).forEach(File::delete); - Files.delete(cacheFolerPath); + Files.walk(cacheFolerPath, FileVisitOption.FOLLOW_LINKS).sorted(Comparator.reverseOrder()).map(Path::toFile) + .forEach(File::delete); } } @@ -252,5 +253,7 @@ public class MavenProjectCacheTest { }).get(10, TimeUnit.SECONDS); progressDone.set(false); verify(diagnosticService, times(1)).diagnosticEvent(any(ShowMessageException.class)); + assertTrue(project.getClasspath().getClasspathEntries().isEmpty()); + assertFalse(cacheFolder.resolve(DelegatingCachedClasspath.CLASSPATH_DATA_CACHE_FILE).toFile().exists()); } }