Merge branch '6.0.x'
This commit is contained in:
commit
f15b8b95ad
|
|
@ -20,12 +20,14 @@ import org.springframework.aot.hint.BindingReflectionHintsRegistrar;
|
|||
import org.springframework.aot.hint.RuntimeHints;
|
||||
import org.springframework.aot.hint.RuntimeHintsRegistrar;
|
||||
import org.springframework.http.ProblemDetail;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* {@link RuntimeHintsRegistrar} implementation that registers binding reflection entries
|
||||
* for {@link ProblemDetail} serialization support with Jackson.
|
||||
*
|
||||
* @author Brian Clozel
|
||||
* @author Stephane Nicoll
|
||||
* @since 6.0.5
|
||||
*/
|
||||
class ProblemDetailRuntimeHints implements RuntimeHintsRegistrar {
|
||||
|
|
@ -34,6 +36,12 @@ class ProblemDetailRuntimeHints implements RuntimeHintsRegistrar {
|
|||
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
|
||||
BindingReflectionHintsRegistrar bindingRegistrar = new BindingReflectionHintsRegistrar();
|
||||
bindingRegistrar.registerReflectionHints(hints.reflection(), ProblemDetail.class);
|
||||
if (ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader)) {
|
||||
bindingRegistrar.registerReflectionHints(hints.reflection(), ProblemDetailJacksonXmlMixin.class);
|
||||
}
|
||||
else if (ClassUtils.isPresent("com.fasterxml.jackson.annotation.JacksonAnnotation", classLoader)) {
|
||||
bindingRegistrar.registerReflectionHints(hints.reflection(), ProblemDetailJacksonMixin.class);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
*/
|
||||
class ProblemDetailRuntimeHintsTests {
|
||||
|
||||
private static final List<String> METHOD_NAMES = List.of("getType", "getTitle",
|
||||
"getStatus", "getDetail", "getInstance", "getProperties");
|
||||
|
||||
private final RuntimeHints hints = new RuntimeHints();
|
||||
|
||||
@BeforeEach
|
||||
|
|
@ -48,9 +51,17 @@ class ProblemDetailRuntimeHintsTests {
|
|||
|
||||
@Test
|
||||
void getterMethodsShouldHaveReflectionHints() {
|
||||
List<String> methodNames = List.of("getType", "getTitle", "getStatus", "getDetail", "getInstance", "getProperties");
|
||||
for (String methodName : methodNames) {
|
||||
assertThat(RuntimeHintsPredicates.reflection().onMethod(ProblemDetail.class, methodName)).accepts(this.hints);
|
||||
for (String methodName : METHOD_NAMES) {
|
||||
assertThat(RuntimeHintsPredicates.reflection()
|
||||
.onMethod(ProblemDetail.class, methodName)).accepts(this.hints);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void mixinShouldHaveReflectionHints() {
|
||||
for (String methodName : METHOD_NAMES) {
|
||||
assertThat(RuntimeHintsPredicates.reflection()
|
||||
.onMethod(ProblemDetailJacksonXmlMixin.class, methodName)).accepts(this.hints);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue