Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions release-notes/VERSION
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ Version: 3.x (for earlier see VERSION-2.x)

No changes since 3.1

3.1.4 (not yet released)

#863: Fix to support Woodstox 7.2.0 (but no dep version bump)

3.1.3 (01-May-2025)
3.1.2 (11-Apr-2026)
3.1.1 (27-Mar-2026)
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/tools/jackson/dataformat/xml/ser/ToXmlGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -735,9 +735,12 @@ public JsonGenerator writeRawValue(String text) throws JacksonException {
if (_nextIsAttribute) {
_xmlWriter.writeAttribute(_nextName.getNamespaceURI(), _nextName.getLocalPart(), text);
} else if (checkNextIsUnwrapped()) {
// Woodstox 7.2.0 change: writeRaw does not close pending start element; force it
_xmlWriter.writeCharacters("");
_xmlWriter.writeRaw(text);
} else {
_xmlWriter.writeStartElement(_nextName.getNamespaceURI(), _nextName.getLocalPart());
_xmlWriter.writeCharacters("");
_xmlWriter.writeRaw(text);
_xmlWriter.writeEndElement();
}
Expand All @@ -762,9 +765,11 @@ public JsonGenerator writeRawValue(String text, int offset, int len) throws Jack
if (_nextIsAttribute) {
_xmlWriter.writeAttribute(_nextName.getNamespaceURI(), _nextName.getLocalPart(), text.substring(offset, offset + len));
} else if (checkNextIsUnwrapped()) {
_xmlWriter.writeCharacters("");
_xmlWriter.writeRaw(text, offset, len);
} else {
_xmlWriter.writeStartElement(_nextName.getNamespaceURI(), _nextName.getLocalPart());
_xmlWriter.writeCharacters("");
_xmlWriter.writeRaw(text, offset, len);
_xmlWriter.writeEndElement();
}
Expand All @@ -788,9 +793,11 @@ public JsonGenerator writeRawValue(char[] text, int offset, int len) throws Jack
if (_nextIsAttribute) {
_xmlWriter.writeAttribute(_nextName.getNamespaceURI(), _nextName.getLocalPart(), new String(text, offset, len));
} else if (checkNextIsUnwrapped()) {
_xmlWriter.writeCharacters("");
_xmlWriter.writeRaw(text, offset, len);
} else {
_xmlWriter.writeStartElement(_nextName.getNamespaceURI(), _nextName.getLocalPart());
_xmlWriter.writeCharacters("");
_xmlWriter.writeRaw(text, offset, len);
_xmlWriter.writeEndElement();
}
Expand All @@ -813,6 +820,8 @@ public JsonGenerator writeRaw(String text) throws JacksonException
_reportUnimplementedStax2("writeRaw");
}
try {
// Woodstox 7.2.0 regression: writeRaw does not close pending start element; force it
_xmlWriter.writeCharacters("");
_xmlWriter.writeRaw(text);
} catch (XMLStreamException e) {
StaxUtil.throwAsWriteException(e, this);
Expand All @@ -828,6 +837,7 @@ public JsonGenerator writeRaw(String text, int offset, int len) throws JacksonEx
_reportUnimplementedStax2("writeRaw");
}
try {
_xmlWriter.writeCharacters("");
_xmlWriter.writeRaw(text, offset, len);
} catch (XMLStreamException e) {
StaxUtil.throwAsWriteException(e, this);
Expand All @@ -843,6 +853,7 @@ public JsonGenerator writeRaw(char[] text, int offset, int len) throws JacksonEx
_reportUnimplementedStax2("writeRaw");
}
try {
_xmlWriter.writeCharacters("");
_xmlWriter.writeRaw(text, offset, len);
} catch (XMLStreamException e) {
StaxUtil.throwAsWriteException(e, this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,8 @@ public void writeLeafXsiNilElement(XMLStreamWriter2 sw,
public void writePrologLinefeed(XMLStreamWriter2 sw) throws XMLStreamException
{
// 06-Dec-2015, tatu: Alternatively could try calling `writeSpace()`...
// Woodstox 7.2.0 regression: writeRaw does not close pending start element; force it
sw.writeCharacters("");
sw.writeRaw(_newLine);
}

Expand Down Expand Up @@ -501,6 +503,8 @@ public FixedSpaceIndenter() { }
public void writeIndentation(XMLStreamWriter2 sw, int level)
throws XMLStreamException
{
// Woodstox 7.2.0 regression: writeRaw does not close pending start element; force it
sw.writeCharacters("");
sw.writeRaw(" ");
}

Expand Down Expand Up @@ -531,10 +535,12 @@ public Lf2SpacesIndenter() { }
@Override
public void writeIndentation(XMLStreamWriter2 sw, int level) throws XMLStreamException
{
// Woodstox 7.2.0 regression: writeRaw does not close pending start element; force it
sw.writeCharacters("");
sw.writeRaw(_newLine);
level += level; // 2 spaces per level
while (level > SPACE_COUNT) { // should never happen but...
sw.writeRaw(SPACES, 0, SPACE_COUNT);
sw.writeRaw(SPACES, 0, SPACE_COUNT);
level -= SPACES.length;
}
sw.writeRaw(SPACES, 0, level);
Expand Down