This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch past-M2 in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit ee8ae15498ee84fdba96e8bfa3e179c3da697b07 Author: Andrus Adamchik <[email protected]> AuthorDate: Sat May 30 21:56:06 2026 -0400 Row postprocessing seems like dead code, removing presumably "Map<ObjAttribute, ColumnDescriptor> attributeOverrides" in TranslatedSelect is always empty, so we can unwind a bunch of code --- .../reader/CryptoRowReaderFactoryDecorator.java | 16 +-- .../java/org/apache/cayenne/access/DataNode.java | 14 +-- .../apache/cayenne/access/jdbc/BatchAction.java | 3 +- .../apache/cayenne/access/jdbc/SelectAction.java | 2 +- .../cayenne/access/jdbc/reader/BaseRowReader.java | 4 +- .../access/jdbc/reader/DataRowPostProcessor.java | 93 --------------- .../jdbc/reader/DefaultRowReaderFactory.java | 129 +++------------------ .../access/jdbc/reader/EntityRowReader.java | 10 +- .../cayenne/access/jdbc/reader/FullRowReader.java | 8 +- .../cayenne/access/jdbc/reader/IdRowReader.java | 11 +- .../reader/InheritanceAwareEntityRowReader.java | 11 +- .../jdbc/reader/InheritanceAwareRowReader.java | 8 +- .../access/jdbc/reader/RowReaderFactory.java | 9 +- .../access/translator/select/TranslatedSelect.java | 4 - .../translator/select/TranslatorContext.java | 2 - .../access/jdbc/JDBCResultIteratorTest.java | 4 +- 16 files changed, 36 insertions(+), 292 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 35d8aa9d4..549f693a7 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 @@ -38,7 +38,6 @@ import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.dba.TypesMapping; import org.apache.cayenne.di.Inject; import org.apache.cayenne.map.DbAttribute; -import org.apache.cayenne.map.ObjAttribute; import org.apache.cayenne.query.EntityResultSegment; import org.apache.cayenne.query.QueryMetadata; import org.apache.cayenne.query.ScalarResultSegment; @@ -61,10 +60,9 @@ public class CryptoRowReaderFactoryDecorator extends DefaultRowReaderFactory { } @Override - public RowReader<?> rowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DbAdapter adapter, - Map<ObjAttribute, ColumnDescriptor> attributeOverrides) { + public RowReader<?> rowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DbAdapter adapter) { RowDescriptor encryptedRowDescriptor = encryptedRowDescriptor(descriptor, adapter.getExtendedTypes()); - return super.rowReader(encryptedRowDescriptor, queryMetadata, adapter, attributeOverrides); + return super.rowReader(encryptedRowDescriptor, queryMetadata, adapter); } @Override @@ -77,18 +75,16 @@ public class CryptoRowReaderFactoryDecorator extends DefaultRowReaderFactory { @Override protected RowReader<?> createEntityRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, - EntityResultSegment resultMetadata, - PostprocessorFactory postProcessorFactory) { + EntityResultSegment resultMetadata) { RowReader<?> entityRowReader = super - .createEntityRowReader(descriptor, queryMetadata, resultMetadata, postProcessorFactory); + .createEntityRowReader(descriptor, queryMetadata, resultMetadata); return new DecoratedEntityRowReader(descriptor, entityRowReader, resultMetadata); } @Override - protected RowReader<?> createFullRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, - PostprocessorFactory postProcessorFactory) { + protected RowReader<?> createFullRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata) { RowReader<?> fullRowReader = super - .createFullRowReader(descriptor, queryMetadata, postProcessorFactory); + .createFullRowReader(descriptor, queryMetadata); return new DecoratedFullRowReader(descriptor, fullRowReader); } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/DataNode.java b/cayenne/src/main/java/org/apache/cayenne/access/DataNode.java index 420706eaa..5ba5b83b3 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/DataNode.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/DataNode.java @@ -21,7 +21,6 @@ package org.apache.cayenne.access; import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.access.dbsync.SchemaUpdateStrategy; -import org.apache.cayenne.access.jdbc.ColumnDescriptor; import org.apache.cayenne.access.jdbc.RowDescriptor; import org.apache.cayenne.access.translator.sqltemplate.SQLTemplateTranslator; import org.apache.cayenne.access.jdbc.reader.RowReader; @@ -36,7 +35,6 @@ import org.apache.cayenne.log.JdbcEventLogger; import org.apache.cayenne.log.NoopJdbcEventLogger; import org.apache.cayenne.map.DataMap; import org.apache.cayenne.map.EntityResolver; -import org.apache.cayenne.map.ObjAttribute; import org.apache.cayenne.query.BatchQuery; import org.apache.cayenne.query.Query; import org.apache.cayenne.query.QueryMetadata; @@ -323,17 +321,7 @@ public class DataNode { * @since 4.0 */ public RowReader<?> rowReader(RowDescriptor descriptor, QueryMetadata queryMetadata) { - return rowReader(descriptor, queryMetadata, Collections.emptyMap()); - } - - /** - * Creates a {@link RowReader} using internal {@link RowReaderFactory}. - * - * @since 4.0 - */ - public RowReader<?> rowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, - Map<ObjAttribute, ColumnDescriptor> attributeOverrides) { - return rowReaderFactory.rowReader(descriptor, queryMetadata, getAdapter(), attributeOverrides); + return rowReaderFactory.rowReader(descriptor, queryMetadata, getAdapter()); } /** 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 58fdae47d..d1043b41f 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 @@ -289,8 +289,7 @@ public class BatchAction extends BaseSQLAction { this.keyRowDescriptor = builder.getDescriptor(dataNode.getAdapter().getExtendedTypes()); } - RowReader<?> rowReader = dataNode.rowReader(keyRowDescriptor, query.getMetaData(dataNode.getEntityResolver()), - Collections.emptyMap()); + RowReader<?> rowReader = dataNode.rowReader(keyRowDescriptor, query.getMetaData(dataNode.getEntityResolver())); ResultIterator iterator = new JDBCResultIterator(null, keysRS, rowReader); List<ObjectId> objectIds = new ArrayList<>(rows.size()); 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 0d7bbc98e..5094135f5 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 @@ -115,7 +115,7 @@ public class SelectAction extends BaseSQLAction { .setColumns(translated.resultColumns()) .getDescriptor(dataNode.getAdapter().getExtendedTypes()); - RowReader<?> rowReader = dataNode.rowReader(descriptor, queryMetadata, translated.attributeOverrides()); + RowReader<?> rowReader = dataNode.rowReader(descriptor, queryMetadata); ResultIterator<?> it = new JDBCResultIterator<>(statement, rs, rowReader); it = forIteratedResult(it, observer, connection, t1, translated.sql()); 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 7337f0129..adeab6d76 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 @@ -34,16 +34,14 @@ abstract class BaseRowReader<T> implements RowReader<T> { ExtendedType[] converters; String[] labels; int[] types; - DataRowPostProcessor postProcessor; String entityName; - BaseRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DataRowPostProcessor postProcessor) { + BaseRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata) { ObjEntity rootObjEntity = queryMetadata.getObjEntity(); if (rootObjEntity != null) { this.entityName = rootObjEntity.getName(); } - this.postProcessor = postProcessor; this.converters = descriptor.getConverters(); ColumnDescriptor[] columns = descriptor.getColumns(); diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/DataRowPostProcessor.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/DataRowPostProcessor.java deleted file mode 100644 index be0f0fe6f..000000000 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/DataRowPostProcessor.java +++ /dev/null @@ -1,93 +0,0 @@ -/***************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - ****************************************************************/ - -package org.apache.cayenne.access.jdbc.reader; - -import java.sql.ResultSet; -import java.util.Collection; -import java.util.Map; - -import org.apache.cayenne.DataRow; -import org.apache.cayenne.access.types.ExtendedType; -import org.apache.cayenne.map.EntityInheritanceTree; -import org.apache.cayenne.map.ObjEntity; -import org.apache.cayenne.reflect.ClassDescriptor; - -/** - * Deals with DataRow type conversion in inheritance situations. - * - * @since 1.2 - */ -class DataRowPostProcessor { - - private EntityInheritanceTree inheritanceTree; - private Map<String, Collection<ColumnOverride>> columnOverrides; - private Collection<ColumnOverride> defaultOverrides; - - DataRowPostProcessor(ClassDescriptor classDescriptor, Map<String, Collection<ColumnOverride>> columnOverrides) { - - if (classDescriptor != null && classDescriptor.hasSubclasses()) { - this.inheritanceTree = classDescriptor.getEntityInheritanceTree(); - this.columnOverrides = columnOverrides; - } else { - if (columnOverrides.size() != 1) { - throw new IllegalArgumentException("No inheritance - there must be only one override set"); - } - - defaultOverrides = columnOverrides.values().iterator().next(); - } - } - - void postprocessRow(ResultSet resultSet, DataRow row) throws Exception { - - Collection<ColumnOverride> overrides = getOverrides(row); - - if (overrides != null) { - for (final ColumnOverride override : overrides) { - - Object newValue = override.converter.materializeObject(resultSet, override.index, override.jdbcType); - row.put(override.key, newValue); - } - } - } - - private final Collection<ColumnOverride> getOverrides(DataRow row) { - if (defaultOverrides != null) { - return defaultOverrides; - } else { - ObjEntity entity = inheritanceTree.entityMatchingRow(row); - return entity != null ? columnOverrides.get(entity.getName()) : null; - } - } - - static final class ColumnOverride { - - int index; - int jdbcType; - String key; - ExtendedType converter; - - ColumnOverride(int index, String key, ExtendedType converter, int jdbcType) { - this.index = index; - this.key = key; - this.converter = converter; - this.jdbcType = jdbcType; - } - } -} 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 5e3a2fe15..fdca01cdb 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,28 +18,15 @@ ****************************************************************/ package org.apache.cayenne.access.jdbc.reader; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import org.apache.cayenne.CayenneRuntimeException; -import org.apache.cayenne.access.jdbc.ColumnDescriptor; import org.apache.cayenne.access.jdbc.RowDescriptor; -import org.apache.cayenne.access.jdbc.reader.DataRowPostProcessor.ColumnOverride; -import org.apache.cayenne.access.types.ExtendedType; -import org.apache.cayenne.access.types.ExtendedTypeMap; import org.apache.cayenne.dba.DbAdapter; -import org.apache.cayenne.dba.TypesMapping; -import org.apache.cayenne.map.ObjAttribute; -import org.apache.cayenne.map.ObjEntity; 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 org.apache.cayenne.reflect.ClassDescriptor; /** * @since 4.0 @@ -47,15 +34,11 @@ import org.apache.cayenne.reflect.ClassDescriptor; public class DefaultRowReaderFactory implements RowReaderFactory { @Override - public RowReader<?> rowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DbAdapter adapter, - Map<ObjAttribute, ColumnDescriptor> attributeOverrides) { - - PostprocessorFactory postProcessorFactory = new PostprocessorFactory(descriptor, queryMetadata, - adapter.getExtendedTypes(), attributeOverrides); + public RowReader<?> rowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DbAdapter adapter) { List<Object> rsMapping = queryMetadata.getResultSetMapping(); if (rsMapping == null) { - return createFullRowReader(descriptor, queryMetadata, postProcessorFactory); + return createFullRowReader(descriptor, queryMetadata); } int resultWidth = rsMapping.size(); @@ -68,8 +51,7 @@ public class DefaultRowReaderFactory implements RowReaderFactory { Object segment = rsMapping.get(0); if (segment instanceof EntityResultSegment) { - return createEntityRowReader(descriptor, queryMetadata, (EntityResultSegment) segment, - postProcessorFactory); + return createEntityRowReader(descriptor, queryMetadata, (EntityResultSegment) segment); } else if (segment instanceof EmbeddableResultSegment) { return createEmbeddableRowReader(descriptor, queryMetadata, (EmbeddableResultSegment) segment); } else { @@ -82,10 +64,8 @@ public class DefaultRowReaderFactory implements RowReaderFactory { Object segment = rsMapping.get(i); if (segment instanceof EntityResultSegment) { - reader.addRowReader( - i, - createEntityRowReader(descriptor, queryMetadata, (EntityResultSegment) segment, - postProcessorFactory)); + reader.addRowReader(i, + createEntityRowReader(descriptor, queryMetadata, (EntityResultSegment) segment)); } else if(segment instanceof EmbeddableResultSegment) { reader.addRowReader(i, createEmbeddableRowReader(descriptor, queryMetadata, (EmbeddableResultSegment) segment)); } else { @@ -106,108 +86,25 @@ public class DefaultRowReaderFactory implements RowReaderFactory { } protected RowReader<?> createEntityRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, - EntityResultSegment resultMetadata, PostprocessorFactory postProcessorFactory) { + EntityResultSegment resultMetadata) { if (queryMetadata.getPageSize() > 0) { - return new IdRowReader<>(descriptor, queryMetadata, resultMetadata, postProcessorFactory.get()); + return new IdRowReader<>(descriptor, queryMetadata, resultMetadata); } else if (resultMetadata.getClassDescriptor() != null && resultMetadata.getClassDescriptor().hasSubclasses()) { - return new InheritanceAwareEntityRowReader(descriptor, resultMetadata, postProcessorFactory.get()); + return new InheritanceAwareEntityRowReader(descriptor, resultMetadata); } else { - return new EntityRowReader(descriptor, resultMetadata, postProcessorFactory.get()); + return new EntityRowReader(descriptor, resultMetadata); } } - protected RowReader<?> createFullRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, - PostprocessorFactory postProcessorFactory) { + protected RowReader<?> createFullRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata) { if (queryMetadata.getPageSize() > 0) { - return new IdRowReader<>(descriptor, queryMetadata, null, postProcessorFactory.get()); + return new IdRowReader<>(descriptor, queryMetadata, null); } else if (queryMetadata.getClassDescriptor() != null && queryMetadata.getClassDescriptor().hasSubclasses()) { - return new InheritanceAwareRowReader(descriptor, queryMetadata, postProcessorFactory.get()); + return new InheritanceAwareRowReader(descriptor, queryMetadata); } else { - return new FullRowReader(descriptor, queryMetadata, postProcessorFactory.get()); - } - } - - protected static class PostprocessorFactory { - - private final QueryMetadata queryMetadata; - private final ExtendedTypeMap extendedTypes; - private final Map<ObjAttribute, ColumnDescriptor> attributeOverrides; - private final RowDescriptor rowDescriptor; - - private boolean created; - private DataRowPostProcessor postProcessor; - - PostprocessorFactory(RowDescriptor rowDescriptor, QueryMetadata queryMetadata, ExtendedTypeMap extendedTypes, - Map<ObjAttribute, ColumnDescriptor> attributeOverrides) { - this.rowDescriptor = rowDescriptor; - this.extendedTypes = extendedTypes; - this.attributeOverrides = attributeOverrides; - this.queryMetadata = queryMetadata; - } - - DataRowPostProcessor get() { - - if (!created) { - postProcessor = create(); - created = true; - } - - return postProcessor; - } - - private DataRowPostProcessor create() { - - if (attributeOverrides.isEmpty()) { - return null; - } - - ColumnDescriptor[] columns = rowDescriptor.getColumns(); - - Map<String, Collection<ColumnOverride>> columnOverrides = new HashMap<>(2); - - for (Entry<ObjAttribute, ColumnDescriptor> entry : attributeOverrides.entrySet()) { - - ObjAttribute attribute = entry.getKey(); - ObjEntity entity = attribute.getEntity(); - - String key = null; - int jdbcType = TypesMapping.NOT_DEFINED; - int index = -1; - for (int i = 0; i < columns.length; i++) { - if (columns[i] == entry.getValue()) { - - // if attribute type is the same as column, there is no conflict - if (!attribute.getType().equals(columns[i].getJavaClass())) { - // note that JDBC index is "1" based - index = i + 1; - jdbcType = columns[i].getJdbcType(); - key = columns[i].getDataRowKey(); - } - - break; - } - } - - if (index < 1) { - continue; - } - - ExtendedType<?> converter = extendedTypes.getRegisteredType(attribute.getType()); - Collection<ColumnOverride> overrides = columnOverrides - .computeIfAbsent(entity.getName(), k -> new ArrayList<>(3)); - overrides.add(new ColumnOverride(index, key, converter, jdbcType)); - } - - // inject null post-processor - if (columnOverrides.isEmpty()) { - return null; - } - - ClassDescriptor rootDescriptor = queryMetadata.getClassDescriptor(); - - return new DataRowPostProcessor(rootDescriptor, columnOverrides); + return new FullRowReader(descriptor, queryMetadata); } } 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 d6be56bea..63a300003 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 @@ -42,11 +42,7 @@ class EntityRowReader implements RowReader<DataRow> { private int mapCapacity; private int startIndex; - DataRowPostProcessor postProcessor; - - EntityRowReader(RowDescriptor descriptor, EntityResultSegment segmentMetadata, DataRowPostProcessor postProcessor) { - - this.postProcessor = postProcessor; + EntityRowReader(RowDescriptor descriptor, EntityResultSegment segmentMetadata) { ClassDescriptor classDescriptor = segmentMetadata.getClassDescriptor(); @@ -106,10 +102,6 @@ class EntityRowReader implements RowReader<DataRow> { } void postprocessRow(ResultSet resultSet, DataRow dataRow) throws Exception { - if (postProcessor != null) { - postProcessor.postprocessRow(resultSet, dataRow); - } - dataRow.setEntityName(entityName); } } 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 9fc112c8c..cafab68aa 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 @@ -33,8 +33,8 @@ class FullRowReader extends BaseRowReader<DataRow> { int mapCapacity; - FullRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DataRowPostProcessor postProcessor) { - super(descriptor, queryMetadata, postProcessor); + FullRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata) { + super(descriptor, queryMetadata); this.mapCapacity = (int) Math.ceil((descriptor.getWidth()) / 0.75); } @@ -65,10 +65,6 @@ class FullRowReader extends BaseRowReader<DataRow> { } void postprocessRow(ResultSet resultSet, DataRow dataRow) throws Exception { - if (postProcessor != null) { - postProcessor.postprocessRow(resultSet, dataRow); - } - dataRow.setEntityName(entityName); } } 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 2b4d79a62..b48da177f 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 @@ -37,8 +37,8 @@ class IdRowReader<T> extends BaseRowReader<T> { protected int[] pkIndices; - public IdRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, EntityResultSegment resultMetadata, DataRowPostProcessor postProcessor) { - super(descriptor, queryMetadata, postProcessor); + public IdRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, EntityResultSegment resultMetadata) { + super(descriptor, queryMetadata); DbEntity dbEntity = resultMetadata == null ? queryMetadata.getDbEntity() @@ -95,9 +95,6 @@ class IdRowReader<T> extends BaseRowReader<T> { @SuppressWarnings("unchecked") T val = (T) converters[index].materializeObject(resultSet, index + 1, types[index]); - // note that postProcessor overrides are not applied. ID mapping must be - // the - // same across inheritance hierarchy, so overrides do not make sense. return val; } @@ -114,10 +111,6 @@ class IdRowReader<T> extends BaseRowReader<T> { idRow.put(labels[index], val); } - if (postProcessor != null) { - postProcessor.postprocessRow(resultSet, idRow); - } - return (T) idRow; } } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/InheritanceAwareEntityRowReader.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/InheritanceAwareEntityRowReader.java index 0e88907e2..f51ad058e 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/InheritanceAwareEntityRowReader.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/InheritanceAwareEntityRowReader.java @@ -33,19 +33,14 @@ class InheritanceAwareEntityRowReader extends EntityRowReader { private EntityInheritanceTree entityInheritanceTree; - public InheritanceAwareEntityRowReader(RowDescriptor descriptor, EntityResultSegment segmentMetadata, - DataRowPostProcessor postProcessor) { - - super(descriptor, segmentMetadata, postProcessor); + public InheritanceAwareEntityRowReader(RowDescriptor descriptor, EntityResultSegment segmentMetadata) { + + super(descriptor, segmentMetadata); this.entityInheritanceTree = segmentMetadata.getClassDescriptor().getEntityInheritanceTree(); } @Override void postprocessRow(ResultSet resultSet, DataRow dataRow) throws Exception { - if (postProcessor != null) { - postProcessor.postprocessRow(resultSet, dataRow); - } - ObjEntity entity = entityInheritanceTree.entityMatchingRow(dataRow); dataRow.setEntityName(entity != null ? entity.getName() : entityName); } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/InheritanceAwareRowReader.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/InheritanceAwareRowReader.java index 69fab323f..06c61a20b 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/InheritanceAwareRowReader.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/InheritanceAwareRowReader.java @@ -33,17 +33,13 @@ class InheritanceAwareRowReader extends FullRowReader { private EntityInheritanceTree entityInheritanceTree; - InheritanceAwareRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DataRowPostProcessor postProcessor) { - super(descriptor, queryMetadata, postProcessor); + InheritanceAwareRowReader(RowDescriptor descriptor, QueryMetadata queryMetadata) { + super(descriptor, queryMetadata); this.entityInheritanceTree = queryMetadata.getClassDescriptor().getEntityInheritanceTree(); } @Override void postprocessRow(ResultSet resultSet, DataRow dataRow) throws Exception { - if (postProcessor != null) { - postProcessor.postprocessRow(resultSet, dataRow); - } - ObjEntity entity = entityInheritanceTree.entityMatchingRow(dataRow); dataRow.setEntityName(entity != null ? entity.getName() : entityName); } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/RowReaderFactory.java b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/RowReaderFactory.java index 26d46f81f..75a9b21b5 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/RowReaderFactory.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/reader/RowReaderFactory.java @@ -18,21 +18,16 @@ ****************************************************************/ package org.apache.cayenne.access.jdbc.reader; -import java.util.Map; - -import org.apache.cayenne.access.jdbc.ColumnDescriptor; import org.apache.cayenne.access.jdbc.RowDescriptor; import org.apache.cayenne.dba.DbAdapter; -import org.apache.cayenne.map.ObjAttribute; import org.apache.cayenne.query.QueryMetadata; /** * Creates RowReader instances for executed queries. - * + * * @since 4.0 */ public interface RowReaderFactory { - RowReader<?> rowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DbAdapter adapter, - Map<ObjAttribute, ColumnDescriptor> attributeOverrides); + RowReader<?> rowReader(RowDescriptor descriptor, QueryMetadata queryMetadata, DbAdapter adapter); } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/select/TranslatedSelect.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/select/TranslatedSelect.java index 0de0be378..ee1ec983f 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/select/TranslatedSelect.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/select/TranslatedSelect.java @@ -19,11 +19,8 @@ package org.apache.cayenne.access.translator.select; -import java.util.Map; - import org.apache.cayenne.access.jdbc.ColumnDescriptor; import org.apache.cayenne.access.translator.DbAttributeBinding; -import org.apache.cayenne.map.ObjAttribute; /** * An immutable result of translating a {@link org.apache.cayenne.query.Select} query to SQL, @@ -35,7 +32,6 @@ public record TranslatedSelect( String sql, ColumnDescriptor[] resultColumns, DbAttributeBinding[] bindings, - Map<ObjAttribute, ColumnDescriptor> attributeOverrides, boolean suppressingDistinct, boolean hasJoins) { } diff --git a/cayenne/src/main/java/org/apache/cayenne/access/translator/select/TranslatorContext.java b/cayenne/src/main/java/org/apache/cayenne/access/translator/select/TranslatorContext.java index 62522c9f9..0405eb55e 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/translator/select/TranslatorContext.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/translator/select/TranslatorContext.java @@ -39,7 +39,6 @@ import org.apache.cayenne.query.QueryMetadata; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -139,7 +138,6 @@ public class TranslatorContext implements SQLGenerationContext { getFinalSQL(), getColumnDescriptors().toArray(new ColumnDescriptor[0]), getBindings().toArray(new DbAttributeBinding[0]), - Collections.emptyMap(), isDistinctSuppression(), getTableCount() > 1); } diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/JDBCResultIteratorTest.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/JDBCResultIteratorTest.java index f579764d7..077dffcfa 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/JDBCResultIteratorTest.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/JDBCResultIteratorTest.java @@ -24,7 +24,6 @@ import org.apache.cayenne.access.jdbc.reader.DefaultRowReaderFactory; import org.apache.cayenne.access.jdbc.reader.RowReader; import org.apache.cayenne.access.types.ExtendedTypeMap; import org.apache.cayenne.dba.DbAdapter; -import org.apache.cayenne.map.ObjAttribute; import org.apache.cayenne.query.MockQueryMetadata; import org.apache.cayenne.unit.jdbc.TestConnection; import org.apache.cayenne.unit.jdbc.TestResultSet; @@ -33,7 +32,6 @@ import org.junit.jupiter.api.Test; import java.sql.Connection; import java.sql.Statement; -import java.util.Collections; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -52,7 +50,7 @@ public class JDBCResultIteratorTest { RowDescriptor descriptor = new RowDescriptorBuilder().setResultSet(rs).getDescriptor(new ExtendedTypeMap()); RowReader<?> rowReader = new DefaultRowReaderFactory().rowReader(descriptor, new MockQueryMetadata(), - mock(DbAdapter.class), Collections.<ObjAttribute, ColumnDescriptor> emptyMap()); + mock(DbAdapter.class)); JDBCResultIterator it = new JDBCResultIterator(s, rs, rowReader);
