Skip to content

Commit 2a5f2bc

Browse files
committed
Polishing.
Improve BadJpqlGrammarException by including the underlying grammar.
1 parent 9075727 commit 2a5f2bc

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
@@ -71,7 +71,13 @@ static <P extends Parser> ParserRuleContext parse(String query, Function<CharStr
7171
Lexer lexer = lexerFactoryFunction.apply(CharStreams.fromString(query));
7272
P parser = parserFactoryFunction.apply(new CommonTokenStream(lexer));
7373

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

7682
return parseFunction.apply(parser);
7783
}
@@ -83,9 +89,9 @@ static <P extends Parser> ParserRuleContext parse(String query, Function<CharStr
8389
* @param lexer
8490
* @param parser
8591
*/
86-
static void configureParser(String query, Lexer lexer, Parser parser) {
92+
static void configureParser(String query, String grammar, Lexer lexer, Parser parser) {
8793

88-
BadJpqlGrammarErrorListener errorListener = new BadJpqlGrammarErrorListener(query);
94+
BadJpqlGrammarErrorListener errorListener = new BadJpqlGrammarErrorListener(query, grammar);
8995

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

0 commit comments

Comments
 (0)