From 2fa1f6146975ad44d3414bb8ff8b10b525cf2c38 Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Thu, 20 Jun 2024 16:47:43 +0200 Subject: [PATCH] fixed two remaining issues with changed annotation metadata in beans model --- .../commands/WorkspaceBootExecutableProjects.java | 15 +++++++++++++-- .../ide/vscode/boot/modulith/ModulithService.java | 4 +++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/commands/WorkspaceBootExecutableProjects.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/commands/WorkspaceBootExecutableProjects.java index 70e61a360..5507c5e5c 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/commands/WorkspaceBootExecutableProjects.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/commands/WorkspaceBootExecutableProjects.java @@ -11,7 +11,6 @@ package org.springframework.ide.vscode.boot.java.commands; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -30,6 +29,7 @@ import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguage import org.springframework.ide.vscode.commons.protocol.java.Classpath; import org.springframework.ide.vscode.commons.protocol.java.Gav; import org.springframework.ide.vscode.commons.protocol.java.ProjectGavParams; +import org.springframework.ide.vscode.commons.protocol.spring.AnnotationMetadata; import org.springframework.ide.vscode.commons.protocol.spring.Bean; import org.springframework.ide.vscode.commons.protocol.spring.BeansParams; @@ -57,7 +57,7 @@ public class WorkspaceBootExecutableProjects { params.setProjectName(project.getElementName()); return symbolIndex.beans(params).thenApply(beans -> { List bootAppBeans = beans.stream() - .filter(b -> Arrays.asList(b.getAnnotations()).contains(Annotations.BOOT_APP)) + .filter(b -> hasAnnotation(b, Annotations.BOOT_APP)) .limit(2) .collect(Collectors.toList()); if (bootAppBeans.size() == 1) { @@ -76,6 +76,17 @@ public class WorkspaceBootExecutableProjects { }); } + private boolean hasAnnotation(Bean bean, String annotationType) { + AnnotationMetadata[] annotations = bean.getAnnotations(); + for (int i = 0; i < annotations.length; i++) { + if (annotationType.equals(annotations[i].getAnnotationType())) { + return true; + } + } + + return false; + } + private CompletableFuture> findExecutableProjects() { List>> futures = projectFinder.all().stream() .filter(p -> SpringProjectUtil.isBootProject(p)) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/modulith/ModulithService.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/modulith/ModulithService.java index aa99c785e..e571fd907 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/modulith/ModulithService.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/modulith/ModulithService.java @@ -391,7 +391,9 @@ public class ModulithService { for (Bean bean : beansOfProject) { String beanType = bean.getType(); if (beanType != null) { - if (Arrays.stream(bean.getAnnotations()).anyMatch(Annotations.BOOT_APP::equals)) { + if (Arrays.stream(bean.getAnnotations()) + .map(annotation -> annotation.getAnnotationType()) + .anyMatch(Annotations.BOOT_APP::equals)) { packages.add(getPackageNameFromTypeFQName(beanType)); } }