XMLEventReader.getElementText() properly checks for start element
Issue: SPR-17233
This commit is contained in:
@@ -16,9 +16,6 @@
|
||||
|
||||
package org.springframework.util.xml;
|
||||
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.xmlunit.matchers.CompareMatcher.isSimilarTo;
|
||||
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
@@ -32,8 +29,13 @@ import javax.xml.stream.events.XMLEvent;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static javax.xml.stream.XMLStreamConstants.*;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.xmlunit.matchers.CompareMatcher.*;
|
||||
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
* @author Andrzej Hołowko
|
||||
*/
|
||||
public class ListBasedXMLEventReaderTests {
|
||||
|
||||
@@ -41,6 +43,7 @@ public class ListBasedXMLEventReaderTests {
|
||||
|
||||
private final XMLOutputFactory outputFactory = XMLOutputFactory.newFactory();
|
||||
|
||||
|
||||
@Test
|
||||
public void standard() throws Exception {
|
||||
String xml = "<foo><bar>baz</bar></foo>";
|
||||
@@ -55,9 +58,42 @@ public class ListBasedXMLEventReaderTests {
|
||||
assertThat(resultWriter.toString(), isSimilarTo(xml));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetElementText() throws Exception {
|
||||
String xml = "<foo><bar>baz</bar></foo>";
|
||||
List<XMLEvent> events = readEvents(xml);
|
||||
|
||||
ListBasedXMLEventReader reader = new ListBasedXMLEventReader(events);
|
||||
|
||||
assertEquals(START_DOCUMENT, reader.nextEvent().getEventType());
|
||||
assertEquals(START_ELEMENT, reader.nextEvent().getEventType());
|
||||
assertEquals(START_ELEMENT, reader.nextEvent().getEventType());
|
||||
assertEquals("baz", reader.getElementText());
|
||||
assertEquals(END_ELEMENT, reader.nextEvent().getEventType());
|
||||
assertEquals(END_DOCUMENT, reader.nextEvent().getEventType());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetElementTextThrowsExceptionAtWrongPosition() throws Exception {
|
||||
String xml = "<foo><bar>baz</bar></foo>";
|
||||
List<XMLEvent> events = readEvents(xml);
|
||||
|
||||
ListBasedXMLEventReader reader = new ListBasedXMLEventReader(events);
|
||||
|
||||
assertEquals(START_DOCUMENT, reader.nextEvent().getEventType());
|
||||
|
||||
try {
|
||||
reader.getElementText();
|
||||
fail("Should have thrown XMLStreamException");
|
||||
}
|
||||
catch (XMLStreamException ex) {
|
||||
// expected
|
||||
assertTrue(ex.getMessage().startsWith("Not at START_ELEMENT"));
|
||||
}
|
||||
}
|
||||
|
||||
private List<XMLEvent> readEvents(String xml) throws XMLStreamException {
|
||||
XMLEventReader reader =
|
||||
this.inputFactory.createXMLEventReader(new StringReader(xml));
|
||||
XMLEventReader reader = this.inputFactory.createXMLEventReader(new StringReader(xml));
|
||||
List<XMLEvent> events = new ArrayList<>();
|
||||
while (reader.hasNext()) {
|
||||
events.add(reader.nextEvent());
|
||||
|
||||
Reference in New Issue
Block a user