GH-1251 Fix regression with generic type discovery

Resolves #1251
This commit is contained in:
Oleg Zhurakousky
2025-03-24 21:44:54 +01:00
parent 00ec64d7f9
commit 773f6d7fea

View File

@@ -249,9 +249,6 @@ public final class FunctionTypeUtils {
ResolvableType functionType = ResolvableType.forClass(functionalClass).as(Supplier.class);
typeToReturn = GenericTypeResolver.resolveType(functionType.getType(), functionalClass);
}
// else {
// typeToReturn = TypeResolver.reify(functionalClass);
// }
return typeToReturn;
}
@@ -381,7 +378,7 @@ public final class FunctionTypeUtils {
}
ResolvableType resolvableFunctionType = ResolvableType.forType(functionType);
ResolvableType resolvableInputType;
if (FunctionTypeUtils.isFunction(functionType)) {
resolvableInputType = resolvableFunctionType.as(Function.class);
@@ -389,20 +386,12 @@ public final class FunctionTypeUtils {
else {
resolvableInputType = resolvableFunctionType.as(Consumer.class);
}
ResolvableType genericClass0 = resolvableInputType.getGeneric(0);
Type inputType;
if (functionType instanceof Class functionTypeClass) {
inputType = genericClass0.getType();
inputType = (inputType instanceof TypeVariable) ? Object.class : GenericTypeResolver.resolveType(inputType, functionTypeClass);
}
else if (functionType instanceof ParameterizedType) {
inputType = GenericTypeResolver.resolveType(genericClass0.getType(), getRawType(functionType));
if (resolvableInputType.getType() instanceof ParameterizedType) {
return resolvableInputType.getGeneric(0).getType();
}
else {
inputType = resolvableInputType.getType();
return Object.class;
}
return inputType instanceof TypeVariable ? Object.class : inputType;
}
@SuppressWarnings("rawtypes")