fix(serialize-xml): interpret empty value wrapper as null
This commit is contained in:
parent
ae854cc040
commit
45eee07a29
|
@ -29,7 +29,8 @@ public class XmlReader extends SerializeReader<IOException, XmlReader> implement
|
||||||
private static final int PEEKED_CDATA = 11;
|
private static final int PEEKED_CDATA = 11;
|
||||||
private static final int PEEKED_NAME_VIRTUAL_TEXT = 12;
|
private static final int PEEKED_NAME_VIRTUAL_TEXT = 12;
|
||||||
private static final int PEEKED_NAME_VIRTUAL_CDATA = 13;
|
private static final int PEEKED_NAME_VIRTUAL_CDATA = 13;
|
||||||
private static final int PEEKED_EOF = 14;
|
private static final int PEEKED_NULL_VIRTUAL = 14;
|
||||||
|
private static final int PEEKED_EOF = 15;
|
||||||
|
|
||||||
int peeked = PEEKED_NONE;
|
int peeked = PEEKED_NONE;
|
||||||
private final NativeXmlReader reader;
|
private final NativeXmlReader reader;
|
||||||
|
@ -43,7 +44,7 @@ public class XmlReader extends SerializeReader<IOException, XmlReader> implement
|
||||||
private String nextTagName = null;
|
private String nextTagName = null;
|
||||||
|
|
||||||
{
|
{
|
||||||
stack[stackSize++] = WrapperScope.DOCUMENT;
|
push(WrapperScope.DOCUMENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void push(int newTop) {
|
private void push(int newTop) {
|
||||||
|
@ -66,6 +67,7 @@ public class XmlReader extends SerializeReader<IOException, XmlReader> implement
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XmlReader setLenient(boolean lenient) {
|
public XmlReader setLenient(boolean lenient) {
|
||||||
|
super.setLenient(lenient);
|
||||||
reader.setLenient(lenient);
|
reader.setLenient(lenient);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -175,6 +177,7 @@ public class XmlReader extends SerializeReader<IOException, XmlReader> implement
|
||||||
case PEEKED_CDATA -> heuristics.guessValueKind(getPath(), XmlToken.CDATA);
|
case PEEKED_CDATA -> heuristics.guessValueKind(getPath(), XmlToken.CDATA);
|
||||||
case PEEKED_ATT_VALUE -> heuristics.guessValueKind(getPath(), XmlToken.ATTRIBUTE_VALUE);
|
case PEEKED_ATT_VALUE -> heuristics.guessValueKind(getPath(), XmlToken.ATTRIBUTE_VALUE);
|
||||||
case PEEKED_TEXT -> heuristics.guessValueKind(getPath(), XmlToken.TEXT);
|
case PEEKED_TEXT -> heuristics.guessValueKind(getPath(), XmlToken.TEXT);
|
||||||
|
case PEEKED_NULL_VIRTUAL -> Token.NULL;
|
||||||
case PEEKED_EOF -> Token.END_DOCUMENT;
|
case PEEKED_EOF -> Token.END_DOCUMENT;
|
||||||
default -> throw new AssertionError();
|
default -> throw new AssertionError();
|
||||||
};
|
};
|
||||||
|
@ -259,6 +262,11 @@ public class XmlReader extends SerializeReader<IOException, XmlReader> implement
|
||||||
reader.endTag();
|
reader.endTag();
|
||||||
yield doPeek();
|
yield doPeek();
|
||||||
}
|
}
|
||||||
|
case WrapperScope.OBJECT_VALUE_WRAPPER -> {
|
||||||
|
stackSize--;
|
||||||
|
reader.endTag();
|
||||||
|
yield PEEKED_NULL_VIRTUAL;
|
||||||
|
}
|
||||||
default -> throw syntaxError("Unexpected end tag");
|
default -> throw syntaxError("Unexpected end tag");
|
||||||
};
|
};
|
||||||
case EOF -> PEEKED_EOF;
|
case EOF -> PEEKED_EOF;
|
||||||
|
@ -373,6 +381,7 @@ public class XmlReader extends SerializeReader<IOException, XmlReader> implement
|
||||||
}
|
}
|
||||||
yield reader.nextCData();
|
yield reader.nextCData();
|
||||||
}
|
}
|
||||||
|
case PEEKED_NULL_VIRTUAL -> "null";
|
||||||
default -> throw unexpectedTokenError(kind);
|
default -> throw unexpectedTokenError(kind);
|
||||||
};
|
};
|
||||||
peeked = PEEKED_NONE;
|
peeked = PEEKED_NONE;
|
||||||
|
|
Loading…
Reference in New Issue