From f280dd2ceae04635c999a0345b5129a5464f7c54 Mon Sep 17 00:00:00 2001 From: Steven Schlansker Date: Thu, 14 Mar 2024 09:25:25 -0700 Subject: [PATCH] ConstructorInstanceFactory: clean up some warnings and flatten stack a bit --- .../mapper/reflect/ConstructorInstanceFactory.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/jdbi/v3/core/mapper/reflect/ConstructorInstanceFactory.java b/core/src/main/java/org/jdbi/v3/core/mapper/reflect/ConstructorInstanceFactory.java index 04b19d1b6..962a746a3 100644 --- a/core/src/main/java/org/jdbi/v3/core/mapper/reflect/ConstructorInstanceFactory.java +++ b/core/src/main/java/org/jdbi/v3/core/mapper/reflect/ConstructorInstanceFactory.java @@ -27,7 +27,7 @@ import java.util.function.Supplier; import java.util.stream.Stream; -import org.jdbi.v3.core.internal.exceptions.Unchecked; +import org.jdbi.v3.core.internal.exceptions.Sneaky; import static java.util.Collections.synchronizedMap; import static java.util.Objects.requireNonNull; @@ -35,7 +35,7 @@ class ConstructorInstanceFactory extends InstanceFactory { private static final MethodHandles.Lookup LOOKUP = MethodHandles.lookup(); - private static final Map CONSTRUCTOR_CACHE = synchronizedMap(new WeakHashMap<>()); + private static final Map, ConstructorHandleAndTypes> CONSTRUCTOR_CACHE = synchronizedMap(new WeakHashMap<>()); private final Constructor constructor; private final List types; @@ -54,9 +54,14 @@ List getTypes() { return types; } + @SuppressWarnings("unchecked") @Override T newInstance(Object... params) { - return (T) Unchecked.function(constructorHandle::invokeWithArguments).apply(params); + try { + return (T) constructorHandle.invokeWithArguments(params); + } catch (Throwable e) { + throw Sneaky.throwAnyway(e); + } } @Override