1616import io .vertx .core .impl .logging .Logger ;
1717import io .vertx .core .impl .logging .LoggerFactory ;
1818import io .vertx .oracleclient .OracleException ;
19- import io .vertx .oracleclient .impl .commands .OraclePreparedQueryCommand ;
2019import io .vertx .oracleclient .impl .commands .OracleResponse ;
2120import io .vertx .sqlclient .Row ;
2221import io .vertx .sqlclient .impl .RowDesc ;
@@ -40,7 +39,7 @@ public class RowReader<C, R> implements Flow.Subscriber<Row>, Function<oracle.jd
4039 private static final Logger LOG = LoggerFactory .getLogger (RowReader .class );
4140
4241 private final ContextInternal context ;
43- private final List <String > types ;
42+ private final List <Class <?>> classes ;
4443 private final RowDesc description ;
4544 private final Statement resultSetStatement ;
4645
@@ -63,9 +62,9 @@ public RowReader(ContextInternal context, Collector<Row, C, R> collector, Oracle
6362 resultSetStatement = ors .getStatement ();
6463 ResultSetMetaData metaData = ors .getMetaData ();
6564 int cols = metaData .getColumnCount ();
66- types = new ArrayList <>(cols );
65+ classes = new ArrayList <>(cols );
6766 for (int i = 1 ; i <= cols ; i ++) {
68- types .add (metaData .getColumnClassName (i ));
67+ classes .add (getType ( metaData .getColumnClassName (i ) ));
6968 }
7069 Flow .Publisher <Row > publisher = ors .publisherOracle (this );
7170 description = OracleRowDesc .create (metaData );
@@ -170,24 +169,24 @@ private OracleResponse<R> createResponse() {
170169 @ Override
171170 public Row apply (oracle .jdbc .OracleRow oracleRow ) {
172171 try {
173- return transform (types , description , oracleRow );
172+ return transform (classes , description , oracleRow );
174173 } catch (SQLException e ) {
175174 throw new OracleException (e );
176175 }
177176 }
178177
179- private static Row transform (List <String > ors , RowDesc desc , oracle .jdbc .OracleRow or ) throws SQLException {
178+ private static Row transform (List <Class <?>> classes , RowDesc desc , oracle .jdbc .OracleRow or ) throws SQLException {
180179 Row row = new OracleRow (desc );
181180 for (int i = 1 ; i <= desc .columnNames ().size (); i ++) {
182- Object res = convertSqlValue (or .getObject (i , getType ( ors .get (i - 1 ) )));
181+ Object res = convertSqlValue (or .getObject (i , classes .get (i - 1 )));
183182 row .addValue (res );
184183 }
185184 return row ;
186185 }
187186
188187 private static Class <?> getType (String cn ) {
189188 try {
190- return OraclePreparedQueryCommand . class .getClassLoader (). loadClass ( cn );
189+ return Class . forName ( cn , true , RowReader . class .getClassLoader ());
191190 } catch (ClassNotFoundException e ) {
192191 return null ;
193192 }
0 commit comments