From 42b9f313e805a095cca04e1805588b17994896a1 Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Thu, 30 Jan 2020 16:34:27 -0500 Subject: [PATCH] Fixes for Windows --- .../boot/java/utils/CompilationUnitCache.java | 61 ++++++++++++------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/CompilationUnitCache.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/CompilationUnitCache.java index 73bdaa652..30c62257e 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/CompilationUnitCache.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/CompilationUnitCache.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.springframework.ide.vscode.boot.java.utils; +import java.io.File; import java.net.URI; import java.nio.file.Path; import java.util.HashMap; @@ -94,6 +95,15 @@ public final class CompilationUnitCache implements DocumentContentProvider { // writeLock.unlock(); // } // }); + + async.execute(() -> { + synchronized(lock) { + for (IJavaProject project : projectFinder.all()) { + projectData(project); + startListenToProjectSourceFolderChanges(project); + } + } + }); projectListener = new ProjectObserver.Listener() { @@ -141,29 +151,34 @@ public final class CompilationUnitCache implements DocumentContentProvider { } private void startListenToProjectSourceFolderChanges(IJavaProject project) { - List globs = IClasspathUtil.getProjectJavaSourceFolders(project.getClasspath()).map(file -> { - Path path = file.getAbsoluteFile().toPath(); - return Stream.of(path.resolve("*").toString(), path.resolve("**/*").toString()); - }).flatMap(glob -> glob).collect(Collectors.toList()); - String[] subscriptions = new String[] { - fileObserver.onFileCreated(globs, (file) -> { - invalidateProject(project); - try { - projectData(project); - } catch (ExecutionException e) { - logger.error("", e); - } - }), - fileObserver.onFileDeleted(globs, (file) -> { - invalidateProject(project); - try { - projectData(project); - } catch (ExecutionException e) { - logger.error("", e); - } - }), - }; - projectSubscriptions.put(project, subscriptions); + try { + List globs = IClasspathUtil.getProjectJavaSourceFolders(project.getClasspath()).map(file -> { + Path path = file.getAbsoluteFile().toPath(); + return Stream.of(path.toString().replace(File.separatorChar, '/') + "/*", + path.toString().replace(File.separatorChar, '/') + "/**/*"); + }).flatMap(glob -> glob).collect(Collectors.toList()); + String[] subscriptions = new String[] { + fileObserver.onFileCreated(globs, (file) -> { + invalidateProject(project); + try { + projectData(project); + } catch (ExecutionException e) { + logger.error("", e); + } + }), + fileObserver.onFileDeleted(globs, (file) -> { + invalidateProject(project); + try { + projectData(project); + } catch (ExecutionException e) { + logger.error("", e); + } + }), + }; + projectSubscriptions.put(project, subscriptions); + } catch (Exception e) { + logger.error("", e); + } } private void stopListenToProjectSourceFolderChanges(IJavaProject project) {