Browse Source

Polishing contribution

See gh-1607
pull/27722/head
Arjen Poutsma 3 years ago
parent
commit
38062c3373
  1. 14
      spring-oxm/src/main/java/org/springframework/oxm/xstream/XStreamMarshaller.java
  2. 19
      spring-oxm/src/test/java/org/springframework/oxm/xstream/XStreamMarshallerTests.java

14
spring-oxm/src/main/java/org/springframework/oxm/xstream/XStreamMarshaller.java

@ -57,6 +57,7 @@ import com.thoughtworks.xstream.io.xml.DomReader; @@ -57,6 +57,7 @@ import com.thoughtworks.xstream.io.xml.DomReader;
import com.thoughtworks.xstream.io.xml.DomWriter;
import com.thoughtworks.xstream.io.xml.QNameMap;
import com.thoughtworks.xstream.io.xml.SaxWriter;
import com.thoughtworks.xstream.io.xml.StaxDriver;
import com.thoughtworks.xstream.io.xml.StaxReader;
import com.thoughtworks.xstream.io.xml.StaxWriter;
import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder;
@ -694,13 +695,14 @@ public class XStreamMarshaller extends AbstractMarshaller implements BeanClassLo @@ -694,13 +695,14 @@ public class XStreamMarshaller extends AbstractMarshaller implements BeanClassLo
@Override
protected void marshalXmlStreamWriter(Object graph, XMLStreamWriter streamWriter) throws XmlMappingException {
try {
final StaxWriter writer;
if( streamDriver instanceof StaxDriver){
writer = ((StaxDriver)streamDriver).createStaxWriter(streamWriter);
}else{
writer = new StaxWriter( new QNameMap(),streamWriter, this.nameCoder);
StaxWriter writer;
if (this.streamDriver instanceof StaxDriver) {
writer = ((StaxDriver) this.streamDriver).createStaxWriter(streamWriter);
}
doMarshal(graph,writer, null);
else {
writer = new StaxWriter(new QNameMap(), streamWriter, this.nameCoder);
}
doMarshal(graph, writer, null);
}
catch (XMLStreamException ex) {
throw convertXStreamException(ex, true);

19
spring-oxm/src/test/java/org/springframework/oxm/xstream/XStreamMarshallerTests.java

@ -43,6 +43,8 @@ import com.thoughtworks.xstream.io.HierarchicalStreamWriter; @@ -43,6 +43,8 @@ import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;
import com.thoughtworks.xstream.io.json.JsonWriter;
import com.thoughtworks.xstream.io.xml.QNameMap;
import com.thoughtworks.xstream.io.xml.StaxDriver;
import com.thoughtworks.xstream.security.AnyTypePermission;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@ -176,6 +178,23 @@ class XStreamMarshallerTests { @@ -176,6 +178,23 @@ class XStreamMarshallerTests {
assertThat(XmlContent.from(writer)).isSimilarTo(EXPECTED_STRING);
}
@Test
void marshalStaxResultXMLStreamWriterDefaultNamespace() throws Exception {
QNameMap map = new QNameMap();
map.setDefaultNamespace("https://example.com");
map.setDefaultPrefix("spr");
StaxDriver driver = new StaxDriver(map);
marshaller.setStreamDriver(driver);
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
StringWriter writer = new StringWriter();
XMLStreamWriter streamWriter = outputFactory.createXMLStreamWriter(writer);
Result result = StaxUtils.createStaxResult(streamWriter);
marshaller.marshal(flight, result);
assertThat(XmlContent.from(writer)).isSimilarTo(
"<spr:flight xmlns:spr=\"https://example.com\"><spr:flightNumber>42</spr:flightNumber></spr:flight>");
}
@Test
void marshalStaxResultXMLEventWriter() throws Exception {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();

Loading…
Cancel
Save