Merge branch '6.1.x'

This commit is contained in:
Brian Clozel 2024-07-23 09:22:15 +02:00
commit ccc0a54c1c
2 changed files with 15 additions and 1 deletions

View File

@ -93,7 +93,7 @@ public class Jaxb2XmlEncoder extends AbstractSingleValueEncoder<Object> {
Class<?> outputClass = elementType.toClass();
return (outputClass.isAnnotationPresent(XmlRootElement.class) ||
outputClass.isAnnotationPresent(XmlType.class) ||
elementType.isAssignableFrom(JAXBElement.class));
JAXBElement.class.isAssignableFrom(outputClass));
}
else {
return false;

View File

@ -16,6 +16,7 @@
package org.springframework.http.codec.xml;
import java.io.Serial;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
@ -43,6 +44,7 @@ import static org.springframework.core.ResolvableType.forClass;
import static org.springframework.core.io.buffer.DataBufferUtils.release;
/**
* Tests for {@link Jaxb2XmlEncoder}.
* @author Sebastien Deleuze
* @author Arjen Poutsma
*/
@ -64,6 +66,7 @@ class Jaxb2XmlEncoderTests extends AbstractEncoderTests<Jaxb2XmlEncoder> {
assertThat(this.encoder.canEncode(forClass(getClass()), MediaType.APPLICATION_XML)).isFalse();
assertThat(this.encoder.canEncode(forClass(JAXBElement.class), MediaType.APPLICATION_XML)).isTrue();
assertThat(this.encoder.canEncode(forClass(JAXBElementSubclass.class), MediaType.APPLICATION_XML)).isTrue();
// SPR-15464
assertThat(this.encoder.canEncode(ResolvableType.NONE, null)).isFalse();
@ -122,6 +125,17 @@ class Jaxb2XmlEncoderTests extends AbstractEncoderTests<Jaxb2XmlEncoder> {
};
}
public static class JAXBElementSubclass extends JAXBElement<Pojo> {
@Serial
private static final long serialVersionUID = 1L;
protected static final QName NAME = new QName("http://foo/schema/common/1.0", "Pojo");
public JAXBElementSubclass() {
super(NAME, Pojo.class, null, null);
}
}
public static class Model {}
public static class Foo extends Model {