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 resolvableFunctionType = ResolvableType.forType(functionType);
|
||||||
|
|
||||||
ResolvableType resolvableInputType;
|
ResolvableType resolvableInputType;
|
||||||
if (FunctionTypeUtils.isFunction(functionType)) {
|
if (FunctionTypeUtils.isFunction(functionType)) {
|
||||||
resolvableInputType = resolvableFunctionType.as(Function.class);
|
resolvableInputType = resolvableFunctionType.as(Function.class);
|
||||||
|
|||||||
@@ -85,12 +85,18 @@ public abstract class FunctionContextUtils {
|
|||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated(since = "4.2.3", forRemoval = true)
|
||||||
public static Class<?>[] getParamTypesFromBeanDefinitionFactory(Class<?> factory,
|
public static Class<?>[] getParamTypesFromBeanDefinitionFactory(Class<?> factory,
|
||||||
AbstractBeanDefinition definition) {
|
AbstractBeanDefinition definition) {
|
||||||
|
return getParamTypesFromBeanDefinitionFactory(factory, definition, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Class<?>[] getParamTypesFromBeanDefinitionFactory(Class<?> factory,
|
||||||
|
AbstractBeanDefinition definition, String methodName) {
|
||||||
if (definition instanceof RootBeanDefinition) {
|
if (definition instanceof RootBeanDefinition) {
|
||||||
RootBeanDefinition root = (RootBeanDefinition) definition;
|
RootBeanDefinition root = (RootBeanDefinition) definition;
|
||||||
for (Method method : getCandidateMethods(factory, root)) {
|
for (Method method : getCandidateMethods(factory, root)) {
|
||||||
if (root.isFactoryMethod(method)) {
|
if (method.getName().equals(methodName)) {
|
||||||
return method.getParameterTypes();
|
return method.getParameterTypes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,7 +120,7 @@ public abstract class FunctionContextUtils {
|
|||||||
|
|
||||||
private static Type findBeanType(AbstractBeanDefinition definition, String declaringClassName, String methodName) {
|
private static Type findBeanType(AbstractBeanDefinition definition, String declaringClassName, String methodName) {
|
||||||
Class<?> factory = ClassUtils.resolveClassName(declaringClassName, null);
|
Class<?> factory = ClassUtils.resolveClassName(declaringClassName, null);
|
||||||
Class<?>[] params = getParamTypesFromBeanDefinitionFactory(factory, definition);
|
Class<?>[] params = getParamTypesFromBeanDefinitionFactory(factory, definition, methodName);
|
||||||
Method method = ReflectionUtils.findMethod(factory, methodName,
|
Method method = ReflectionUtils.findMethod(factory, methodName,
|
||||||
params);
|
params);
|
||||||
Type type = method.getGenericReturnType();
|
Type type = method.getGenericReturnType();
|
||||||
|
|||||||
Reference in New Issue
Block a user