Incorrect Usage of ClassUtils.isAssignable: incorrect reversing the Parameters Causes the Method to Always Return true When an Object is Passed
You can refer to issue #3355 and the pr #3479
The bug code is as follows:
String parameterName = method.getParameters()[i].getName();
Type parameterType = method.getGenericParameterTypes()[i];
if (parameterType instanceof Class<?> parameterClass
&& **ClassUtils.isAssignable(parameterClass, ToolContext.class**) ) {
// A ToolContext method parameter is not included in the JSON Schema
// generation.
// It's a special type used by Spring AI to pass contextual data to tools
// outside the model interaction flow.
continue;
}
Code Location:org.springframework.ai.util.json.schema.JsonSchemaGenerator.generateForMethodInput(Method method, SchemaOption... schemaOptions)
Comment From: dev-jonghoonpark
related pr : https://github.com/spring-projects/spring-ai/pull/3733
Comment From: sunyuhan1998
Indeed, they appear to be the same type of problem