GH-964, GH-959 Fix Kotlin type discovery

Resolves #964
Resolves #959
This commit is contained in:
Oleg Zhurakousky
2022-12-15 12:40:23 +01:00
parent 1d5dd42bcc
commit d4e6d7f05b

View File

@@ -55,9 +55,15 @@ public abstract class FunctionContextUtils {
}
}
Class<?> beanClass = null;
if (definition == null) {
return null;
}
else {
beanClass = resolveBeanClass(definition);
}
Object source = definition.getSource();
@@ -74,7 +80,7 @@ public abstract class FunctionContextUtils {
}
else {
Type t = definition.getResolvableType().getType();
if (!(t instanceof ParameterizedType) && definition.hasBeanClass()) {
if (!(t instanceof ParameterizedType) && beanClass != null) {
return FunctionTypeUtils.discoverFunctionTypeFromClass(definition.getBeanClass());
}
return t;
@@ -99,6 +105,15 @@ public abstract class FunctionContextUtils {
return params.toArray(new Class<?>[0]);
}
private static Class<?> resolveBeanClass(AbstractBeanDefinition beanDefinition) {
try {
return beanDefinition.hasBeanClass() ? beanDefinition.getBeanClass() : ClassUtils.getDefaultClassLoader().loadClass(beanDefinition.getBeanClassName());
}
catch (Exception e) {
return null;
}
}
private static Type findBeanType(AbstractBeanDefinition definition, String declaringClassName, String methodName) {
Class<?> factory = ClassUtils.resolveClassName(declaringClassName, null);
Class<?>[] params = getParamTypesFromBeanDefinitionFactory(factory, definition);