|
18 | 18 |
|
19 | 19 | import java.nio.charset.StandardCharsets;
|
20 | 20 |
|
| 21 | +import javax.xml.namespace.QName; |
| 22 | + |
| 23 | +import jakarta.xml.bind.JAXBElement; |
21 | 24 | import jakarta.xml.bind.Marshaller;
|
22 | 25 | import jakarta.xml.bind.Unmarshaller;
|
23 | 26 | import jakarta.xml.bind.annotation.XmlAttribute;
|
@@ -93,6 +96,8 @@ void canWrite() {
|
93 | 96 | .as("Converter does not support writing @XmlRootElement subclass").isTrue();
|
94 | 97 | assertThat(converter.canWrite(rootElementCglib.getClass(), null))
|
95 | 98 | .as("Converter does not support writing @XmlRootElement subclass").isTrue();
|
| 99 | + assertThat(converter.canWrite(JAXBElement.class, null)) |
| 100 | + .as("Converter does not support writing JAXBElement").isTrue(); |
96 | 101 | assertThat(converter.canWrite(Type.class, null))
|
97 | 102 | .as("Converter supports writing @XmlType").isFalse();
|
98 | 103 | }
|
@@ -186,6 +191,18 @@ void writeXmlRootElement() throws Exception {
|
186 | 191 | .isSimilarTo("<rootElement><type s=\"Hello World\"/></rootElement>", ev);
|
187 | 192 | }
|
188 | 193 |
|
| 194 | + @Test |
| 195 | + void writeJaxbElementRootElement() throws Exception { |
| 196 | + MockHttpOutputMessage outputMessage = new MockHttpOutputMessage(); |
| 197 | + JAXBElement jaxbElement = new JAXBElement<>(new QName("custom"), MyCustomElement.class, new MyCustomElement("field1", "field2")); |
| 198 | + converter.write(jaxbElement, null, outputMessage); |
| 199 | + assertThat(outputMessage.getHeaders().getContentType()) |
| 200 | + .as("Invalid content-type").isEqualTo(MediaType.APPLICATION_XML); |
| 201 | + DifferenceEvaluator ev = chain(Default, downgradeDifferencesToEqual(XML_STANDALONE)); |
| 202 | + assertThat(XmlContent.of(outputMessage.getBodyAsString(StandardCharsets.UTF_8))) |
| 203 | + .isSimilarTo("<custom><field1>field1</field1><field2>field2</field2></custom>", ev); |
| 204 | + } |
| 205 | + |
189 | 206 | @Test
|
190 | 207 | void writeXmlRootElementSubclass() throws Exception {
|
191 | 208 | MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
|
|
0 commit comments