Skip to content

Commit 6115917

Browse files
committed
avoid re-scanning files that have been marked as affected files, but where scanned already in the same scan pass
1 parent 2f18876 commit 6115917

File tree

2 files changed

+25
-97
lines changed

2 files changed

+25
-97
lines changed

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SpringIndexerJava.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,12 @@ private void scanAffectedFiles(IJavaProject project, Set<String> changedTypes, S
512512

513513
Multimap<String, String> dependencies = dependencyTracker.getAllDependencies();
514514
Set<String> filesToScan = new HashSet<>();
515-
filesToScan.addAll(alreadyMarkedForAffectedFilesIndexing);
515+
516+
for (String affectedFile : alreadyMarkedForAffectedFilesIndexing) {
517+
if (!alreadyScannedFiles.contains(affectedFile)) {
518+
filesToScan.add(affectedFile);
519+
}
520+
}
516521

517522
for (String file : dependencies.keys()) {
518523
if (!alreadyScannedFiles.contains(file)) {

headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/reconcilers/test/WebApiVersioningNotConfiguredAdvancedReconcilerTest.java

Lines changed: 19 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -137,102 +137,25 @@ void testErrorDisappearsAgainWhenWebConfigClassRemovesAndAddsVersioningConfig()
137137

138138
assertEquals(0, diagnostics.size());
139139
}
140+
141+
@Test
142+
void testControllerReconciledOnlyOnce() throws Exception {
143+
String webConfigUri = directory.toPath().resolve("src/main/java/com/example/demo/apiversioning/WebConfig.java").toUri().toString();
144+
String controllerUri = directory.toPath().resolve("src/main/java/com/example/demo/apiversioning/TestController.java").toUri().toString();
145+
146+
TestFileScanListener fileScanListener = new TestFileScanListener();
147+
indexer.getJavaIndexer().setFileScanListener(fileScanListener);
148+
149+
CompletableFuture<Void> updateFuture = indexer.updateDocuments(new String[] {controllerUri, webConfigUri}, "test triggered");
150+
updateFuture.get(5, TimeUnit.SECONDS);
151+
152+
// check if the controller has been re-scanned
153+
fileScanListener.assertScannedUri(webConfigUri, 1);
154+
fileScanListener.assertScannedUri(controllerUri, 1);
155+
fileScanListener.assertFileScanCount(2);
156+
}
157+
158+
140159

141160

142-
// @Test
143-
// void testErrorOnNotReferencedFeignConfigClass() throws Exception {
144-
// String docUri = directory.toPath().resolve("src/main/java/com/example/feign/demo/FeignConfigNotRegistered.java").toUri().toString();
145-
//
146-
// PublishDiagnosticsParams diagnosticsResult = harness.getDiagnostics(docUri);
147-
// List<Diagnostic> diagnostics = diagnosticsResult.getDiagnostics();
148-
//
149-
// assertEquals(1, diagnostics.size());
150-
// assertEquals(Boot2JavaProblemType.MISSING_CONFIGURATION_ANNOTATION.getCode(), diagnostics.get(0).getCode().getLeft());
151-
// }
152-
//
153-
// @Test
154-
// void testErrorGoesAwayWhenFeignClientMentionsFeignConfig() throws Exception {
155-
// String feignClientDocUri = directory.toPath().resolve("src/main/java/com/example/feign/demo/FeignClientExample.java").toUri().toString();
156-
// String feignConfigRegisterd = directory.toPath().resolve("src/main/java/com/example/feign/demo/FeignConfigExample.java").toUri().toString();
157-
// String feignConfigNotRegisterd = directory.toPath().resolve("src/main/java/com/example/feign/demo/FeignConfigNotRegistered.java").toUri().toString();
158-
//
159-
// // now change the config class source code and update doc
160-
// TestFileScanListener fileScanListener = new TestFileScanListener();
161-
// indexer.getJavaIndexer().setFileScanListener(fileScanListener);
162-
//
163-
// String feignClientSource = FileUtils.readFileToString(UriUtil.toFile(feignClientDocUri), Charset.defaultCharset());
164-
// String updatedFeignClientSource = feignClientSource.replace("@FeignClient(name = \"stores\", configuration = FeignConfigExample.class)",
165-
// "@FeignClient(name = \"stores\", configuration = {FeignConfigNotRegistered.class, FeignConfigExample.class})");
166-
//
167-
// CompletableFuture<Void> updateFuture = indexer.updateDocument(feignClientDocUri, updatedFeignClientSource, "test triggered");
168-
// updateFuture.get(5, TimeUnit.SECONDS);
169-
//
170-
// // check if the bean registrar files have been re-scanned
171-
// fileScanListener.assertScannedUri(feignClientDocUri, 1);
172-
// fileScanListener.assertScannedUri(feignConfigNotRegisterd, 1);
173-
// fileScanListener.assertScannedUri(feignConfigRegisterd, 1);
174-
// fileScanListener.assertFileScanCount(3);
175-
//
176-
// // check diagnostics result
177-
// PublishDiagnosticsParams diagnosticsResult = harness.getDiagnostics(feignConfigNotRegisterd);
178-
// List<Diagnostic> diagnostics = diagnosticsResult.getDiagnostics();
179-
// assertEquals(0, diagnostics.size());
180-
// }
181-
//
182-
// @Test
183-
// void testErrorAppearsWhenFeignClientNotMentionsFeignConfigAnymore() throws Exception {
184-
// String feignClientDocUri = directory.toPath().resolve("src/main/java/com/example/feign/demo/FeignClientExample.java").toUri().toString();
185-
// String feignConfigRegisterd = directory.toPath().resolve("src/main/java/com/example/feign/demo/FeignConfigExample.java").toUri().toString();
186-
//
187-
// // now change the config class source code and update doc
188-
// TestFileScanListener fileScanListener = new TestFileScanListener();
189-
// indexer.getJavaIndexer().setFileScanListener(fileScanListener);
190-
//
191-
// String feignClientSource = FileUtils.readFileToString(UriUtil.toFile(feignClientDocUri), Charset.defaultCharset());
192-
// String updatedFeignClientSource = feignClientSource.replace("@FeignClient(name = \"stores\", configuration = FeignConfigExample.class)",
193-
// "@FeignClient(name = \"stores\")");
194-
//
195-
// CompletableFuture<Void> updateFuture = indexer.updateDocument(feignClientDocUri, updatedFeignClientSource, "test triggered");
196-
// updateFuture.get(5, TimeUnit.SECONDS);
197-
//
198-
// // check if the bean registrar files have been re-scanned
199-
// fileScanListener.assertScannedUri(feignClientDocUri, 1);
200-
// fileScanListener.assertScannedUri(feignConfigRegisterd, 1);
201-
// fileScanListener.assertFileScanCount(2);
202-
//
203-
// // check diagnostics result
204-
// PublishDiagnosticsParams diagnosticsResult = harness.getDiagnostics(feignConfigRegisterd);
205-
// List<Diagnostic> diagnostics = diagnosticsResult.getDiagnostics();
206-
// assertEquals(1, diagnostics.size());
207-
// assertEquals(Boot2JavaProblemType.MISSING_CONFIGURATION_ANNOTATION.getCode(), diagnostics.get(0).getCode().getLeft());
208-
// }
209-
//
210-
// @Test
211-
// void testErrorAppearsWhenFeignClientAnnotationDoesAwayEntirely() throws Exception {
212-
// String feignClientDocUri = directory.toPath().resolve("src/main/java/com/example/feign/demo/FeignClientExample.java").toUri().toString();
213-
// String feignConfigRegisterd = directory.toPath().resolve("src/main/java/com/example/feign/demo/FeignConfigExample.java").toUri().toString();
214-
//
215-
// // now change the config class source code and update doc
216-
// TestFileScanListener fileScanListener = new TestFileScanListener();
217-
// indexer.getJavaIndexer().setFileScanListener(fileScanListener);
218-
//
219-
// String feignClientSource = FileUtils.readFileToString(UriUtil.toFile(feignClientDocUri), Charset.defaultCharset());
220-
// String updatedFeignClientSource = feignClientSource.replace("@FeignClient(name = \"stores\", configuration = FeignConfigExample.class)",
221-
// "");
222-
//
223-
// CompletableFuture<Void> updateFuture = indexer.updateDocument(feignClientDocUri, updatedFeignClientSource, "test triggered");
224-
// updateFuture.get(5, TimeUnit.SECONDS);
225-
//
226-
// // check if the bean registrar files have been re-scanned
227-
// fileScanListener.assertScannedUri(feignClientDocUri, 1);
228-
// fileScanListener.assertScannedUri(feignConfigRegisterd, 1);
229-
// fileScanListener.assertFileScanCount(2);
230-
//
231-
// // check diagnostics result
232-
// PublishDiagnosticsParams diagnosticsResult = harness.getDiagnostics(feignConfigRegisterd);
233-
// List<Diagnostic> diagnostics = diagnosticsResult.getDiagnostics();
234-
// assertEquals(1, diagnostics.size());
235-
// assertEquals(Boot2JavaProblemType.MISSING_CONFIGURATION_ANNOTATION.getCode(), diagnostics.get(0).getCode().getLeft());
236-
// }
237-
//
238161
}

0 commit comments

Comments
 (0)