Skip to content

Commit a3cf499

Browse files
committed
Polishing.
Improve BadJpqlGrammarException by including the underlying grammar.
1 parent 90f7ed9 commit a3cf499

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/BadJpqlGrammarErrorListener.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,21 @@ class BadJpqlGrammarErrorListener extends BaseErrorListener {
2929

3030
private final String query;
3131

32+
private final String grammar;
33+
3234
BadJpqlGrammarErrorListener(String query) {
35+
this(query, "JPQL");
36+
}
37+
38+
BadJpqlGrammarErrorListener(String query, String grammar) {
3339
this.query = query;
40+
this.grammar = grammar;
3441
}
3542

3643
@Override
3744
public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine,
3845
String msg, RecognitionException e) {
39-
throw new BadJpqlGrammarException("Line " + line + ":" + charPositionInLine + " " + msg, query, null);
46+
throw new BadJpqlGrammarException("Line " + line + ":" + charPositionInLine + " " + msg, grammar, query, null);
4047
}
4148

4249
}

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/BadJpqlGrammarException.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ public class BadJpqlGrammarException extends InvalidDataAccessResourceUsageExcep
3030
private final String jpql;
3131

3232
public BadJpqlGrammarException(String message, String jpql, @Nullable Throwable cause) {
33-
super(message + "; Bad JPQL grammar [" + jpql + "]", cause);
33+
this(message, jpql, "JPQL", cause);
34+
}
35+
36+
BadJpqlGrammarException(String message, String grammar, String jpql, @Nullable Throwable cause) {
37+
super(message + "; Bad " + grammar + " grammar [" + jpql + "]", cause);
3438
this.jpql = jpql;
3539
}
3640

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryEnhancer.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,13 @@ static <P extends Parser> ParserRuleContext parse(String query, Function<CharStr
7272
Lexer lexer = lexerFactoryFunction.apply(CharStreams.fromString(query));
7373
P parser = parserFactoryFunction.apply(new CommonTokenStream(lexer));
7474

75-
configureParser(query, lexer, parser);
75+
String grammar = lexer.getGrammarFileName();
76+
int dot = grammar.lastIndexOf('.');
77+
if (dot != -1) {
78+
grammar = grammar.substring(0, dot);
79+
}
80+
81+
configureParser(query, grammar.toUpperCase(), lexer, parser);
7682

7783
return parseFunction.apply(parser);
7884
}
@@ -84,9 +90,9 @@ static <P extends Parser> ParserRuleContext parse(String query, Function<CharStr
8490
* @param lexer
8591
* @param parser
8692
*/
87-
static void configureParser(String query, Lexer lexer, Parser parser) {
93+
static void configureParser(String query, String grammar, Lexer lexer, Parser parser) {
8894

89-
BadJpqlGrammarErrorListener errorListener = new BadJpqlGrammarErrorListener(query);
95+
BadJpqlGrammarErrorListener errorListener = new BadJpqlGrammarErrorListener(query, grammar);
9096

9197
lexer.removeErrorListeners();
9298
lexer.addErrorListener(errorListener);

0 commit comments

Comments
 (0)