ProblemDetail XML support via Jackson
Closes gh-29927
This commit is contained in:
@@ -371,7 +371,7 @@ class Jackson2ObjectMapperBuilderTests {
|
||||
.build();
|
||||
|
||||
assertThat(mapper.mixInCount()).isEqualTo(2);
|
||||
assertThat(mapper.findMixInClassFor(ProblemDetail.class)).isAssignableFrom(ProblemDetailJacksonMixin.class);
|
||||
assertThat(mapper.findMixInClassFor(ProblemDetail.class)).isAssignableFrom(ProblemDetailJacksonXmlMixin.class);
|
||||
assertThat(mapper.findMixInClassFor(target)).isSameAs(mixInSource);
|
||||
}
|
||||
|
||||
@@ -387,7 +387,7 @@ class Jackson2ObjectMapperBuilderTests {
|
||||
.build();
|
||||
|
||||
assertThat(mapper.mixInCount()).isEqualTo(2);
|
||||
assertThat(mapper.findMixInClassFor(ProblemDetail.class)).isAssignableFrom(ProblemDetailJacksonMixin.class);
|
||||
assertThat(mapper.findMixInClassFor(ProblemDetail.class)).isAssignableFrom(ProblemDetailJacksonXmlMixin.class);
|
||||
assertThat(mapper.findMixInClassFor(target)).isSameAs(mixInSource);
|
||||
}
|
||||
|
||||
|
||||
@@ -243,7 +243,7 @@ public class Jackson2ObjectMapperFactoryBeanTests {
|
||||
ObjectMapper mapper = this.factory.getObject();
|
||||
|
||||
assertThat(mapper.mixInCount()).isEqualTo(2);
|
||||
assertThat(mapper.findMixInClassFor(ProblemDetail.class)).isAssignableFrom(ProblemDetailJacksonMixin.class);
|
||||
assertThat(mapper.findMixInClassFor(ProblemDetail.class)).isAssignableFrom(ProblemDetailJacksonXmlMixin.class);
|
||||
assertThat(mapper.findMixInClassFor(target)).isSameAs(mixinSource);
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ public class ProblemDetailJacksonMixinTests {
|
||||
|
||||
@Test
|
||||
void readCustomProperty() throws Exception {
|
||||
ProblemDetail problemDetail = this.mapper.readValue(
|
||||
ProblemDetail detail = this.mapper.readValue(
|
||||
"{\"type\":\"about:blank\"," +
|
||||
"\"title\":\"Bad Request\"," +
|
||||
"\"status\":400," +
|
||||
@@ -73,14 +73,32 @@ public class ProblemDetailJacksonMixinTests {
|
||||
"\"host\":\"abc.org\"," +
|
||||
"\"user\":null}", ProblemDetail.class);
|
||||
|
||||
assertThat(problemDetail.getType()).isEqualTo(URI.create("about:blank"));
|
||||
assertThat(problemDetail.getTitle()).isEqualTo("Bad Request");
|
||||
assertThat(problemDetail.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value());
|
||||
assertThat(problemDetail.getDetail()).isEqualTo("Missing header");
|
||||
assertThat(problemDetail.getProperties()).containsEntry("host", "abc.org");
|
||||
assertThat(problemDetail.getProperties()).containsEntry("user", null);
|
||||
assertThat(detail.getType()).isEqualTo(URI.create("about:blank"));
|
||||
assertThat(detail.getTitle()).isEqualTo("Bad Request");
|
||||
assertThat(detail.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value());
|
||||
assertThat(detail.getDetail()).isEqualTo("Missing header");
|
||||
assertThat(detail.getProperties()).containsEntry("host", "abc.org");
|
||||
assertThat(detail.getProperties()).containsEntry("user", null);
|
||||
}
|
||||
|
||||
@Test
|
||||
void readCustomPropertyFromXml() throws Exception {
|
||||
ObjectMapper xmlMapper = new Jackson2ObjectMapperBuilder().createXmlMapper(true).build();
|
||||
ProblemDetail detail = xmlMapper.readValue(
|
||||
"<problem xmlns=\"urn:ietf:rfc:7807\">" +
|
||||
"<type>about:blank</type>" +
|
||||
"<title>Bad Request</title>" +
|
||||
"<status>400</status>" +
|
||||
"<detail>Missing header</detail>" +
|
||||
"<host>abc.org</host>" +
|
||||
"</problem>", ProblemDetail.class);
|
||||
|
||||
assertThat(detail.getType()).isEqualTo(URI.create("about:blank"));
|
||||
assertThat(detail.getTitle()).isEqualTo("Bad Request");
|
||||
assertThat(detail.getStatus()).isEqualTo(HttpStatus.BAD_REQUEST.value());
|
||||
assertThat(detail.getDetail()).isEqualTo("Missing header");
|
||||
assertThat(detail.getProperties()).containsEntry("host", "abc.org");
|
||||
}
|
||||
|
||||
private void testWrite(ProblemDetail problemDetail, String expected) throws Exception {
|
||||
String output = this.mapper.writeValueAsString(problemDetail);
|
||||
|
||||
Reference in New Issue
Block a user