fixed two remaining issues with changed annotation metadata in beans model

This commit is contained in:
Martin Lippert
2024-06-20 16:47:43 +02:00
parent 0b579e3c65
commit 2fa1f61469
2 changed files with 16 additions and 3 deletions

View File

@@ -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<Bean> 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<List<ExecutableProject>> findExecutableProjects() {
List<CompletableFuture<Optional<ExecutableProject>>> futures = projectFinder.all().stream()
.filter(p -> SpringProjectUtil.isBootProject(p))

View File

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