From d6d0018ef64b0306d5db7d633acd63749dfe81ac Mon Sep 17 00:00:00 2001 From: "jinwon.lee" Date: Mon, 1 Apr 2024 15:03:21 +0900 Subject: [PATCH 1/2] fix: synthetic method and reflection conflict --- .../reflect/ReflectionInstantiatorDefinitionFactory.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sfm-reflect/src/main/java/org/simpleflatmapper/reflect/ReflectionInstantiatorDefinitionFactory.java b/sfm-reflect/src/main/java/org/simpleflatmapper/reflect/ReflectionInstantiatorDefinitionFactory.java index 87eb2af89..977bb0eda 100644 --- a/sfm-reflect/src/main/java/org/simpleflatmapper/reflect/ReflectionInstantiatorDefinitionFactory.java +++ b/sfm-reflect/src/main/java/org/simpleflatmapper/reflect/ReflectionInstantiatorDefinitionFactory.java @@ -1,5 +1,6 @@ package org.simpleflatmapper.reflect; +import java.util.Arrays; import org.simpleflatmapper.reflect.instantiator.ExecutableInstantiatorDefinition; import org.simpleflatmapper.util.TypeHelper; @@ -171,15 +172,18 @@ public static boolean areParameterNamePresent(Type target) { // assume parameter name are either present or not for the type private static boolean _areParameterNamePresent(Type target) { Class targetClass = TypeHelper.toClass(target); + final List declaredMethods = Arrays.stream(targetClass.getDeclaredMethods()) + .filter(Method::isSynthetic) + .toList(); - for(Method m : targetClass.getDeclaredMethods()) { + for (Method m : declaredMethods) { final java.lang.reflect.Parameter[] parameters = m.getParameters(); if (parameters.length > 0) { return parameters[0].isNamePresent(); } } - for(Constructor c : targetClass.getDeclaredConstructors()) { + for (Constructor c : targetClass.getDeclaredConstructors()) { final java.lang.reflect.Parameter[] parameters = c.getParameters(); if (parameters.length > 0) { return parameters[0].isNamePresent(); From 93126779e11e3124df214cfb2f031c16ab6e4d61 Mon Sep 17 00:00:00 2001 From: "jinwon.lee" Date: Mon, 1 Apr 2024 15:09:40 +0900 Subject: [PATCH 2/2] fix: synthetic method and reflection conflict --- .../reflect/ReflectionInstantiatorDefinitionFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sfm-reflect/src/main/java/org/simpleflatmapper/reflect/ReflectionInstantiatorDefinitionFactory.java b/sfm-reflect/src/main/java/org/simpleflatmapper/reflect/ReflectionInstantiatorDefinitionFactory.java index 977bb0eda..3f9aa7b74 100644 --- a/sfm-reflect/src/main/java/org/simpleflatmapper/reflect/ReflectionInstantiatorDefinitionFactory.java +++ b/sfm-reflect/src/main/java/org/simpleflatmapper/reflect/ReflectionInstantiatorDefinitionFactory.java @@ -173,7 +173,7 @@ public static boolean areParameterNamePresent(Type target) { private static boolean _areParameterNamePresent(Type target) { Class targetClass = TypeHelper.toClass(target); final List declaredMethods = Arrays.stream(targetClass.getDeclaredMethods()) - .filter(Method::isSynthetic) + .filter(m -> !m.isSynthetic()) .toList(); for (Method m : declaredMethods) {