PT #166597649: Send classpath when project is built if necessary

This commit is contained in:
BoykoAlex
2019-06-26 23:55:36 -04:00
parent 463fb1ba87
commit cfb353f337
4 changed files with 88 additions and 23 deletions

View File

@@ -23,7 +23,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.commons.java.ClasspathIndex;
import org.springframework.ide.vscode.commons.java.IJavaModuleData;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.java.IType;
import org.springframework.ide.vscode.commons.java.JavaUtils;
import org.springframework.ide.vscode.commons.javadoc.JdtLsJavadocProvider;
@@ -65,31 +64,23 @@ public class JdtLsIndex implements ClasspathIndex {
final private Cache<JavaTypeHierarchyParams, CompletableFuture<List<IType>>> supertypesCache = CacheBuilder.newBuilder().expireAfterAccess(10, TimeUnit.SECONDS).build();
final private Cache<JavaTypeHierarchyParams, CompletableFuture<List<IType>>> subtypesCache = CacheBuilder.newBuilder().expireAfterAccess(10, TimeUnit.SECONDS).build();
final private Listener projectListener = new Listener() {
@Override
public void deleted(IJavaProject project) {
// ignore
}
@Override
public void created(IJavaProject project) {
// ignore
}
@Override
public void changed(IJavaProject project) {
binaryTypeCache.invalidateAll();
sourceTypeCache.invalidateAll();
}
};
final private Listener projectListener;
public JdtLsIndex(STS4LanguageClient client, URI projectUri, ProjectObserver projectObserver) {
this.client = client;
this.projectUri = projectUri;
this.projectObserver = projectObserver;
this.javadocProvider = new JdtLsJavadocProvider(client, projectUri.toString());
this.projectListener = ProjectObserver.onAny(project -> {
if (Objects.equals(project.getLocationUri(), projectUri)) {
binaryTypeCache.invalidateAll();
sourceTypeCache.invalidateAll();
supertypesCache.invalidateAll();
subtypesCache.invalidateAll();
}
});
this.projectObserver.addListener(projectListener);
}