Our Code to run the tests:
protected void runPlSqlTest(String testName) throws SQLException {
try (Connection con = getDataSource().getConnection()) {
Reporter documentationReporter = new DocumentationReporter().init(con);
try {
TestRunner tr = new TestRunner();
tr.addPath(testName);
tr.failOnErrors(true);
tr.addReporter(documentationReporter);
tr.run(con);
} finally {
documentationReporter.getOutputBuffer().setFetchSize(1).printAvailable(con, System.out);
}
}
}
We're using these dependencies:
com.zaxxer:HikariCP:7.1.0
org.utplsql:utplsql-java-api:3.2.5
com.oracle.database.jdbc:ojdbc11:19.32.0.0
From the finally-Block, the following exception is thrown:
java.lang.ClassCastException: java.lang.ClassCastException: class com.zaxxer.hikari.pool.HikariProxyCallableStatement cannot be cast to class oracle.jdbc.OracleCallableStatement (com.zaxxer.hikari.pool.HikariProxyCallableStatement and oracle.jdbc.OracleCallableStatement are in unnamed module of loader 'app')
java.lang.ClassCastException: class com.zaxxer.hikari.pool.HikariProxyCallableStatement cannot be cast to class oracle.jdbc.OracleCallableStatement (com.zaxxer.hikari.pool.HikariProxyCallableStatement and oracle.jdbc.OracleCallableStatement are in unnamed module of loader 'app')
at org.utplsql.api.outputBuffer.DefaultOutputBuffer.getLinesCursorStatement(DefaultOutputBuffer.java:37)
at org.utplsql.api.outputBuffer.AbstractOutputBuffer.fetchAvailable(AbstractOutputBuffer.java:91)
at org.utplsql.api.outputBuffer.AbstractOutputBuffer.printAvailable(AbstractOutputBuffer.java:73)
at org.utplsql.api.outputBuffer.AbstractOutputBuffer.printAvailable(AbstractOutputBuffer.java:62)
at testhelper.DbTest.runPlSqlTest(DbTest.java:128)
[...]
Looking at the DefaultOutputBuffer, the casting is not needed at all:
Subject: [PATCH] Remove unnecessary cast to OracleConnection in DefaultOutputBuffer
---
Index: src/main/java/org/utplsql/api/outputBuffer/DefaultOutputBuffer.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/main/java/org/utplsql/api/outputBuffer/DefaultOutputBuffer.java b/src/main/java/org/utplsql/api/outputBuffer/DefaultOutputBuffer.java
--- a/src/main/java/org/utplsql/api/outputBuffer/DefaultOutputBuffer.java (revision f443528adeadb6fa080ceca68ac65440040b51cf)
+++ b/src/main/java/org/utplsql/api/outputBuffer/DefaultOutputBuffer.java (date 1790924811678)
@@ -1,6 +1,5 @@
package org.utplsql.api.outputBuffer;
-import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleTypes;
import org.utplsql.api.reporter.Reporter;
@@ -34,7 +33,7 @@
" l_rep.set_reporter_id(:reporter_id); " +
" :lines_cursor := l_rep.get_lines_cursor(); " +
"end;";
- OracleCallableStatement cstmt = (OracleCallableStatement) conn.prepareCall(plsql);
+ CallableStatement cstmt = conn.prepareCall(plsql);
cstmt.setString("reporter_id", reporter.getId());
cstmt.registerOutParameter("lines_cursor", OracleTypes.CURSOR);
return cstmt;
Our Code to run the tests:
We're using these dependencies:
From the finally-Block, the following exception is thrown:
Looking at the DefaultOutputBuffer, the casting is not needed at all: