From eade64184a6b8b9ba367dda49f9e56d1770f6ce6 Mon Sep 17 00:00:00 2001 From: aboyko Date: Thu, 13 Jun 2024 09:00:52 -0400 Subject: [PATCH] Missing settings for severities for query syntax problems --- .../boot/common/SpringProblemCategories.java | 6 +-- .../java/data/jpa/queries/HqlReconciler.java | 2 +- .../java/data/jpa/queries/JpqlReconciler.java | 2 +- .../jpa/queries/QueryJdtAstReconciler.java | 2 +- .../data/jpa/queries/QueryProblemType.java | 6 ++- .../java/data/jpa/queries/SqlReconciler.java | 2 +- .../src/main/resources/problem-types.json | 34 ++++++++++++ .../vscode/boot/test/ProblemTypesToJson.java | 2 + .../vscode-spring-boot/package.json | 52 +++++++++++++++++++ 9 files changed, 99 insertions(+), 9 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/common/SpringProblemCategories.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/common/SpringProblemCategories.java index 940bec697..7579a99bf 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/common/SpringProblemCategories.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/common/SpringProblemCategories.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2022, 2023 VMware, Inc. + * Copyright (c) 2022, 2024 VMware, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -38,7 +38,7 @@ public class SpringProblemCategories { public static final ProblemCategory VERSION_VALIDATION = new ProblemCategory("version-validation", "Versions and Support Ranges", new Toggle("Enablement", EnumSet.of(OFF, ON), ON, "boot-java.validation.java.version-validation")); - public static final ProblemCategory JPQL = new ProblemCategory("jpql-validation", "JPQL", - new Toggle("Enablement", EnumSet.of(OFF, ON), ON, "boot-java.validation.jpql"));; + public static final ProblemCategory DATA_QUERY = new ProblemCategory("data-query", "Data Query", + new Toggle("Enablement", EnumSet.of(OFF, ON), ON, "boot-java.validation.data-query")); } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlReconciler.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlReconciler.java index 33ec912ef..388d319d5 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlReconciler.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/HqlReconciler.java @@ -63,7 +63,7 @@ public class HqlReconciler implements Reconciler { offset = token.getStartIndex() - token.getCharPositionInLine(); length = token.getCharPositionInLine() + 1; } - problemCollector.accept(new ReconcileProblemImpl(QueryProblemType.EXPRESSION_SYNTAX, "HQL: " + msg, startPosition + offset, length)); + problemCollector.accept(new ReconcileProblemImpl(QueryProblemType.HQL_SYNTAX, "HQL: " + msg, startPosition + offset, length)); } @Override diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlReconciler.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlReconciler.java index b0f715b9f..3a8efb188 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlReconciler.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JpqlReconciler.java @@ -62,7 +62,7 @@ public class JpqlReconciler implements Reconciler { offset = token.getStartIndex() - token.getCharPositionInLine(); length = token.getCharPositionInLine() + 1; } - problemCollector.accept(new ReconcileProblemImpl(QueryProblemType.EXPRESSION_SYNTAX, "JPQL: " + msg, startPosition + offset, length)); + problemCollector.accept(new ReconcileProblemImpl(QueryProblemType.JPQL_SYNTAX, "JPQL: " + msg, startPosition + offset, length)); } @Override diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/QueryJdtAstReconciler.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/QueryJdtAstReconciler.java index e9053be59..29acccc93 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/QueryJdtAstReconciler.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/QueryJdtAstReconciler.java @@ -154,7 +154,7 @@ public class QueryJdtAstReconciler implements JdtAstReconciler { @Override public ProblemType getProblemType() { - return QueryProblemType.EXPRESSION_SYNTAX; + return QueryProblemType.JPQL_SYNTAX; } } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/QueryProblemType.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/QueryProblemType.java index 61eb6cc16..448231310 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/QueryProblemType.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/QueryProblemType.java @@ -19,7 +19,9 @@ import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemTy public enum QueryProblemType implements ProblemType { - EXPRESSION_SYNTAX(ERROR, "Syntax", "Query Expression Syntax"); + JPQL_SYNTAX(ERROR, "Syntax", "JPQL Query Syntax"), + HQL_SYNTAX(ERROR, "Syntax", "HQL Query Syntax"), + SQL_SYNTAX(ERROR, "Syntax", "SQL Query Syntax"); private final ProblemSeverity defaultSeverity; private String description; @@ -64,7 +66,7 @@ public enum QueryProblemType implements ProblemType { @Override public ProblemCategory getCategory() { - return SpringProblemCategories.JPQL; + return SpringProblemCategories.DATA_QUERY; } } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/SqlReconciler.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/SqlReconciler.java index 5631b0329..1e79d536d 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/SqlReconciler.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/SqlReconciler.java @@ -62,7 +62,7 @@ public class SqlReconciler implements Reconciler { offset = token.getStartIndex() - token.getCharPositionInLine(); length = token.getCharPositionInLine() + 1; } - problemCollector.accept(new ReconcileProblemImpl(QueryProblemType.EXPRESSION_SYNTAX, "SQL: " + msg, startPosition + offset, length)); + problemCollector.accept(new ReconcileProblemImpl(QueryProblemType.SQL_SYNTAX, "SQL: " + msg, startPosition + offset, length)); } @Override 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 0d1ebde70..6e8e21e64 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 @@ -388,5 +388,39 @@ "defaultSeverity": "WARNING" } ] + }, + { + "id": "data-query", + "label": "Data Query", + "toggle": { + "label": "Enablement", + "values": [ + "OFF", + "ON" + ], + "preferenceKey": "boot-java.validation.data-query", + "defaultValue": "ON" + }, + "order": 8, + "problemTypes": [ + { + "code": "JPQL_SYNTAX", + "label": "JPQL Query Syntax", + "description": "Syntax", + "defaultSeverity": "ERROR" + }, + { + "code": "HQL_SYNTAX", + "label": "HQL Query Syntax", + "description": "Syntax", + "defaultSeverity": "ERROR" + }, + { + "code": "SQL_SYNTAX", + "label": "SQL Query Syntax", + "description": "Syntax", + "defaultSeverity": "ERROR" + } + ] } ] \ No newline at end of file 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 7307b378f..c693cd52d 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 @@ -30,6 +30,7 @@ import org.springframework.ide.vscode.boot.java.Boot2JavaProblemType; import org.springframework.ide.vscode.boot.java.Boot3JavaProblemType; import org.springframework.ide.vscode.boot.java.SpelProblemType; import org.springframework.ide.vscode.boot.java.SpringAotJavaProblemType; +import org.springframework.ide.vscode.boot.java.data.jpa.queries.QueryProblemType; import org.springframework.ide.vscode.boot.properties.reconcile.ApplicationPropertiesProblemType; import org.springframework.ide.vscode.boot.validation.generations.preferences.VersionValidationProblemType; import org.springframework.ide.vscode.boot.yaml.reconcile.ApplicationYamlProblemType; @@ -177,6 +178,7 @@ public class ProblemTypesToJson { writer.collectProblemTypeData(Boot3JavaProblemType.values()); writer.collectProblemTypeData(SpringAotJavaProblemType.values()); writer.collectProblemTypeData(VersionValidationProblemType.values()); + writer.collectProblemTypeData(QueryProblemType.values()); Collections.sort(writer.problemCategories); diff --git a/vscode-extensions/vscode-spring-boot/package.json b/vscode-extensions/vscode-spring-boot/package.json index 08069e1ad..d6bc5fb3d 100644 --- a/vscode-extensions/vscode-spring-boot/package.json +++ b/vscode-extensions/vscode-spring-boot/package.json @@ -1146,6 +1146,58 @@ ] } } + }, + { + "id": "data-query", + "title": "Data Query", + "order": 408, + "properties": { + "boot-java.validation.data-query": { + "type": "string", + "default": "ON", + "description": "Enablement", + "enum": [ + "OFF", + "ON" + ] + }, + "spring-boot.ls.problem.data-query.JPQL_SYNTAX": { + "type": "string", + "default": "ERROR", + "description": "Syntax", + "enum": [ + "IGNORE", + "INFO", + "WARNING", + "HINT", + "ERROR" + ] + }, + "spring-boot.ls.problem.data-query.HQL_SYNTAX": { + "type": "string", + "default": "ERROR", + "description": "Syntax", + "enum": [ + "IGNORE", + "INFO", + "WARNING", + "HINT", + "ERROR" + ] + }, + "spring-boot.ls.problem.data-query.SQL_SYNTAX": { + "type": "string", + "default": "ERROR", + "description": "Syntax", + "enum": [ + "IGNORE", + "INFO", + "WARNING", + "HINT", + "ERROR" + ] + } + } } ], "grammars": [