From 312901e7b4ad280e34dc2384d04fbfaf846a6262 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 8 Sep 2023 17:17:00 +0200 Subject: [PATCH] [jOOQ/jOOQ#15563] DefaultRecordMapper should skip most mappers when an instance is provided --- .../org/jooq/impl/DefaultRecordMapper.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java index 875932cfa4..f49261efcb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordMapper.java @@ -382,16 +382,18 @@ public class DefaultRecordMapper implements RecordMapper (E) Stream.of(((FieldsImpl) rowType).mapper(configuration, Object[].class).map(r)); - return; - } + if (instance == null) { + if (Stream.class.isAssignableFrom(type)) { + delegate = r -> (E) Stream.of(((FieldsImpl) rowType).mapper(configuration, Object[].class).map(r)); + return; + } - // [#1470] Return a proxy if the supplied type is an interface - // [#10071] [#11148] Primitive types are abstract! They're mapped by a ConverterProvider only later - if (Modifier.isAbstract(type.getModifiers()) && !type.isPrimitive()) { - delegate = new ProxyMapper(); - return; + // [#1470] Return a proxy if the supplied type is an interface + // [#10071] [#11148] Primitive types are abstract! They're mapped by a ConverterProvider only later + if (Modifier.isAbstract(type.getModifiers()) && !type.isPrimitive()) { + delegate = new ProxyMapper(); + return; + } } // [#2989] [#2836] Records are mapped @@ -401,7 +403,7 @@ public class DefaultRecordMapper implements RecordMapper