From d89fd1454e2a13c02d88455ce4a2da548fd8fcb1 Mon Sep 17 00:00:00 2001 From: aboyko Date: Fri, 28 Mar 2025 17:23:28 -0400 Subject: [PATCH] Bean Registrar validation preference setting --- .../src/main/resources/problem-types.json | 37 ++++++++++++--- .../vscode/boot/test/ProblemTypesToJson.java | 2 + .../vscode-spring-boot/package.json | 45 +++++++++++++++---- 3 files changed, 69 insertions(+), 15 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/resources/problem-types.json b/headless-services/spring-boot-language-server/src/main/resources/problem-types.json index 0044bd9f3..aae424725 100644 --- a/headless-services/spring-boot-language-server/src/main/resources/problem-types.json +++ b/headless-services/spring-boot-language-server/src/main/resources/problem-types.json @@ -123,6 +123,29 @@ } ] }, + { + "id": "boot4", + "label": "Boot 4.x Best Practices & Optimizations", + "toggle": { + "label": "Enablement", + "values": [ + "AUTO", + "OFF", + "ON" + ], + "preferenceKey": "boot-java.validation.java.boot4", + "defaultValue": "AUTO" + }, + "order": 3, + "problemTypes": [ + { + "code": "REGISTRAR_BEAN_DECLARATION", + "label": "Not registered via `@Import` in a configuration bean", + "description": "Bean derived from BeanRegistrar should be registered via `@Import` over configuration bean", + "defaultSeverity": "WARNING" + } + ] + }, { "id": "spring-aot", "label": "AOT Optimizations", @@ -135,7 +158,7 @@ "preferenceKey": "boot-java.validation.java.spring-aot", "defaultValue": "OFF" }, - "order": 3, + "order": 4, "problemTypes": [ { "code": "JAVA_CONCRETE_BEAN_TYPE", @@ -160,7 +183,7 @@ { "id": "application-properties", "label": "Property Config Files", - "order": 4, + "order": 5, "problemTypes": [ { "code": "PROP_INVALID_BEAN_NAVIGATION", @@ -233,7 +256,7 @@ { "id": "application-yaml", "label": "YAML Config Files", - "order": 5, + "order": 6, "problemTypes": [ { "code": "YAML_SYNTAX_ERROR", @@ -327,7 +350,7 @@ "preferenceKey": "boot-java.validation.spel.on", "defaultValue": "ON" }, - "order": 6, + "order": 7, "problemTypes": [ { "code": "JAVA_SPEL_EXPRESSION_SYNTAX", @@ -355,7 +378,7 @@ "preferenceKey": "boot-java.validation.java.version-validation", "defaultValue": "ON" }, - "order": 7, + "order": 8, "problemTypes": [ { "code": "SUPPORTED_OSS_VERSION", @@ -413,7 +436,7 @@ "preferenceKey": "boot-java.validation.data-query", "defaultValue": "ON" }, - "order": 8, + "order": 9, "problemTypes": [ { "code": "JPQL_SYNTAX", @@ -447,7 +470,7 @@ "preferenceKey": "boot-java.validation.cron", "defaultValue": "ON" }, - "order": 9, + "order": 10, "problemTypes": [ { "code": "SYNTAX", diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ProblemTypesToJson.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ProblemTypesToJson.java index b8648277a..6a9f4b517 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ProblemTypesToJson.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ProblemTypesToJson.java @@ -28,6 +28,7 @@ import java.util.stream.Stream; import org.apache.commons.io.FileUtils; import org.springframework.ide.vscode.boot.java.Boot2JavaProblemType; import org.springframework.ide.vscode.boot.java.Boot3JavaProblemType; +import org.springframework.ide.vscode.boot.java.Boot4JavaProblemType; import org.springframework.ide.vscode.boot.java.SpelProblemType; import org.springframework.ide.vscode.boot.java.SpringAotJavaProblemType; import org.springframework.ide.vscode.boot.java.cron.CronProblemType; @@ -177,6 +178,7 @@ public class ProblemTypesToJson { writer.collectProblemTypeData(Boot2JavaProblemType.values()); writer.collectProblemTypeData(ApplicationPropertiesProblemType.values()); writer.collectProblemTypeData(Boot3JavaProblemType.values()); + writer.collectProblemTypeData(Boot4JavaProblemType.values()); writer.collectProblemTypeData(SpringAotJavaProblemType.values()); writer.collectProblemTypeData(VersionValidationProblemType.values()); writer.collectProblemTypeData(QueryProblemType.values()); diff --git a/vscode-extensions/vscode-spring-boot/package.json b/vscode-extensions/vscode-spring-boot/package.json index 38a5f2cae..4d3823969 100644 --- a/vscode-extensions/vscode-spring-boot/package.json +++ b/vscode-extensions/vscode-spring-boot/package.json @@ -724,10 +724,39 @@ } } }, + { + "id": "boot4", + "title": "Boot 4.x Best Practices & Optimizations", + "order": 403, + "properties": { + "boot-java.validation.java.boot4": { + "type": "string", + "default": "AUTO", + "description": "Enablement", + "enum": [ + "AUTO", + "OFF", + "ON" + ] + }, + "spring-boot.ls.problem.boot4.REGISTRAR_BEAN_DECLARATION": { + "type": "string", + "default": "WARNING", + "description": "Bean derived from BeanRegistrar should be registered via `@Import` over configuration bean", + "enum": [ + "IGNORE", + "INFO", + "WARNING", + "HINT", + "ERROR" + ] + } + } + }, { "id": "spring-aot", "title": "AOT Optimizations", - "order": 403, + "order": 404, "properties": { "boot-java.validation.java.spring-aot": { "type": "string", @@ -779,7 +808,7 @@ { "id": "application-properties", "title": "Property Config Files", - "order": 404, + "order": 405, "properties": { "spring-boot.ls.problem.application-properties.PROP_INVALID_BEAN_NAVIGATION": { "type": "string", @@ -918,7 +947,7 @@ { "id": "application-yaml", "title": "YAML Config Files", - "order": 405, + "order": 406, "properties": { "spring-boot.ls.problem.application-yaml.YAML_SYNTAX_ERROR": { "type": "string", @@ -1081,7 +1110,7 @@ { "id": "spel", "title": "SpEL Expressions", - "order": 406, + "order": 407, "properties": { "boot-java.validation.spel.on": { "type": "string", @@ -1121,7 +1150,7 @@ { "id": "version-validation", "title": "Versions and Support Ranges", - "order": 407, + "order": 408, "properties": { "boot-java.validation.java.version-validation": { "type": "string", @@ -1221,7 +1250,7 @@ { "id": "data-query", "title": "Data Queries", - "order": 408, + "order": 409, "properties": { "boot-java.validation.data-query": { "type": "string", @@ -1273,7 +1302,7 @@ { "id": "cron", "title": "CRON Expressions", - "order": 409, + "order": 410, "properties": { "boot-java.validation.cron": { "type": "string", @@ -1382,4 +1411,4 @@ "extensionDependencies": [ "redhat.java" ] -} +} \ No newline at end of file