This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 643585df3af9aac4433b6bb6723d42da056896db Author: Andrus Adamchik <[email protected]> AuthorDate: Sun Jun 28 17:48:32 2026 -0400 cleanup --- .../reader/CryptoRowReaderFactoryDecorator.java | 6 +- .../transformer/DefaultBindingsTransformer.java | 4 +- .../transformer/DefaultTransformerFactory.java | 2 +- .../merge/token/DefaultValueForNullProvider.java | 2 +- .../cayenne/dbsync/merge/token/ValueForNullIT.java | 2 +- .../org/apache/cayenne/velocity/BindDirective.java | 4 +- .../apache/cayenne/velocity/ResultDirective.java | 2 +- .../VelocitySQLTemplateTranslatorTest.java | 2 +- .../VelocitySQLTemplateTranslator_SelectTest.java | 20 +-- .../cayenne/access/PrefetchProcessorJointNode.java | 10 +- .../apache/cayenne/access/jdbc/BatchAction.java | 2 +- .../cayenne/access/jdbc/PSBatchParameter.java | 8 +- .../apache/cayenne/access/jdbc/PSParameter.java | 11 +- .../cayenne/access/jdbc/ProcedureAction.java | 2 +- .../org/apache/cayenne/access/jdbc/RSColumn.java | 36 ++--- .../cayenne/access/jdbc/SQLTemplateAction.java | 2 +- .../apache/cayenne/access/jdbc/SelectAction.java | 2 +- .../cayenne/access/jdbc/reader/BaseRowReader.java | 10 +- .../jdbc/reader/DefaultRowReaderFactory.java | 156 +++++++++++---------- .../access/jdbc/reader/EmbeddableRowReader.java | 38 ++--- .../access/jdbc/reader/EntityRowReader.java | 10 +- .../cayenne/access/jdbc/reader/FullRowReader.java | 14 +- .../cayenne/access/jdbc/reader/IdRowReader.java | 6 +- .../access/jdbc/reader/ScalarRowReader.java | 20 ++- .../access/sqlbuilder/sqltree/ValueNode.java | 8 +- .../translator/batch/BaseBatchTranslator.java | 2 +- .../translator/batch/DeleteBatchTranslator.java | 2 +- .../translator/batch/InsertBatchTranslator.java | 2 +- .../batch/SoftDeleteBatchTranslator.java | 2 +- .../translator/batch/UpdateBatchTranslator.java | 4 +- .../procedure/DefaultProcedureTranslator.java | 12 +- .../translator/select/ColumnDescriptorStage.java | 2 +- .../access/translator/sqltemplate/Context.java | 4 +- .../translator/sqltemplate/directive/Result.java | 2 +- .../java/org/apache/cayenne/dba/JdbcAdapter.java | 10 +- .../org/apache/cayenne/dba/db2/DB2Adapter.java | 4 +- .../org/apache/cayenne/dba/derby/DerbyAdapter.java | 4 +- .../apache/cayenne/dba/ingres/IngresAdapter.java | 4 +- .../apache/cayenne/dba/oracle/OracleAdapter.java | 8 +- .../cayenne/dba/postgres/PostgresSelectAction.java | 4 +- .../cayenne/dba/sqlserver/SQLServerAdapter.java | 6 +- .../apache/cayenne/dba/sybase/SybaseAdapter.java | 6 +- .../cayenne/log/CompactSlf4jJdbcEventLogger.java | 4 +- .../apache/cayenne/log/Slf4jJdbcEventLogger.java | 4 +- .../apache/cayenne/access/jdbc/RSColumnTest.java | 20 +-- .../select/ColumnDescriptorStageTest.java | 2 +- .../DbAdapterDelegatedSelectTranslatorIT.java | 18 +-- .../select/DefaultObjectSelectTranslatorIT.java | 32 ++--- .../DefaultSQLTemplateTranslatorTest.java | 2 +- .../log/CompactSlf4jJdbcEventLoggerTest.java | 2 +- 50 files changed, 266 insertions(+), 275 deletions(-) diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/reader/CryptoRowReaderFactoryDecorator.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/reader/CryptoRowReaderFactoryDecorator.java index 590c3d77f..acfd558fe 100644 --- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/reader/CryptoRowReaderFactoryDecorator.java +++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/reader/CryptoRowReaderFactoryDecorator.java @@ -97,7 +97,7 @@ public class CryptoRowReaderFactoryDecorator extends DefaultRowReaderFactory { RSColumn column = columns[i]; DbAttribute attribute = column.attribute(); - ExtendedType type = column.type(); + ExtendedType type = column.reader(); if (attribute != null && columnMapper.isEncrypted(attribute)) { @@ -110,9 +110,9 @@ public class CryptoRowReaderFactoryDecorator extends DefaultRowReaderFactory { // else - warning? } - encrypted[i] = type == column.type() + encrypted[i] = type == column.reader() ? column - : new RSColumn(column.name(), column.dataRowKey(), column.jdbcType(), type, attribute); + : new RSColumn(column.rsName(), column.rsType(), column.dataRowName(), type, attribute); } return encrypted; diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java index c1df03b96..e6a750743 100644 --- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java +++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java @@ -58,8 +58,8 @@ public class DefaultBindingsTransformer implements BindingsTransformer { ? extendedTypeMap.getRegisteredType(transformed.getClass()) : extendedTypeMap.getDefaultType(); - bindings[positions[i]] = new PSParameter(b.jdbcType(), b.scale(), b.attribute(), - b.statementPosition(), transformed, extendedType); + bindings[positions[i]] = new PSParameter(transformed, b.psPosition(), b.psType(), b.psScale(), extendedType, b.attribute() + ); } } diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultTransformerFactory.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultTransformerFactory.java index 28a42f279..50d1cac5a 100644 --- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultTransformerFactory.java +++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultTransformerFactory.java @@ -80,7 +80,7 @@ public class DefaultTransformerFactory implements TransformerFactory { for (int i = 0; i < dlen; i++) { RSColumn cd = columns[cryptoColumns.get(i)]; - mapKeys[i] = cd.dataRowKey(); + mapKeys[i] = cd.dataRowName(); transformers[i] = transformerFactory.decryptor(cd.attribute()); } diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/DefaultValueForNullProvider.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/DefaultValueForNullProvider.java index 8bd364edc..23ff731ca 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/DefaultValueForNullProvider.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/DefaultValueForNullProvider.java @@ -35,7 +35,7 @@ public class DefaultValueForNullProvider implements ValueForNullProvider { public void set(DbEntity entity, DbAttribute column, Object value, int type) { // the binding is only ever read for its value (inlined into the UPDATE below), never bound to a // statement, so the position is irrelevant here - PSParameter binding = new PSParameter(type, column.getAttributePrecision(), null, 1, value, null); + PSParameter binding = new PSParameter(value, 1, type, column.getAttributePrecision(), null, null); values.put(createKey(entity, column), binding); } diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java index b28c8e3d6..a5ebe78e0 100644 --- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java +++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java @@ -105,7 +105,7 @@ public class ValueForNullIT extends MergeCase { int type = column.getType(); switch (type) { case Types.VARCHAR: - return new PSParameter(type, -1, null, 1, DEFAULT_VALUE_STRING, null); + return new PSParameter(DEFAULT_VALUE_STRING, 1, type, -1, null, null); default: throw new AssertionError("should not get here"); } diff --git a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java index 19522e728..5f1c3ea78 100644 --- a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java +++ b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java @@ -172,8 +172,8 @@ public class BindDirective extends Directive { if (bindings != null) { // a binding's statement position is its 1-based ordinal among the bound parameters; the // ExtendedType is resolved from the value via the adapter - bindings.add(new PSParameter(jdbcType, scale, null, - bindings.size() + 1, value, extendedType(context, value))); + bindings.add(new PSParameter(value, bindings.size() + 1, jdbcType, scale, extendedType(context, value), null + )); } } diff --git a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/ResultDirective.java b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/ResultDirective.java index e6e74a5d9..978d7f8ac 100644 --- a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/ResultDirective.java +++ b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/ResultDirective.java @@ -142,7 +142,7 @@ public class ResultDirective extends Directive { Object jdbcTypeChild = getChild(context, node, 4); int jdbcType = (jdbcTypeChild instanceof Number) ? ((Number) jdbcTypeChild).intValue() : 0; - RSColumn columnDescriptor = new RSColumn(column, label, jdbcType, extendedType, null); + RSColumn columnDescriptor = new RSColumn(column, jdbcType, label, extendedType, null); writer.write(column); diff --git a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslatorTest.java b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslatorTest.java index cda53ff47..37c41afad 100644 --- a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslatorTest.java +++ b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslatorTest.java @@ -245,6 +245,6 @@ public class VelocitySQLTemplateTranslatorTest { private void assertBindingType(Integer expectedType, Object binding) { assertTrue(binding instanceof PSParameter, "Not a binding!"); - assertEquals(expectedType, ((PSParameter) binding).jdbcType()); + assertEquals(expectedType, ((PSParameter) binding).psType()); } } diff --git a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_SelectTest.java b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_SelectTest.java index 561615f4d..d12bc077b 100644 --- a/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_SelectTest.java +++ b/cayenne-velocity/src/test/java/org/apache/cayenne/velocity/VelocitySQLTemplateTranslator_SelectTest.java @@ -67,8 +67,8 @@ public class VelocitySQLTemplateTranslator_SelectTest { assertEquals("SELECT A FROM ME", compiled.sql()); assertEquals(0, compiled.bindings().length); assertEquals(1, compiled.resultColumns().length); - assertEquals("A", compiled.resultColumns()[0].name()); - assertSame(adapter.getExtendedTypes().getDefaultType(), compiled.resultColumns()[0].type()); + assertEquals("A", compiled.resultColumns()[0].rsName()); + assertSame(adapter.getExtendedTypes().getDefaultType(), compiled.resultColumns()[0].reader()); } @Test @@ -81,8 +81,8 @@ public class VelocitySQLTemplateTranslator_SelectTest { assertEquals(0, compiled.bindings().length); assertEquals(1, compiled.resultColumns().length); - assertEquals("A", compiled.resultColumns()[0].name()); - assertSame(adapter.getExtendedTypes().getRegisteredType(String.class), compiled.resultColumns()[0].type()); + assertEquals("A", compiled.resultColumns()[0].rsName()); + assertSame(adapter.getExtendedTypes().getRegisteredType(String.class), compiled.resultColumns()[0].reader()); } @Test @@ -96,9 +96,9 @@ public class VelocitySQLTemplateTranslator_SelectTest { assertEquals(1, compiled.resultColumns().length); RSColumn column = compiled.resultColumns()[0]; - assertEquals("A", column.name()); - assertEquals("B", column.dataRowKey()); - assertSame(adapter.getExtendedTypes().getRegisteredType(String.class), column.type()); + assertEquals("A", column.rsName()); + assertEquals("B", column.dataRowName()); + assertSame(adapter.getExtendedTypes().getRegisteredType(String.class), column.reader()); } @Test @@ -111,8 +111,8 @@ public class VelocitySQLTemplateTranslator_SelectTest { assertEquals(0, compiled.bindings().length); assertEquals(3, compiled.resultColumns().length); - assertEquals("A", compiled.resultColumns()[0].name()); - assertEquals("B", compiled.resultColumns()[1].name()); - assertEquals("C", compiled.resultColumns()[2].name()); + assertEquals("A", compiled.resultColumns()[0].rsName()); + assertEquals("B", compiled.resultColumns()[1].rsName()); + assertEquals("C", compiled.resultColumns()[2].rsName()); } } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java b/cayenne/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java index 13a803fe1..8334ed350 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java @@ -106,8 +106,8 @@ class PrefetchProcessorJointNode extends PrefetchProcessorNode { Map<String, Object> id = new TreeMap<>(); for (int idIndex : idIndices) { - Object value = flatRow.get(columns[idIndex].dataRowKey()); - id.put(columns[idIndex].name(), value); + Object value = flatRow.get(columns[idIndex].dataRowName()); + id.put(columns[idIndex].rsName(), value); } return id; @@ -137,7 +137,7 @@ class PrefetchProcessorJointNode extends PrefetchProcessorNode { // extract subset of flat row columns, recasting to the target keys for (RSColumn column : columns) { - row.put(column.name(), flatRow.get(column.dataRowKey())); + row.put(column.rsName(), flatRow.get(column.dataRowName())); } // since JDBC row reader won't inject JOINED entity name, we have to detect it here... @@ -247,7 +247,7 @@ class PrefetchProcessorJointNode extends PrefetchProcessorNode { RSColumn column = map.get(name); if (column == null) { - column = new RSColumn(name, label, 0, null, null); + column = new RSColumn(name, 0, label, null, null); map.put(name, column); } @@ -273,7 +273,7 @@ class PrefetchProcessorJointNode extends PrefetchProcessorNode { DbAttribute pk = it.next(); for (int j = 0; j < columns.length; j++) { - if (pk.getName().equals(columns[j].name())) { + if (pk.getName().equals(columns[j].rsName())) { idIndices[i] = j; break; } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java index 6a6e448b4..eb32da59a 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java @@ -285,7 +285,7 @@ public class BatchAction extends BaseSQLAction { } } ExtendedType type = dataNode.getAdapter().getExtendedTypes().getRegisteredType(typeForGeneratedPK(key)); - rowBuilder.columns(new RSColumn(columnName, columnName, key.getType(), type, null)); + rowBuilder.columns(new RSColumn(columnName, key.getType(), columnName, type, null)); } else { rowBuilder.resultSet(keysRS); } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/PSBatchParameter.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/PSBatchParameter.java index 11c239b76..eff4e8b43 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/PSBatchParameter.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/PSBatchParameter.java @@ -24,16 +24,16 @@ import org.apache.cayenne.map.DbAttribute; /** * An immutable per-batch parameter binding template, carrying only the static column metadata shared by all - * rows of a batch. A per-row {@link PSParameter} is produced by {@link #bind(int, Object, ExtendedType)}. + * rows of a batch. A per-row {@link PSParameter} is produced by {@link #bind(Object, int, ExtendedType)}. * * @since 5.0 */ -public record PSBatchParameter(int jdbcType, int scale, DbAttribute attribute) { +public record PSBatchParameter(int psType, int psScale, DbAttribute attribute) { /** * Resolves this per-batch template into a per-row {@link PSParameter}. */ - public <T> PSParameter<T> bind(int statementPosition, T value, ExtendedType<T> extendedType) { - return new PSParameter<>(jdbcType, scale, attribute, statementPosition, value, extendedType); + public <T> PSParameter<T> bind(T value, int psPosition, ExtendedType<T> extendedType) { + return new PSParameter<>(value, psPosition, psType, psScale, extendedType, attribute); } } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/PSParameter.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/PSParameter.java index 7b041b164..d66c3b0e3 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/PSParameter.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/PSParameter.java @@ -27,10 +27,11 @@ import org.apache.cayenne.map.DbAttribute; * @since 5.0 */ public record PSParameter<T>( - int jdbcType, - int scale, - DbAttribute attribute, - int statementPosition, T value, - ExtendedType<T> extendedType) { + int psPosition, + int psType, + int psScale, + ExtendedType<T> binder, + DbAttribute attribute +) { } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java index cb16f3dbc..1db6de0fe 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java @@ -199,7 +199,7 @@ public class ProcedureAction extends BaseSQLAction { for (int i = 0; i < columns.length; i++) { ProcedureColumn c = columns[i]; ExtendedType type = typeMap.getRegisteredType(c.javaClass()); - result[i] = new RSColumn(c.name(), c.dataRowKey(), c.jdbcType(), type, null); + result[i] = new RSColumn(c.name(), c.jdbcType(), c.dataRowKey(), type, null); } return result; } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/RSColumn.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/RSColumn.java index 62beee056..6b2acf134 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/RSColumn.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/RSColumn.java @@ -45,15 +45,15 @@ import java.util.function.Function; * @since 5.0 */ public record RSColumn( - String name, - String dataRowKey, - int jdbcType, - ExtendedType<?> type, + String rsName, + int rsType, + String dataRowName, + ExtendedType<?> reader, DbAttribute attribute) { public RSColumn { - if (dataRowKey == null) { - dataRowKey = name; + if (dataRowName == null) { + dataRowName = rsName; } } @@ -67,8 +67,8 @@ public record RSColumn( return false; } - return Objects.equals(name, rhs.name) - && Objects.equals(dataRowKey, rhs.dataRowKey); + return Objects.equals(rsName, rhs.rsName) + && Objects.equals(dataRowName, rhs.dataRowName); } /** @@ -76,7 +76,7 @@ public record RSColumn( */ @Override public int hashCode() { - return Objects.hash(name, dataRowKey); + return Objects.hash(rsName, dataRowName); } /** @@ -169,8 +169,8 @@ public record RSColumn( // validate uniqueness of names if (validateDuplicateColumnNames) { - if (!uniqueNames.add(column.dataRowKey())) { - duplicates.add(column.dataRowKey()); + if (!uniqueNames.add(column.dataRowName())) { + duplicates.add(column.dataRowName()); } } rsColumns[outputLen] = column; @@ -203,9 +203,9 @@ public record RSColumn( for (int i = 0; i < len; i++) { if (columnArray[i] != null) { if (mergeColumnsWithRsMetadata) { - return new RSColumn(rowKey, rowKey, resultSetMetadata.getColumnType(position), columnArray[position - 1].type(), null); + return new RSColumn(rowKey, resultSetMetadata.getColumnType(position), rowKey, columnArray[position - 1].reader(), null); } else { - String columnRowKey = columnArray[i].dataRowKey(); + String columnRowKey = columnArray[i].dataRowName(); // TODO: andrus, 10/14/2009 - 'equalsIgnoreCase' check can result in // subtle bugs in DBs with case-sensitive column names (or when quotes are @@ -220,7 +220,7 @@ public record RSColumn( // columnArray doesn't contain ColumnDescriptor for specified column int jdbcType = resultSetMetadata.getColumnType(position); ExtendedType<?> type = typeMap.getRegisteredType(TypesMapping.getJavaBySqlType(jdbcType)); - return new RSColumn(rowKey, rowKey, jdbcType, type, null); + return new RSColumn(rowKey, jdbcType, rowKey, type, null); } // Return a non-empty string with ColumnLabel or ColumnName or "column_<pos>" for positional column @@ -245,9 +245,9 @@ public record RSColumn( for (int i = 0; i < columnArray.length; i++) { RSColumn column = columnArray[i]; - String name = column.name(); - String dataRowKey = column.dataRowKey(); - ExtendedType<?> type = column.type(); + String name = column.rsName(); + String dataRowKey = column.dataRowName(); + ExtendedType<?> type = column.reader(); if (caseTransformer != null) { name = caseTransformer.apply(name); @@ -262,7 +262,7 @@ public record RSColumn( } } - result[i] = new RSColumn(name, dataRowKey, column.jdbcType(), type, column.attribute()); + result[i] = new RSColumn(name, column.rsType(), dataRowKey, type, column.attribute()); } return result; } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java index 8cf37be5e..b9d5de054 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SQLTemplateAction.java @@ -309,7 +309,7 @@ public class SQLTemplateAction implements SQLAction { for (int i = 0; i < size; i++) { // only the Java class is known here; name and jdbcType are resolved later from ResultSet metadata ExtendedType type = extendedTypes.getRegisteredType(query.getResultColumnsTypes().get(i)); - columns[i] = new RSColumn(null, null, 0, type, null); + columns[i] = new RSColumn(null, 0, null, type, null); } return columns; } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java index ac919b5d9..823bd6aa6 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java @@ -79,7 +79,7 @@ public class SelectAction extends BaseSQLAction { // and therefore only supports standard java types now) hence, a // special moronic case here: if (b.attribute() == null) { - statement.setObject(b.statementPosition(), b.value()); + statement.setObject(b.psPosition(), b.value()); } else { adapter.bindParameter(statement, b); } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/BaseRowReader.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/BaseRowReader.java index 0a6dc3e22..a6cefeab1 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/BaseRowReader.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/BaseRowReader.java @@ -18,13 +18,13 @@ ****************************************************************/ package org.apache.cayenne.access.jdbc.reader; -import java.sql.ResultSet; - import org.apache.cayenne.access.jdbc.RSColumn; import org.apache.cayenne.access.types.ExtendedType; import org.apache.cayenne.map.ObjEntity; import org.apache.cayenne.query.QueryMetadata; +import java.sql.ResultSet; + /** * @since 3.0 */ @@ -47,9 +47,9 @@ abstract class BaseRowReader<T> implements RowReader<T> { this.types = new int[width]; for (int i = 0; i < width; i++) { - converters[i] = columns[i].type(); - labels[i] = columns[i].dataRowKey(); - types[i] = columns[i].jdbcType(); + converters[i] = columns[i].reader(); + labels[i] = columns[i].dataRowName(); + types[i] = columns[i].rsType(); } } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/DefaultRowReaderFactory.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/DefaultRowReaderFactory.java index 1976a65dc..84fdda10d 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/DefaultRowReaderFactory.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/DefaultRowReaderFactory.java @@ -18,94 +18,102 @@ ****************************************************************/ package org.apache.cayenne.access.jdbc.reader; -import java.util.List; - import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.access.jdbc.RSColumn; +import org.apache.cayenne.access.types.ExtendedType; import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.query.EmbeddableResultSegment; import org.apache.cayenne.query.EntityResultSegment; import org.apache.cayenne.query.QueryMetadata; import org.apache.cayenne.query.ScalarResultSegment; +import java.util.List; + /** * @since 4.0 */ public class DefaultRowReaderFactory implements RowReaderFactory { - @Override - public RowReader<?> rowReader(RSColumn[] columns, QueryMetadata queryMetadata, DbAdapter adapter) { - - List<Object> rsMapping = queryMetadata.getResultSetMapping(); - if (rsMapping == null) { - return createFullRowReader(columns, queryMetadata); - } - - int resultWidth = rsMapping.size(); - if (resultWidth == 0) { - throw new CayenneRuntimeException("Empty result columns"); - } - - if (queryMetadata.isSingleResultSetMapping()) { - - Object segment = rsMapping.get(0); - - if (segment instanceof EntityResultSegment) { - return createEntityRowReader(columns, queryMetadata, (EntityResultSegment) segment); - } else if (segment instanceof EmbeddableResultSegment) { - return createEmbeddableRowReader(columns, queryMetadata, (EmbeddableResultSegment) segment); - } else { - return createScalarRowReader(columns, queryMetadata, (ScalarResultSegment) segment); - } - } else { - CompoundRowReader reader = new CompoundRowReader(resultWidth); - - for (int i = 0; i < resultWidth; i++) { - Object segment = rsMapping.get(i); - - if (segment instanceof EntityResultSegment) { - reader.addRowReader(i, - createEntityRowReader(columns, queryMetadata, (EntityResultSegment) segment)); - } else if(segment instanceof EmbeddableResultSegment) { - reader.addRowReader(i, createEmbeddableRowReader(columns, queryMetadata, (EmbeddableResultSegment) segment)); - } else { - reader.addRowReader(i, createScalarRowReader(columns, queryMetadata, (ScalarResultSegment) segment)); - } - } - - return reader; - } - } - - private RowReader<?> createEmbeddableRowReader(RSColumn[] columns, QueryMetadata queryMetadata, EmbeddableResultSegment segment) { - return new EmbeddableRowReader(columns, queryMetadata, segment); - } - - protected RowReader<?> createScalarRowReader(RSColumn[] columns, QueryMetadata queryMetadata, ScalarResultSegment segment) { - return new ScalarRowReader<>(columns, segment); - } - - protected RowReader<?> createEntityRowReader(RSColumn[] columns, QueryMetadata queryMetadata, + @Override + public RowReader<?> rowReader(RSColumn[] columns, QueryMetadata queryMetadata, DbAdapter adapter) { + + List<Object> rsMapping = queryMetadata.getResultSetMapping(); + if (rsMapping == null) { + return createFullRowReader(columns, queryMetadata); + } + + int resultWidth = rsMapping.size(); + if (resultWidth == 0) { + throw new CayenneRuntimeException("Empty result columns"); + } + + if (queryMetadata.isSingleResultSetMapping()) { + return segmentRowReader(rsMapping.getFirst(), columns, queryMetadata); + } else { + CompoundRowReader reader = new CompoundRowReader(resultWidth); + for (int i = 0; i < resultWidth; i++) { + reader.addRowReader(i, segmentRowReader(rsMapping.get(i), columns, queryMetadata)); + } + + return reader; + } + } + + private RowReader<?> segmentRowReader(Object segment, RSColumn[] columns, QueryMetadata queryMetadata) { + return switch (segment) { + case EntityResultSegment ers -> createEntityRowReader(columns, queryMetadata, ers); + case EmbeddableResultSegment ers -> createEmbeddableRowReader(columns, ers); + case ScalarResultSegment srs -> createScalarRowReader(columns, queryMetadata, srs); + case null, default -> throw new IllegalStateException("Unknown segment type: " + segment); + }; + } + + private RowReader<?> createEmbeddableRowReader(RSColumn[] columns, EmbeddableResultSegment segment) { + int segmentWidth = segment.getFields().size(); + int startIndex = segment.getColumnOffset(); + ExtendedType<?>[] converters = new ExtendedType[segmentWidth]; + int[] types = new int[segmentWidth]; + String[] labels = new String[segmentWidth]; + + for (int i = 0; i < segmentWidth; i++) { + converters[i] = columns[startIndex + i].reader(); + types[i] = columns[startIndex + i].rsType(); + labels[i] = segment.getFields().get(columns[startIndex + i].rsName()); + } + + return new EmbeddableRowReader(converters, types, labels, startIndex); + } + + protected RowReader<?> createScalarRowReader(RSColumn[] columns, QueryMetadata queryMetadata, ScalarResultSegment segment) { + int scalarIndex = segment.getColumnOffset(); + return new ScalarRowReader<>( + columns[scalarIndex].reader(), + // jdbc column indexes start from 1 + scalarIndex + 1, + columns[scalarIndex].rsType()); + } + + protected RowReader<?> createEntityRowReader(RSColumn[] columns, QueryMetadata queryMetadata, EntityResultSegment resultMetadata) { - if (queryMetadata.getPageSize() > 0) { - return new IdRowReader<>(columns, queryMetadata, resultMetadata); - } else if (resultMetadata.getClassDescriptor() != null && resultMetadata.getClassDescriptor().hasSubclasses()) { - return new InheritanceAwareEntityRowReader(columns, resultMetadata); - } else { - return new EntityRowReader(columns, resultMetadata); - } - } - - protected RowReader<?> createFullRowReader(RSColumn[] columns, QueryMetadata queryMetadata) { - - if (queryMetadata.getPageSize() > 0) { - return new IdRowReader<>(columns, queryMetadata, null); - } else if (queryMetadata.getClassDescriptor() != null && queryMetadata.getClassDescriptor().hasSubclasses()) { - return new InheritanceAwareRowReader(columns, queryMetadata); - } else { - return new FullRowReader(columns, queryMetadata); - } - } + if (queryMetadata.getPageSize() > 0) { + return new IdRowReader<>(columns, queryMetadata, resultMetadata); + } else if (resultMetadata.getClassDescriptor() != null && resultMetadata.getClassDescriptor().hasSubclasses()) { + return new InheritanceAwareEntityRowReader(columns, resultMetadata); + } else { + return new EntityRowReader(columns, resultMetadata); + } + } + + protected RowReader<?> createFullRowReader(RSColumn[] columns, QueryMetadata queryMetadata) { + + if (queryMetadata.getPageSize() > 0) { + return new IdRowReader<>(columns, queryMetadata, null); + } else if (queryMetadata.getClassDescriptor() != null && queryMetadata.getClassDescriptor().hasSubclasses()) { + return new InheritanceAwareRowReader(columns, queryMetadata); + } else { + return new FullRowReader(columns, queryMetadata); + } + } } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/EmbeddableRowReader.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/EmbeddableRowReader.java index 4691f3530..c172c3528 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/EmbeddableRowReader.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/EmbeddableRowReader.java @@ -19,15 +19,11 @@ package org.apache.cayenne.access.jdbc.reader; -import java.sql.ResultSet; - import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.DataRow; -import org.apache.cayenne.access.jdbc.RSColumn; import org.apache.cayenne.access.types.ExtendedType; -import org.apache.cayenne.query.EmbeddableResultSegment; -import org.apache.cayenne.query.QueryMetadata; -import org.apache.cayenne.util.Util; + +import java.sql.ResultSet; /** * @since 4.2 @@ -36,23 +32,16 @@ class EmbeddableRowReader implements RowReader<DataRow> { private final int startIndex; private final int mapCapacity; - private final ExtendedType[] converters; + private final ExtendedType<?>[] converters; private final String[] labels; private final int[] types; - EmbeddableRowReader(RSColumn[] columns, QueryMetadata queryMetadata, EmbeddableResultSegment segment) { - int segmentWidth = segment.getFields().size(); - this.startIndex = segment.getColumnOffset(); - this.converters = new ExtendedType[segmentWidth]; - this.types = new int[segmentWidth]; - this.labels = new String[segmentWidth]; - - for (int i = 0; i < segmentWidth; i++) { - this.converters[i] = columns[startIndex + i].type(); - types[i] = columns[startIndex + i].jdbcType(); - labels[i] = segment.getFields().get(columns[startIndex +i].name()); - } - this.mapCapacity = (int) Math.ceil(segmentWidth / 0.75); + EmbeddableRowReader(ExtendedType<?>[] converters, int[] types, String[] labels, int startIndex) { + this.converters = converters; + this.types = types; + this.labels = labels; + this.startIndex = startIndex; + this.mapCapacity = (int) Math.ceil(converters.length / 0.75); } @Override @@ -66,11 +55,10 @@ class EmbeddableRowReader implements RowReader<DataRow> { row.put(labels[i], val); } return row; - } catch (CayenneRuntimeException cex) { - // rethrow unmodified - throw cex; - } catch (Exception otherex) { - throw new CayenneRuntimeException("Exception materializing column.", Util.unwindException(otherex)); + } catch (CayenneRuntimeException ex) { + throw ex; + } catch (Exception ex) { + throw new CayenneRuntimeException("Exception materializing column.", ex); } } } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/EntityRowReader.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/EntityRowReader.java index e97141ffe..524066fa1 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/EntityRowReader.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/EntityRowReader.java @@ -56,18 +56,18 @@ class EntityRowReader implements RowReader<DataRow> { this.labels = new String[segmentWidth]; for (int i = 0; i < segmentWidth; i++) { - this.converters[i] = columns[startIndex + i].type(); - types[i] = columns[startIndex + i].jdbcType(); + this.converters[i] = columns[startIndex + i].reader(); + types[i] = columns[startIndex + i].rsType(); // query translator may change the order of fields compare to the entity // result, so figure out DataRow labels by doing reverse lookup of // RowDescriptor labels... - if (columns[startIndex + i].dataRowKey().contains(".")) { + if (columns[startIndex + i].dataRowName().contains(".")) { // if the dataRowKey contains ".", it is prefetched column and // we can use it instead of search the name by alias - labels[i] = columns[startIndex + i].dataRowKey(); + labels[i] = columns[startIndex + i].dataRowName(); } else { - labels[i] = segmentMetadata.getColumnPath(columns[startIndex + i].dataRowKey()); + labels[i] = segmentMetadata.getColumnPath(columns[startIndex + i].dataRowName()); } } this.mapCapacity = (int) Math.ceil(segmentWidth / 0.75); diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/FullRowReader.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/FullRowReader.java index 9e95a1ac5..31857d6cd 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/FullRowReader.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/FullRowReader.java @@ -18,13 +18,12 @@ ****************************************************************/ package org.apache.cayenne.access.jdbc.reader; -import java.sql.ResultSet; - import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.DataRow; import org.apache.cayenne.access.jdbc.RSColumn; import org.apache.cayenne.query.QueryMetadata; -import org.apache.cayenne.util.Util; + +import java.sql.ResultSet; /** * @since 3.0 @@ -56,11 +55,10 @@ class FullRowReader extends BaseRowReader<DataRow> { postprocessRow(resultSet, dataRow); return dataRow; - } catch (CayenneRuntimeException cex) { - // rethrow unmodified - throw cex; - } catch (Exception otherex) { - throw new CayenneRuntimeException("Exception materializing column.", Util.unwindException(otherex)); + } catch (CayenneRuntimeException ex) { + throw ex; + } catch (Exception ex) { + throw new CayenneRuntimeException("Exception materializing column.", ex); } } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/IdRowReader.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/IdRowReader.java index b7aaea30e..789ccf2d8 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/IdRowReader.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/IdRowReader.java @@ -18,8 +18,6 @@ ****************************************************************/ package org.apache.cayenne.access.jdbc.reader; -import java.sql.ResultSet; - import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.DataRow; import org.apache.cayenne.access.jdbc.RSColumn; @@ -29,6 +27,8 @@ import org.apache.cayenne.query.EntityResultSegment; import org.apache.cayenne.query.QueryMetadata; import org.apache.cayenne.util.Util; +import java.sql.ResultSet; + /** * @since 3.0 */ @@ -58,7 +58,7 @@ class IdRowReader<T> extends BaseRowReader<T> { resultMetadata.getColumnOffset() : 0; for(int i = offset, j = 0; i < offset + len; i++) { - DbAttribute a = dbEntity.getAttribute(columns[i].name()); + DbAttribute a = dbEntity.getAttribute(columns[i].rsName()); if(a != null && a.isPrimaryKey()) { pk[j++] = i; } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/ScalarRowReader.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/ScalarRowReader.java index 4c4ff75c5..14e86dd6b 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/ScalarRowReader.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/ScalarRowReader.java @@ -18,35 +18,31 @@ ****************************************************************/ package org.apache.cayenne.access.jdbc.reader; -import java.sql.ResultSet; - import org.apache.cayenne.CayenneRuntimeException; -import org.apache.cayenne.access.jdbc.RSColumn; import org.apache.cayenne.access.types.ExtendedType; -import org.apache.cayenne.query.ScalarResultSegment; import org.apache.cayenne.util.Util; +import java.sql.ResultSet; + /** * @since 3.0 */ class ScalarRowReader<T> implements RowReader<T> { - private final ExtendedType<T> converter; + private final ExtendedType<T> reader; private final int index; private final int type; - @SuppressWarnings("unchecked") - ScalarRowReader(RSColumn[] columns, ScalarResultSegment segmentMetadata) { - int scalarIndex = segmentMetadata.getColumnOffset(); - this.converter = (ExtendedType<T>) columns[scalarIndex].type(); - this.type = columns[scalarIndex].jdbcType(); - this.index = scalarIndex + 1; + public ScalarRowReader(ExtendedType<T> reader, int index, int type) { + this.reader = reader; + this.index = index; + this.type = type; } @Override public T readRow(ResultSet resultSet) { try { - return converter.materializeObject(resultSet, index, type); + return reader.materializeObject(resultSet, index, type); } catch (CayenneRuntimeException cex) { // rethrow unmodified throw cex; diff --git a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java index ab5263ed7..3aea5cdff 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java @@ -135,10 +135,10 @@ public class ValueNode extends Node { // literals not bound to a column); fall back to deriving the JDBC type from the value int statementPosition = context.getBindings().size() + 1; PSParameter binding = (attribute != null) - ? new PSParameter(context.getAdapter().preferredBindingType(attribute.getType()), - attribute.getScale(), attribute, statementPosition, value, extendedType) - : new PSParameter(context.getAdapter().preferredBindingType(TypesMapping.getSqlTypeByJava(value.getClass())), - -1, null, statementPosition, value, extendedType); + ? new PSParameter(value, statementPosition, context.getAdapter().preferredBindingType(attribute.getType()), + attribute.getScale(), extendedType, attribute) + : new PSParameter(value, statementPosition, context.getAdapter().preferredBindingType(TypesMapping.getSqlTypeByJava(value.getClass())), + -1, extendedType, null); context.getBindings().add(binding); } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/BaseBatchTranslator.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/BaseBatchTranslator.java index 0c7b177ba..deeeadc2c 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/BaseBatchTranslator.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/BaseBatchTranslator.java @@ -54,7 +54,7 @@ public abstract class BaseBatchTranslator<T extends BatchQuery> implements Batch protected PSBatchParameter[] createBindings(BatchTranslatorContext<T> context) { return context.getBindings().stream() - .map(b -> new PSBatchParameter(b.jdbcType(), b.scale(), b.attribute())) + .map(b -> new PSBatchParameter(b.psType(), b.psScale(), b.attribute())) .toArray(PSBatchParameter[]::new); } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java index 092095fe8..69d99efb6 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java @@ -69,7 +69,7 @@ public class DeleteBatchTranslator extends BaseBatchTranslator<DeleteBatchQuery> // skip null attributes... they are translated as "IS NULL" if (value != null) { ExtendedType extendedType = context.getAdapter().getExtendedTypes().getRegisteredType(value.getClass()); - bindings[position] = template[position].bind(++position, value, extendedType); + bindings[position] = template[position].bind(value, ++position, extendedType); } return position; } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java index 477de4d0b..9e7bd2e6c 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java @@ -70,7 +70,7 @@ public class InsertBatchTranslator extends BaseBatchTranslator<InsertBatchQuery> ExtendedType extendedType = value != null ? context.getAdapter().getExtendedTypes().getRegisteredType(value.getClass()) : context.getAdapter().getExtendedTypes().getDefaultType(); - bindings[j] = template[j].bind(++j, value, extendedType); + bindings[j] = template[j].bind(value, ++j, extendedType); } return bindings; } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java index f2b4ea4eb..d08a39a6e 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java @@ -90,7 +90,7 @@ public class SoftDeleteBatchTranslator extends DeleteBatchTranslator { DbAttribute deleteAttribute = deleteBatch.getDbEntity().getAttribute(deletedFieldName); String typeName = TypesMapping.getJavaBySqlType(deleteAttribute); ExtendedType extendedType = context.getAdapter().getExtendedTypes().getRegisteredType(typeName); - bindings[0] = template[0].bind(1, Boolean.TRUE, extendedType); + bindings[0] = template[0].bind(Boolean.TRUE, 1, extendedType); // bindings[0] holds the constant 'deleted' flag, so qualifier values start at position 1 for(int i=0, position=1; i<deleteBatch.getDbAttributes().size(); i++) { diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java index 5589158c6..d3e8c39d7 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java @@ -67,7 +67,7 @@ public class UpdateBatchTranslator extends BaseBatchTranslator<UpdateBatchQuery> ExtendedType extendedType = value == null ? context.getAdapter().getExtendedTypes().getDefaultType() : context.getAdapter().getExtendedTypes().getRegisteredType(value.getClass()); - bindings[j] = template[j].bind(++j, value, extendedType); + bindings[j] = template[j].bind(value, ++j, extendedType); } for(DbAttribute attribute : updateBatch.getQualifierAttributes()) { @@ -77,7 +77,7 @@ public class UpdateBatchTranslator extends BaseBatchTranslator<UpdateBatchQuery> } Object value = row.getValue(i); ExtendedType extendedType = context.getAdapter().getExtendedTypes().getRegisteredType(value.getClass()); - bindings[j] = template[j].bind(++j, value, extendedType); + bindings[j] = template[j].bind(value, ++j, extendedType); i++; } return bindings; diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/procedure/DefaultProcedureTranslator.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/procedure/DefaultProcedureTranslator.java index 39556e370..c62c36929 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/procedure/DefaultProcedureTranslator.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/procedure/DefaultProcedureTranslator.java @@ -19,8 +19,6 @@ package org.apache.cayenne.access.translator.procedure; -import java.util.Map; - import org.apache.cayenne.access.jdbc.PSParameter; import org.apache.cayenne.access.types.ExtendedType; import org.apache.cayenne.dba.DbAdapter; @@ -29,6 +27,8 @@ import org.apache.cayenne.map.Procedure; import org.apache.cayenne.map.ProcedureParameter; import org.apache.cayenne.query.ProcedureQuery; +import java.util.Map; + /** * A {@link ProcedureTranslator} returned by the base {@link org.apache.cayenne.dba.JdbcAdapter}. Adapters may subclass * it to customize the generated call string. @@ -76,12 +76,12 @@ public class DefaultProcedureTranslator implements ProcedureTranslator { * Builds a {@link PSParameter} for a single call parameter. IN (and INOUT) parameters carry the actual value * and its {@link ExtendedType}; pure OUT parameters carry an "[OUT]" marker value so that logging renders nicely. */ - protected PSParameter createBinding(DbAdapter adapter, ProcedureParameter param, + protected PSParameter<?> createBinding(DbAdapter adapter, ProcedureParameter param, Map<String, ?> queryValues, int position) { // match values with parameters in the correct order, assuming a missing value is NULL if (param.getDirection() == ProcedureParameter.OUT_PARAMETER) { - return new PSParameter(param.getType(), param.getPrecision(), null, position, OUT_PARAM, null); + return new PSParameter<>(OUT_PARAM, position, param.getType(), param.getPrecision(), null, null); } Object value = queryValues.get(param.getName()); @@ -89,8 +89,8 @@ public class DefaultProcedureTranslator implements ProcedureTranslator { ? adapter.getExtendedTypes().getRegisteredType(value.getClass()) : adapter.getExtendedTypes().getDefaultType(); - return new PSParameter(adapter.preferredBindingType(param.getType()), param.getPrecision(), null, - position, value, extendedType); + return new PSParameter<>( + value, position, adapter.preferredBindingType(param.getType()), param.getPrecision(), extendedType, null); } /** diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/select/ColumnDescriptorStage.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/select/ColumnDescriptorStage.java index a5bc53aa7..692bb0554 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/select/ColumnDescriptorStage.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/select/ColumnDescriptorStage.java @@ -49,7 +49,7 @@ class ColumnDescriptorStage implements TranslationStage { ExtendedType type = context.getAdapter().getExtendedTypes().getRegisteredType(resultNode.getJavaType()); RSColumn descriptor = new RSColumn( - name, resultNode.getDataRowKey(), resultNode.getJdbcType(), type, attribute); + name, resultNode.getJdbcType(), resultNode.getDataRowKey(), type, attribute); context.getColumnDescriptors().add(descriptor); } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/Context.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/Context.java index 69dd5bf91..e041174a1 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/Context.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/Context.java @@ -128,8 +128,8 @@ public class Context { } // a binding's statement position is its 1-based ordinal among the bound parameters; the // ExtendedType is resolved from the value via the adapter - parameterBindings.add(new PSParameter(jdbcType, scale, null, - parameterBindings.size() + 1, value, extendedType(value))); + parameterBindings.add(new PSParameter(value, parameterBindings.size() + 1, jdbcType, scale, extendedType(value), null + )); } private ExtendedType<?> extendedType(Object value) { diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/directive/Result.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/directive/Result.java index 33b4d2b7a..13b47ca4c 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/directive/Result.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/directive/Result.java @@ -100,7 +100,7 @@ public class Result implements Directive { jdbcType = (int) expressions[4].evaluateAsLong(context); } - context.addColumnDescriptor(new RSColumn(column, label, jdbcType, context.getExtendedType(javaClass), null)); + context.addColumnDescriptor(new RSColumn(column, jdbcType, label, context.getExtendedType(javaClass), null)); context.getBuilder().append(column); if (!Util.isEmptyString(alias) && !alias.equals(column)) { diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java b/cayenne/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java index e68dba5de..f62bfb7f9 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java @@ -625,14 +625,14 @@ public class JdbcAdapter implements DbAdapter { public void bindParameter(PreparedStatement statement, PSParameter<?> parameter) throws Exception { if (parameter.value() == null) { - statement.setNull(parameter.statementPosition(), parameter.jdbcType()); + statement.setNull(parameter.psPosition(), parameter.psType()); } else { - ExtendedType t = parameter.extendedType(); + ExtendedType t = parameter.binder(); t.setJdbcObject(statement, parameter.value(), - parameter.statementPosition(), - parameter.jdbcType(), - parameter.scale()); + parameter.psPosition(), + parameter.psType(), + parameter.psScale()); } } diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java b/cayenne/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java index 9e9adf868..99ca2b389 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java @@ -191,8 +191,8 @@ public class DB2Adapter extends JdbcAdapter { @Override public void bindParameter(PreparedStatement statement, PSParameter<?> parameter) throws Exception { - if (parameter.value() == null && (parameter.jdbcType() == 0 || parameter.jdbcType() == Types.BOOLEAN)) { - statement.setNull(parameter.statementPosition(), Types.VARCHAR); + if (parameter.value() == null && (parameter.psType() == 0 || parameter.psType() == Types.BOOLEAN)) { + statement.setNull(parameter.psPosition(), Types.VARCHAR); } else { super.bindParameter(statement, parameter); } diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java b/cayenne/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java index 5ab308bd1..e5b55e1b1 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java @@ -216,8 +216,8 @@ public class DerbyAdapter extends JdbcAdapter { @Override public void bindParameter(PreparedStatement statement, PSParameter<?> parameter) throws Exception { - if (parameter.value() == null && parameter.jdbcType() == 0) { - statement.setNull(parameter.statementPosition(), Types.VARCHAR); + if (parameter.value() == null && parameter.psType() == 0) { + statement.setNull(parameter.psPosition(), Types.VARCHAR); } else { super.bindParameter(statement, parameter); } diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java b/cayenne/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java index 03c30007a..83bfdb64d 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java @@ -118,8 +118,8 @@ public class IngresAdapter extends JdbcAdapter { @Override public void bindParameter(PreparedStatement statement, PSParameter<?> parameter) throws Exception { - if (parameter.value() == null && (parameter.jdbcType() == Types.BIT)) { - statement.setNull(parameter.statementPosition(), Types.SMALLINT); + if (parameter.value() == null && (parameter.psType() == Types.BIT)) { + statement.setNull(parameter.psPosition(), Types.SMALLINT); } else { super.bindParameter(statement, parameter); } diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java index 8e84c99f4..ffa747483 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java @@ -266,14 +266,14 @@ public class OracleAdapter extends JdbcAdapter { // Oracle doesn't support BOOLEAN even when binding NULL, so have to // intercept // NULL Boolean here, as super doesn't pass it through ExtendedType... - if (parameter.value() == null && parameter.jdbcType() == Types.BOOLEAN) { + if (parameter.value() == null && parameter.psType() == Types.BOOLEAN) { ExtendedType typeProcessor = getExtendedTypes().getRegisteredType(Boolean.class); typeProcessor.setJdbcObject( statement, parameter.value(), - parameter.statementPosition(), - parameter.jdbcType(), - parameter.scale()); + parameter.psPosition(), + parameter.psType(), + parameter.psScale()); } else { super.bindParameter(statement, parameter); } diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectAction.java b/cayenne/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectAction.java index 221f13429..8b375f314 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/postgres/PostgresSelectAction.java @@ -75,13 +75,13 @@ class PostgresSelectAction extends SelectAction { private static boolean readsLargeObjects(TranslatedSelect translated) { for (RSColumn column : translated.resultColumns()) { - if (isLargeObject(column.jdbcType())) { + if (isLargeObject(column.rsType())) { return true; } } // a large object bound as a parameter (e.g. in a qualifier) also needs a transaction for (PSParameter binding : translated.bindings()) { - if (isLargeObject(binding.jdbcType())) { + if (isLargeObject(binding.psType())) { return true; } } diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java b/cayenne/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java index 0212e8052..3d7143679 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapter.java @@ -142,12 +142,12 @@ public class SQLServerAdapter extends JdbcAdapter { // SQL Server driver doesn't like CLOBs and BLOBs as parameters if (parameter.value() == null) { - int jdbcType = switch (parameter.jdbcType()) { + int jdbcType = switch (parameter.psType()) { case Types.CLOB, 0 -> Types.VARCHAR; case Types.BLOB -> Types.VARBINARY; - default -> parameter.jdbcType(); + default -> parameter.psType(); }; - statement.setNull(parameter.statementPosition(), jdbcType); + statement.setNull(parameter.psPosition(), jdbcType); } else { super.bindParameter(statement, parameter); } diff --git a/cayenne/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java b/cayenne/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java index be1782ab2..98450cfa1 100644 --- a/cayenne/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java +++ b/cayenne/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java @@ -147,12 +147,12 @@ public class SybaseAdapter extends JdbcAdapter { // Sybase driver doesn't like CLOBs and BLOBs as parameters if (parameter.value() == null) { - int jdbcType = switch (parameter.jdbcType()) { + int jdbcType = switch (parameter.psType()) { case Types.CLOB, 0 -> Types.VARCHAR; case Types.BLOB -> Types.VARBINARY; - default -> parameter.jdbcType(); + default -> parameter.psType(); }; - statement.setNull(parameter.statementPosition(), jdbcType); + statement.setNull(parameter.psPosition(), jdbcType); } else { super.bindParameter(statement, parameter); } diff --git a/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java b/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java index c6d9bbdcc..59540dcd8 100644 --- a/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java +++ b/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java @@ -117,8 +117,8 @@ public class CompactSlf4jJdbcEventLogger extends Slf4jJdbcEventLogger { key = attribute.getName(); } - if (b.extendedType() != null) { - value = b.extendedType().toString(b.value()); + if (b.binder() != null) { + value = b.binder().toString(b.value()); } else if (b.value() == null) { value = "NULL"; } else { diff --git a/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java b/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java index 3c9e749ca..05d3b41b2 100644 --- a/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java +++ b/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java @@ -118,8 +118,8 @@ public class Slf4jJdbcEventLogger implements JdbcEventLogger { buffer.append(":"); - if (b.extendedType() != null) { - buffer.append(b.extendedType().toString(b.value())); + if (b.binder() != null) { + buffer.append(b.binder().toString(b.value())); } else if(b.value() == null) { buffer.append("NULL"); } else { diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/RSColumnTest.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/RSColumnTest.java index d4c0819a8..dd5c45da8 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/RSColumnTest.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/RSColumnTest.java @@ -31,22 +31,22 @@ public class RSColumnTest { @Test public void name() { - RSColumn column = new RSColumn("abc", null, 0, null, null); - assertEquals("abc", column.name()); + RSColumn column = new RSColumn("abc", 0, null, null, null); + assertEquals("abc", column.rsName()); } @Test public void label() { - RSColumn column = new RSColumn(null, "abc", 0, null, null); - assertEquals("abc", column.dataRowKey()); + RSColumn column = new RSColumn(null, 0, "abc", null, null); + assertEquals("abc", column.dataRowName()); } @Test public void equals() { // type should be ignored in the comparison - RSColumn column1 = new RSColumn("n1", "k1", Types.VARCHAR, null, null); - RSColumn column2 = new RSColumn("n1", "k1", Types.BOOLEAN, null, null); - RSColumn column3 = new RSColumn("n1", "k3", 0, null, null); + RSColumn column1 = new RSColumn("n1", Types.VARCHAR, "k1", null, null); + RSColumn column2 = new RSColumn("n1", Types.BOOLEAN, "k1", null, null); + RSColumn column3 = new RSColumn("n1", 0, "k3", null, null); assertEquals(column1, column2); assertFalse(column1.equals(column3)); @@ -56,9 +56,9 @@ public class RSColumnTest { @Test public void hashCodeTest() { // type should be ignored in the comparison - RSColumn column1 = new RSColumn("n1", "k1", Types.VARCHAR, null, null); - RSColumn column2 = new RSColumn("n1", "k1", Types.BOOLEAN, null, null); - RSColumn column3 = new RSColumn("n1", "k3", 0, null, null); + RSColumn column1 = new RSColumn("n1", Types.VARCHAR, "k1", null, null); + RSColumn column2 = new RSColumn("n1", Types.BOOLEAN, "k1", null, null); + RSColumn column3 = new RSColumn("n1", 0, "k3", null, null); assertEquals(column1.hashCode(), column2.hashCode()); diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ColumnDescriptorStageTest.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ColumnDescriptorStageTest.java index 3b74ec23e..42bde85de 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ColumnDescriptorStageTest.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/ColumnDescriptorStageTest.java @@ -48,6 +48,6 @@ public class ColumnDescriptorStageTest { assertEquals(1, context.getColumnDescriptors().size()); RSColumn descriptor = context.getColumnDescriptors().iterator().next(); - assertEquals("key", descriptor.dataRowKey()); + assertEquals("key", descriptor.dataRowName()); } } \ No newline at end of file diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DbAdapterDelegatedSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DbAdapterDelegatedSelectTranslatorIT.java index 69650cb3a..dc4acd87b 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DbAdapterDelegatedSelectTranslatorIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DbAdapterDelegatedSelectTranslatorIT.java @@ -720,7 +720,7 @@ public class DbAdapterDelegatedSelectTranslatorIT { tr.sql(); List<RSColumn> columns = Arrays.asList(tr.resultColumns()); - columns.sort(Comparator.comparing(RSColumn::name)); + columns.sort(Comparator.comparing(RSColumn::rsName)); DbEntity entity = env.context().getEntityResolver().getDbEntity("PAINTING"); List<DbAttribute> attributes = new ArrayList<>(entity.getAttributes()); @@ -733,9 +733,9 @@ public class DbAdapterDelegatedSelectTranslatorIT { DbAttribute attribute = attributes.get(i); RSColumn descriptor = columns.get(i); assertEquals(attribute, descriptor.attribute()); - assertEquals(attribute.getName(), descriptor.name()); - assertEquals(attribute.getName(), descriptor.dataRowKey()); - assertEquals(attribute.getType(), descriptor.jdbcType()); + assertEquals(attribute.getName(), descriptor.rsName()); + assertEquals(attribute.getName(), descriptor.dataRowName()); + assertEquals(attribute.getType(), descriptor.rsType()); } } @@ -750,7 +750,7 @@ public class DbAdapterDelegatedSelectTranslatorIT { tr.sql(); List<RSColumn> columns = Arrays.asList(tr.resultColumns()); - columns.sort(Comparator.comparing(RSColumn::name)); + columns.sort(Comparator.comparing(RSColumn::rsName)); DbEntity rootEntity = env.context().getEntityResolver().getDbEntity("PAINTING"); List<DbAttribute> attributes = new ArrayList<>(rootEntity.getAttributes()); @@ -762,13 +762,13 @@ public class DbAdapterDelegatedSelectTranslatorIT { DbAttribute attribute = attributes.get(i); RSColumn descriptor = columns.get(i); assertEquals(attribute, descriptor.attribute()); - assertEquals(attribute.getName(), descriptor.name()); + assertEquals(attribute.getName(), descriptor.rsName()); if("ARTIST".equals(attribute.getEntity().getName())) { - assertEquals("toArtist." + attribute.getName(), descriptor.dataRowKey()); + assertEquals("toArtist." + attribute.getName(), descriptor.dataRowName()); } else { - assertEquals(attribute.getName(), descriptor.dataRowKey()); + assertEquals(attribute.getName(), descriptor.dataRowName()); } - assertEquals(attribute.getType(), descriptor.jdbcType()); + assertEquals(attribute.getType(), descriptor.rsType()); } } diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java index e53b927a4..8e705bf0b 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java @@ -48,9 +48,9 @@ public class DefaultObjectSelectTranslatorIT { assertEquals(0, translator.bindings().length); assertEquals(3, translator.resultColumns().length); - assertEquals("ARTIST_NAME", translator.resultColumns()[0].dataRowKey()); - assertEquals("DATE_OF_BIRTH", translator.resultColumns()[1].dataRowKey()); - assertEquals("ARTIST_ID", translator.resultColumns()[2].dataRowKey()); + assertEquals("ARTIST_NAME", translator.resultColumns()[0].dataRowName()); + assertEquals("DATE_OF_BIRTH", translator.resultColumns()[1].dataRowName()); + assertEquals("ARTIST_ID", translator.resultColumns()[2].dataRowName()); assertFalse(translator.hasJoins()); assertFalse(translator.suppressingDistinct()); } @@ -76,9 +76,9 @@ public class DefaultObjectSelectTranslatorIT { assertEquals("PAINTING_TITLE", translator.bindings()[1].attribute().getName()); assertEquals(3, translator.resultColumns().length); - assertEquals("ARTIST_NAME", translator.resultColumns()[0].dataRowKey()); - assertEquals("DATE_OF_BIRTH", translator.resultColumns()[1].dataRowKey()); - assertEquals("ARTIST_ID", translator.resultColumns()[2].dataRowKey()); + assertEquals("ARTIST_NAME", translator.resultColumns()[0].dataRowName()); + assertEquals("DATE_OF_BIRTH", translator.resultColumns()[1].dataRowName()); + assertEquals("ARTIST_ID", translator.resultColumns()[2].dataRowName()); assertTrue(translator.hasJoins()); assertFalse(translator.suppressingDistinct()); @@ -108,16 +108,16 @@ public class DefaultObjectSelectTranslatorIT { assertEquals(0, translator.bindings().length); assertEquals(9, translator.resultColumns().length); - assertEquals("ESTIMATED_PRICE", translator.resultColumns()[0].dataRowKey()); - assertEquals("PAINTING_DESCRIPTION", translator.resultColumns()[1].dataRowKey()); - assertEquals("PAINTING_TITLE", translator.resultColumns()[2].dataRowKey()); - assertEquals("ARTIST_ID", translator.resultColumns()[3].dataRowKey()); - assertEquals("GALLERY_ID", translator.resultColumns()[4].dataRowKey()); - assertEquals("PAINTING_ID", translator.resultColumns()[5].dataRowKey()); - - assertEquals("toArtist.ARTIST_ID", translator.resultColumns()[6].dataRowKey()); - assertEquals("toArtist.DATE_OF_BIRTH", translator.resultColumns()[7].dataRowKey()); - assertEquals("toArtist.ARTIST_NAME", translator.resultColumns()[8].dataRowKey()); + assertEquals("ESTIMATED_PRICE", translator.resultColumns()[0].dataRowName()); + assertEquals("PAINTING_DESCRIPTION", translator.resultColumns()[1].dataRowName()); + assertEquals("PAINTING_TITLE", translator.resultColumns()[2].dataRowName()); + assertEquals("ARTIST_ID", translator.resultColumns()[3].dataRowName()); + assertEquals("GALLERY_ID", translator.resultColumns()[4].dataRowName()); + assertEquals("PAINTING_ID", translator.resultColumns()[5].dataRowName()); + + assertEquals("toArtist.ARTIST_ID", translator.resultColumns()[6].dataRowName()); + assertEquals("toArtist.DATE_OF_BIRTH", translator.resultColumns()[7].dataRowName()); + assertEquals("toArtist.ARTIST_NAME", translator.resultColumns()[8].dataRowName()); assertTrue(translator.hasJoins()); assertFalse(translator.suppressingDistinct()); diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/sqltemplate/DefaultSQLTemplateTranslatorTest.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/sqltemplate/DefaultSQLTemplateTranslatorTest.java index ac02e77f2..f47286e94 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/translator/sqltemplate/DefaultSQLTemplateTranslatorTest.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/sqltemplate/DefaultSQLTemplateTranslatorTest.java @@ -241,7 +241,7 @@ public class DefaultSQLTemplateTranslatorTest { private void assertBindingType(Integer expectedType, Object binding) { assertTrue(binding instanceof PSParameter, "Not a binding!"); - assertEquals(expectedType, ((PSParameter) binding).jdbcType()); + assertEquals(expectedType, ((PSParameter) binding).psType()); } } \ No newline at end of file diff --git a/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java b/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java index 89c043df1..2877fe339 100644 --- a/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java +++ b/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java @@ -111,6 +111,6 @@ public class CompactSlf4jJdbcEventLoggerTest { private PSParameter createBinding(String name, int position, Object object, ExtendedType type){ DbAttribute attribute = new DbAttribute(name); - return new PSParameter(attribute.getType(), -1, attribute, position, object, type); + return new PSParameter(object, position, attribute.getType(), -1, type, attribute); } }
