Fix regression - load project in sync if not cached

This commit is contained in:
BoykoAlex
2017-11-21 16:54:21 -05:00
parent cfa0f5f13c
commit 384b2954fb
3 changed files with 28 additions and 18 deletions

View File

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

View File

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

View File

@@ -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(() -> {