Fix context class resolution for nested types

This commit introduces ContextClassRequestBodyAdvice which adds a
"contextClass" hint allowing to resolve generics for Optional,
HttpEntity or ServerSentEvent container types.

Closes gh-36111
This commit is contained in:
Sébastien Deleuze
2026-01-08 16:53:28 +01:00
parent d85ac300bb
commit eea9130ea6
5 changed files with 71 additions and 8 deletions
@@ -313,7 +313,8 @@ public abstract class AbstractJacksonHttpMessageConverter<T extends ObjectMapper
public Object read(ResolvableType type, HttpInputMessage inputMessage, @Nullable Map<String, Object> hints)
throws IOException, HttpMessageNotReadableException {
Class<?> contextClass = (type.getSource() instanceof MethodParameter parameter ? parameter.getContainingClass() : null);
Class<?> contextClass = (type.getSource() instanceof MethodParameter parameter ? parameter.getContainingClass() :
(hints != null ? (Class<?>) hints.get("contextClass") : null));
JavaType javaType = getJavaType(type.getType(), contextClass);
return readJavaType(javaType, inputMessage, hints);
}