Fix regression - load project in sync if not cached
This commit is contained in:
@@ -40,7 +40,7 @@ public class GradleProjectCache extends AbstractFileToProjectCache<GradleJavaPro
|
||||
return project.update();
|
||||
} catch (Exception e) {
|
||||
server.getDiagnosticService().diagnosticEvent(new ShowMessageException(
|
||||
new MessageParams(MessageType.Error, "Cannot load Gradle project model from folder: " + project.getLocation()), e));
|
||||
new MessageParams(MessageType.Error, "Cannot load Gradle project model from folder:\n" + project.getLocation()), e));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -51,7 +51,8 @@ public class GradleProjectCache extends AbstractFileToProjectCache<GradleJavaPro
|
||||
GradleJavaProject gradleJavaProject = new GradleJavaProject(gradle, gradleFile,
|
||||
projectCacheFolder == null ? null : gradleFile.toPath().resolve(projectCacheFolder)
|
||||
);
|
||||
performUpdate(gradleJavaProject, asyncUpdate, asyncUpdate);
|
||||
boolean cached = gradleJavaProject.getClasspath().isCached();
|
||||
performUpdate(gradleJavaProject, cached && asyncUpdate, cached);
|
||||
return gradleJavaProject;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ public class MavenProjectCache extends AbstractFileToProjectCache<MavenJavaProje
|
||||
return project.update();
|
||||
} catch (Exception e) {
|
||||
server.getDiagnosticService().diagnosticEvent(new ShowMessageException(
|
||||
new MessageParams(MessageType.Error, "Cannot load Maven project model from Pom file: " + project.pom()), e));
|
||||
new MessageParams(MessageType.Error, "Cannot load Maven project model from Pom file:\n" + project.pom()), e));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -50,7 +50,8 @@ public class MavenProjectCache extends AbstractFileToProjectCache<MavenJavaProje
|
||||
MavenJavaProject mavenJavaProject = new MavenJavaProject(maven, pomFile,
|
||||
projectCacheFolder == null ? null : pomFile.getParentFile().toPath().resolve(projectCacheFolder)
|
||||
);
|
||||
performUpdate(mavenJavaProject, asyncUpdate, asyncUpdate);
|
||||
boolean cached = mavenJavaProject.getClasspath().isCached();
|
||||
performUpdate(mavenJavaProject, cached && asyncUpdate, cached);
|
||||
return mavenJavaProject;
|
||||
}
|
||||
|
||||
|
||||
@@ -176,7 +176,13 @@ public class MavenProjectCacheTest {
|
||||
|
||||
MavenProjectCache cache = new MavenProjectCache(server, MavenCore.getDefault(), true, cacheFolder);
|
||||
MavenJavaProject project = cache.project(pomFile);
|
||||
assertTrue(project.getClasspath().getClasspathEntries().isEmpty());
|
||||
assertEquals(48, project.getClasspath().getClasspathEntries().size());
|
||||
|
||||
progressDone.set(false);
|
||||
|
||||
writeContent(pomFile,
|
||||
new String(Files.readAllBytes(testProjectPath.resolve("pom.newxml")), Charset.defaultCharset()));
|
||||
fileObserver.notifyFileChanged(pomFile.toURI().toString());
|
||||
|
||||
CompletableFuture.runAsync(() -> {
|
||||
while (!progressDone.get()) {
|
||||
@@ -189,7 +195,7 @@ public class MavenProjectCacheTest {
|
||||
}).get(10, TimeUnit.SECONDS);
|
||||
|
||||
assertTrue(classpathCacheFile.exists());
|
||||
assertEquals(48, project.getClasspath().getClasspathEntries().size());
|
||||
assertEquals(49, project.getClasspath().getClasspathEntries().size());
|
||||
|
||||
progressDone.set(false);
|
||||
|
||||
@@ -198,7 +204,18 @@ public class MavenProjectCacheTest {
|
||||
|
||||
// Check loaded from cache file
|
||||
project = cache.project(pomFile);
|
||||
assertEquals(48, project.getClasspath().getClasspathEntries().size());
|
||||
assertEquals(49, project.getClasspath().getClasspathEntries().size());
|
||||
|
||||
// check async project update (no changes no project changed event)
|
||||
CompletableFuture.runAsync(() -> {
|
||||
while (!progressDone.get()) {
|
||||
try {
|
||||
Thread.sleep(500);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}).get(10, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -226,20 +243,11 @@ public class MavenProjectCacheTest {
|
||||
|
||||
MavenProjectCache cache = new MavenProjectCache(server, MavenCore.getDefault(), true, cacheFolder);
|
||||
MavenJavaProject project = cache.project(pomFile);
|
||||
assertTrue(project.getClasspath().getClasspathEntries().isEmpty());
|
||||
assertEquals(48, project.getClasspath().getClasspathEntries().size());
|
||||
|
||||
CompletableFuture.runAsync(() -> {
|
||||
while (!progressDone.get()) {
|
||||
try {
|
||||
Thread.sleep(500);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}).get(10, TimeUnit.SECONDS);
|
||||
progressDone.set(false);
|
||||
verify(diagnosticService, never()).diagnosticEvent(any(ShowMessageException.class));
|
||||
|
||||
progressDone.set(false);
|
||||
writeContent(pomFile, "");
|
||||
fileObserver.notifyFileChanged(pomFile.toURI().toString());
|
||||
CompletableFuture.runAsync(() -> {
|
||||
|
||||
Reference in New Issue
Block a user