Skip to content

Commit 78d5de3

Browse files
committed
[FEATURE] Ignore parsing errors
1 parent 951a1fb commit 78d5de3

File tree

3 files changed

+20
-27
lines changed

3 files changed

+20
-27
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.mickaelb</groupId>
88
<artifactId>hibernate-query-asserts</artifactId>
9-
<version>2.1.0-SNAPSHOT</version>
9+
<version>2.2.0-SNAPSHOT</version>
1010

1111
<name>${project.groupId}:${project.artifactId}</name>
1212
<description>A library that can assert statement generated by Hibernate in Spring tests</description>
@@ -49,7 +49,7 @@
4949
<maven.compiler.target>11</maven.compiler.target>
5050
<spring-boot-starter-test.version>2.6.6</spring-boot-starter-test.version>
5151
<hibernate-core-jakarta.version>5.6.7.Final</hibernate-core-jakarta.version>
52-
<jsqlparser.version>4.4</jsqlparser.version>
52+
<jsqlparser.version>5.1</jsqlparser.version>
5353
<junit-jupiter-engine.version>5.8.2</junit-jupiter-engine.version>
5454
<mockito-junit-jupiter.version>4.4.0</mockito-junit-jupiter.version>
5555
</properties>

src/main/java/com/mickaelb/integration/hibernate/JSQLHibernateStatementParser.java

+10-23
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import net.sf.jsqlparser.JSQLParserException;
44
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
55
import net.sf.jsqlparser.statement.Statement;
6-
import net.sf.jsqlparser.statement.StatementVisitorAdapter;
76
import net.sf.jsqlparser.statement.delete.Delete;
87
import net.sf.jsqlparser.statement.insert.Insert;
98
import net.sf.jsqlparser.statement.select.Select;
@@ -15,29 +14,17 @@ public class JSQLHibernateStatementParser implements HibernateStatementParser {
1514
public void parseSqlStatement(String sql, HibernateStatementListener statementCountListener) {
1615
try {
1716
Statement statement = CCJSqlParserUtil.parse(sql);
18-
statement.accept(new StatementVisitorAdapter() {
19-
@Override
20-
public void visit(Select select) {
21-
statementCountListener.notifySelectStatement(sql);
22-
}
2317

24-
@Override
25-
public void visit(Insert insert) {
26-
statementCountListener.notifyInsertStatement(sql);
27-
}
28-
29-
@Override
30-
public void visit(Update update) {
31-
statementCountListener.notifyUpdateStatement(sql);
32-
}
33-
34-
@Override
35-
public void visit(Delete delete) {
36-
statementCountListener.notifyDeleteStatement(sql);
37-
}
38-
});
39-
} catch (JSQLParserException e) {
40-
throw new RuntimeException(e);
18+
if (statement instanceof Delete) {
19+
statementCountListener.notifyDeleteStatement(sql);
20+
} else if (statement instanceof Insert) {
21+
statementCountListener.notifyInsertStatement(sql);
22+
} else if (statement instanceof Select) {
23+
statementCountListener.notifySelectStatement(sql);
24+
} else if (statement instanceof Update) {
25+
statementCountListener.notifyUpdateStatement(sql);
26+
}
27+
} catch (JSQLParserException ignored) {
4128
}
4229
}
4330
}

src/test/java/com/mickaelb/integration/hibernate/JSQLHibernateStatementParserTest.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
import org.mockito.Mock;
77
import org.mockito.junit.jupiter.MockitoExtension;
88

9-
import static org.mockito.Mockito.description;
10-
import static org.mockito.Mockito.verify;
9+
import static org.mockito.Mockito.*;
1110

1211
@ExtendWith(MockitoExtension.class)
1312
class JSQLHibernateStatementParserTest {
@@ -45,4 +44,11 @@ public void _parseSqlStatement_delete() {
4544

4645
verify(hibernateStatementListener, description("the correct notifier is called")).notifyDeleteStatement("DELETE FROM Post");
4746
}
47+
48+
@Test
49+
public void _incorrect_statement_should_not_throw() {
50+
model.parseSqlStatement("This is not really SQL", hibernateStatementListener);
51+
52+
verifyNoInteractions(hibernateStatementListener);
53+
}
4854
}

0 commit comments

Comments
 (0)