mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-22 05:49:04 +00:00
Change AbstractSmartHttpMessageConverter canRead/canWrite overrides
Extending AbstractSmartHttpMessageConverter typically requires to override both Class and ResolvableType variants of canRead. This was not intended as SmartHttpMessageConverter interface has default methods doing the conversion from Class parameters to ResolvableType ones, but AbstractHttpMessageConverter overrides it. This commit changes AbstractSmartHttpMessageConverter canRead/canWrite overrides from ResolvableType to Class ones that delegate to the ResolvableType variants. It also refines AbstractJacksonHttpMessageConverter accordingly. Closes gh-35916
This commit is contained in:
+3
-3
@@ -269,7 +269,7 @@ public abstract class AbstractJacksonHttpMessageConverter<T extends ObjectMapper
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
|
||||
public boolean canWrite(ResolvableType type, Class<?> valueClass, @Nullable MediaType mediaType) {
|
||||
if (!canWrite(mediaType)) {
|
||||
return false;
|
||||
}
|
||||
@@ -279,10 +279,10 @@ public abstract class AbstractJacksonHttpMessageConverter<T extends ObjectMapper
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (MappingJacksonValue.class.isAssignableFrom(clazz)) {
|
||||
if (MappingJacksonValue.class.isAssignableFrom(valueClass)) {
|
||||
throw new UnsupportedOperationException("MappingJacksonValue is not supported, use hints instead");
|
||||
}
|
||||
return this.mapperRegistrations == null || selectMapper(clazz, mediaType) != null;
|
||||
return this.mapperRegistrations == null || selectMapper(valueClass, mediaType) != null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+4
-5
@@ -69,14 +69,13 @@ public abstract class AbstractSmartHttpMessageConverter<T> extends AbstractHttpM
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRead(ResolvableType type, @Nullable MediaType mediaType) {
|
||||
Class<?> clazz = type.resolve();
|
||||
return (clazz != null ? canRead(clazz, mediaType) : canRead(mediaType));
|
||||
public boolean canRead(Class<?> clazz, @Nullable MediaType mediaType) {
|
||||
return canRead(ResolvableType.forClass(clazz), mediaType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canWrite(ResolvableType type, Class<?> clazz, @Nullable MediaType mediaType) {
|
||||
return canWrite(clazz, mediaType);
|
||||
public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
|
||||
return canWrite(ResolvableType.forClass(clazz), clazz, mediaType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user