提交 1f296403 编写于 作者: A Arjen Poutsma

SPR-7620 - StaxEventContentHandler does not set Location for StartDocument event

上级 35da7bdb
......@@ -50,8 +50,6 @@ class StaxEventContentHandler extends AbstractStaxContentHandler {
private final XMLEventConsumer eventConsumer;
private Locator locator;
/**
* Constructs a new instance of the <code>StaxEventContentHandler</code> that writes to the given
* <code>XMLEventConsumer</code>. A default <code>XMLEventFactory</code> will be created.
......@@ -76,8 +74,31 @@ class StaxEventContentHandler extends AbstractStaxContentHandler {
eventConsumer = consumer;
}
public void setDocumentLocator(Locator locator) {
this.locator = locator;
public void setDocumentLocator(final Locator locator) {
if (locator != null) {
eventFactory.setLocation(new Location() {
public int getLineNumber() {
return locator.getLineNumber();
}
public int getColumnNumber() {
return locator.getColumnNumber();
}
public int getCharacterOffset() {
return -1;
}
public String getPublicId() {
return locator.getPublicId();
}
public String getSystemId() {
return locator.getSystemId();
}
});
}
}
@Override
......@@ -120,9 +141,6 @@ class StaxEventContentHandler extends AbstractStaxContentHandler {
}
private void consumeEvent(XMLEvent event) throws XMLStreamException {
if (locator != null) {
eventFactory.setLocation(new SaxLocation(locator));
}
eventConsumer.add(event);
}
......@@ -164,32 +182,4 @@ class StaxEventContentHandler extends AbstractStaxContentHandler {
protected void skippedEntityInternal(String name) throws XMLStreamException {
}
private static class SaxLocation implements Location {
private Locator locator;
private SaxLocation(Locator locator) {
this.locator = locator;
}
public int getLineNumber() {
return locator.getLineNumber();
}
public int getColumnNumber() {
return locator.getColumnNumber();
}
public int getCharacterOffset() {
return -1;
}
public String getPublicId() {
return locator.getPublicId();
}
public String getSystemId() {
return locator.getSystemId();
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册