GH-1246 Fix logic around getting parameter names from 'factory method'
Changed condition to ensure we use method name when iterating thru methods instead of validating if it is a 'factory method' Resolves #1246
This commit is contained in:
@@ -378,7 +378,7 @@ public final class FunctionTypeUtils {
|
||||
}
|
||||
|
||||
ResolvableType resolvableFunctionType = ResolvableType.forType(functionType);
|
||||
|
||||
|
||||
ResolvableType resolvableInputType;
|
||||
if (FunctionTypeUtils.isFunction(functionType)) {
|
||||
resolvableInputType = resolvableFunctionType.as(Function.class);
|
||||
|
||||
@@ -85,12 +85,18 @@ public abstract class FunctionContextUtils {
|
||||
return param;
|
||||
}
|
||||
|
||||
@Deprecated(since = "4.2.3", forRemoval = true)
|
||||
public static Class<?>[] getParamTypesFromBeanDefinitionFactory(Class<?> factory,
|
||||
AbstractBeanDefinition definition) {
|
||||
return getParamTypesFromBeanDefinitionFactory(factory, definition, null);
|
||||
}
|
||||
|
||||
public static Class<?>[] getParamTypesFromBeanDefinitionFactory(Class<?> factory,
|
||||
AbstractBeanDefinition definition, String methodName) {
|
||||
if (definition instanceof RootBeanDefinition) {
|
||||
RootBeanDefinition root = (RootBeanDefinition) definition;
|
||||
for (Method method : getCandidateMethods(factory, root)) {
|
||||
if (root.isFactoryMethod(method)) {
|
||||
if (method.getName().equals(methodName)) {
|
||||
return method.getParameterTypes();
|
||||
}
|
||||
}
|
||||
@@ -114,7 +120,7 @@ public abstract class FunctionContextUtils {
|
||||
|
||||
private static Type findBeanType(AbstractBeanDefinition definition, String declaringClassName, String methodName) {
|
||||
Class<?> factory = ClassUtils.resolveClassName(declaringClassName, null);
|
||||
Class<?>[] params = getParamTypesFromBeanDefinitionFactory(factory, definition);
|
||||
Class<?>[] params = getParamTypesFromBeanDefinitionFactory(factory, definition, methodName);
|
||||
Method method = ReflectionUtils.findMethod(factory, methodName,
|
||||
params);
|
||||
Type type = method.getGenericReturnType();
|
||||
|
||||
Reference in New Issue
Block a user