Skip to content

Commit be8fa6b

Browse files
committed
[hibernate#1857] Adapt code for Hibernate ORM 6.5
1 parent d0e186f commit be8fa6b

File tree

77 files changed

+2324
-1501
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+2324
-1501
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/adaptor/impl/ResultSetAdaptor.java

+205-129
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.sql.Blob;
1414
import java.sql.Clob;
1515
import java.sql.Date;
16+
import java.sql.JDBCType;
1617
import java.sql.NClob;
1718
import java.sql.Ref;
1819
import java.sql.ResultSet;
@@ -28,6 +29,8 @@
2829
import java.time.LocalDateTime;
2930
import java.time.LocalTime;
3031
import java.util.Calendar;
32+
import java.util.Collection;
33+
import java.util.Iterator;
3134
import java.util.List;
3235
import java.util.Map;
3336
import java.util.NoSuchElementException;
@@ -38,10 +41,11 @@
3841
import org.hibernate.type.descriptor.jdbc.JdbcType;
3942

4043
import io.vertx.core.buffer.Buffer;
44+
import io.vertx.sqlclient.PropertyKind;
4145
import io.vertx.sqlclient.Row;
42-
import io.vertx.sqlclient.RowIterator;
4346
import io.vertx.sqlclient.RowSet;
4447
import io.vertx.sqlclient.desc.ColumnDescriptor;
48+
import io.vertx.sqlclient.impl.RowBase;
4549

4650
import static java.util.Collections.emptyList;
4751
import static java.util.Objects.requireNonNull;
@@ -52,15 +56,75 @@
5256
*/
5357
public class ResultSetAdaptor implements ResultSet {
5458

55-
private final RowIterator<Row> iterator;
56-
private final RowSet<Row> rows;
59+
private final Iterator<Row> iterator;
60+
61+
private final List<ColumnDescriptor> columnDescriptors;
62+
private final List<String> columnNames;
5763
private Row row;
5864
private boolean wasNull;
5965

6066
public ResultSetAdaptor(RowSet<Row> rows) {
6167
requireNonNull( rows );
6268
this.iterator = rows.iterator();
63-
this.rows = rows;
69+
this.columnNames = rows.columnsNames() == null ? emptyList() : rows.columnsNames();
70+
this.columnDescriptors = rows.columnDescriptors();
71+
}
72+
73+
public ResultSetAdaptor(RowSet<Row> rows, PropertyKind<Row> propertyKind, String idColumnName, Class<?> idClass) {
74+
this( rows, rows.property( propertyKind ), idColumnName, idClass );
75+
}
76+
77+
public ResultSetAdaptor(RowSet<Row> rows, Collection<?> ids, String idColumnName, Class<?> idClass) {
78+
this( rows, new RowFromId( ids, idColumnName ), idColumnName, idClass );
79+
}
80+
81+
private ResultSetAdaptor(RowSet<Row> rows, Row row, String idColumnName, Class<?> idClass) {
82+
requireNonNull( rows );
83+
requireNonNull( idColumnName );
84+
this.iterator = List.of( row ).iterator();
85+
this.columnNames = List.of( idColumnName );
86+
ColumnDescriptor columnDescriptor = new ColumnDescriptor() {
87+
@Override
88+
public String name() {
89+
return idColumnName;
90+
}
91+
92+
@Override
93+
public boolean isArray() {
94+
return idClass.isArray();
95+
}
96+
97+
@Override
98+
public String typeName() {
99+
return idClass.getName();
100+
}
101+
102+
@Override
103+
public JDBCType jdbcType() {
104+
return null;
105+
}
106+
};
107+
this.columnDescriptors = List.of( columnDescriptor );
108+
}
109+
110+
private static class RowFromId extends RowBase {
111+
112+
private final List<String> columns;
113+
114+
public RowFromId(Collection<?> ids, String columnName) {
115+
super( ids );
116+
this.columns = List.of( requireNonNull( columnName ) );
117+
}
118+
119+
@Override
120+
public String getColumnName(int pos) {
121+
return pos > 0 ? null : columns.get( pos );
122+
}
123+
124+
@Override
125+
public int getColumnIndex(String column) {
126+
return columns.indexOf( column );
127+
}
64128
}
65129

66130
@Override
@@ -221,7 +285,7 @@ private <T> T caseInsensitiveGet(String columnLabel, Function<String, T> produce
221285
* @return A list of column names or an empty list.
222286
*/
223287
private List<String> getColumnsNames() {
224-
return rows.columnsNames() == null ? emptyList() : rows.columnsNames();
288+
return this.columnNames;
225289
}
226290

227291
@Override
@@ -379,129 +443,6 @@ public String getCursorName() {
379443
return null;
380444
}
381445

382-
@Override
383-
public ResultSetMetaData getMetaData() {
384-
return new ResultSetMetaData() {
385-
@Override
386-
public int getColumnCount() {
387-
return getColumnsNames() == null ? 0 : getColumnsNames().size();
388-
}
389-
390-
@Override
391-
public int getColumnType(int column) {
392-
ColumnDescriptor descriptor = rows.columnDescriptors().get( column - 1 );
393-
return descriptor.isArray() ? Types.ARRAY : descriptor.jdbcType().getVendorTypeNumber();
394-
}
395-
396-
@Override
397-
public String getColumnLabel(int column) {
398-
return getColumnsNames().get( column - 1 );
399-
}
400-
401-
@Override
402-
public String getColumnName(int column) {
403-
return getColumnsNames().get( column - 1 );
404-
}
405-
406-
@Override
407-
public boolean isAutoIncrement(int column) {
408-
return false;
409-
}
410-
411-
@Override
412-
public boolean isCaseSensitive(int column) {
413-
return false;
414-
}
415-
416-
@Override
417-
public boolean isSearchable(int column) {
418-
return false;
419-
}
420-
421-
@Override
422-
public boolean isCurrency(int column) {
423-
return false;
424-
}
425-
426-
@Override
427-
public int isNullable(int column) {
428-
return columnNullableUnknown;
429-
}
430-
431-
@Override
432-
public boolean isSigned(int column) {
433-
return false;
434-
}
435-
436-
@Override
437-
public int getColumnDisplaySize(int column) {
438-
return 0;
439-
}
440-
441-
@Override
442-
public String getSchemaName(int column) {
443-
return null;
444-
}
445-
446-
@Override
447-
public int getPrecision(int column) {
448-
return 0;
449-
}
450-
451-
@Override
452-
public int getScale(int column) {
453-
return 0;
454-
}
455-
456-
@Override
457-
public String getTableName(int column) {
458-
return null;
459-
}
460-
461-
@Override
462-
public String getCatalogName(int column) {
463-
return null;
464-
}
465-
466-
@Override
467-
public String getColumnTypeName(int column) {
468-
// This information is in rows.columnDescriptors().get( column-1 ).dataType.name
469-
// but does not appear to be accessible.
470-
return null;
471-
}
472-
473-
@Override
474-
public boolean isReadOnly(int column) {
475-
return false;
476-
}
477-
478-
@Override
479-
public boolean isWritable(int column) {
480-
return false;
481-
}
482-
483-
@Override
484-
public boolean isDefinitelyWritable(int column) {
485-
return false;
486-
}
487-
488-
@Override
489-
public String getColumnClassName(int column) {
490-
return null;
491-
}
492-
493-
@Override
494-
public <T> T unwrap(Class<T> iface) {
495-
return null;
496-
}
497-
498-
@Override
499-
public boolean isWrapperFor(Class<?> iface) {
500-
return false;
501-
}
502-
};
503-
}
504-
505446
@Override
506447
public Object getObject(int columnIndex) {
507448
Object object = row.getValue( columnIndex - 1 );
@@ -680,7 +621,7 @@ public void moveToCurrentRow() {
680621

681622
@Override
682623
public Statement getStatement() {
683-
throw new UnsupportedOperationException();
624+
return new PreparedStatementAdaptor();
684625
}
685626

686627
@Override
@@ -1309,4 +1250,139 @@ public void updateNClob(int columnIndex, Reader reader) {
13091250
public void updateNClob(String columnLabel, Reader reader) {
13101251
throw new UnsupportedOperationException();
13111252
}
1253+
1254+
1255+
@Override
1256+
public ResultSetMetaData getMetaData() {
1257+
return new MetaData( columnNames, columnDescriptors );
1258+
}
1259+
1260+
private static class MetaData implements ResultSetMetaData {
1261+
1262+
private final List<String> columns;
1263+
private final List<ColumnDescriptor> descriptors;
1264+
1265+
public MetaData(List<String> columnNames, List<ColumnDescriptor> columnDescriptors) {
1266+
columns = columnNames;
1267+
descriptors = columnDescriptors;
1268+
}
1269+
1270+
@Override
1271+
public int getColumnCount() {
1272+
return columns.size();
1273+
}
1274+
1275+
@Override
1276+
public int getColumnType(int column) {
1277+
ColumnDescriptor descriptor = descriptors.get( column - 1 );
1278+
return descriptor.isArray() ? Types.ARRAY : descriptor.jdbcType().getVendorTypeNumber();
1279+
}
1280+
1281+
@Override
1282+
public String getColumnLabel(int column) {
1283+
return columns.get( column - 1 );
1284+
}
1285+
1286+
@Override
1287+
public String getColumnName(int column) {
1288+
return columns.get( column - 1 );
1289+
}
1290+
1291+
@Override
1292+
public boolean isAutoIncrement(int column) {
1293+
return false;
1294+
}
1295+
1296+
@Override
1297+
public boolean isCaseSensitive(int column) {
1298+
return false;
1299+
}
1300+
1301+
@Override
1302+
public boolean isSearchable(int column) {
1303+
return false;
1304+
}
1305+
1306+
@Override
1307+
public boolean isCurrency(int column) {
1308+
return false;
1309+
}
1310+
1311+
@Override
1312+
public int isNullable(int column) {
1313+
return columnNullableUnknown;
1314+
}
1315+
1316+
@Override
1317+
public boolean isSigned(int column) {
1318+
return false;
1319+
}
1320+
1321+
@Override
1322+
public int getColumnDisplaySize(int column) {
1323+
return 0;
1324+
}
1325+
1326+
@Override
1327+
public String getSchemaName(int column) {
1328+
return null;
1329+
}
1330+
1331+
@Override
1332+
public int getPrecision(int column) {
1333+
return 0;
1334+
}
1335+
1336+
@Override
1337+
public int getScale(int column) {
1338+
return 0;
1339+
}
1340+
1341+
@Override
1342+
public String getTableName(int column) {
1343+
return null;
1344+
}
1345+
1346+
@Override
1347+
public String getCatalogName(int column) {
1348+
return null;
1349+
}
1350+
1351+
@Override
1352+
public String getColumnTypeName(int column) {
1353+
// This information is in rows.columnDescriptors().get( column-1 ).dataType.name
1354+
// but does not appear to be accessible.
1355+
return null;
1356+
}
1357+
1358+
@Override
1359+
public boolean isReadOnly(int column) {
1360+
return false;
1361+
}
1362+
1363+
@Override
1364+
public boolean isWritable(int column) {
1365+
return false;
1366+
}
1367+
1368+
@Override
1369+
public boolean isDefinitelyWritable(int column) {
1370+
return false;
1371+
}
1372+
1373+
@Override
1374+
public String getColumnClassName(int column) {
1375+
return null;
1376+
}
1377+
1378+
@Override
1379+
public <T> T unwrap(Class<T> iface) {
1380+
return null;
1381+
}
1382+
1383+
@Override
1384+
public boolean isWrapperFor(Class<?> iface) {
1385+
return false;
1386+
}
1387+
}
13121388
}

0 commit comments

Comments
 (0)