Merge branch '4.4'

This commit is contained in:
Florian Schmaus 2020-11-25 20:57:44 +01:00
commit 1a963cc794
2 changed files with 40 additions and 6 deletions

View File

@ -299,7 +299,7 @@ public class PacketParserUtils {
*/
public static CharSequence parseContentDepth(XmlPullParser parser, int depth, boolean fullNamespaces) throws XmlPullParserException, IOException {
if (parser.supportsRoundtrip()) {
return parseContentDepthWithRoundtrip(parser, depth, fullNamespaces);
return parseContentDepthWithRoundtrip(parser, depth);
} else {
return parseContentDepthWithoutRoundtrip(parser, depth, fullNamespaces);
}
@ -368,8 +368,7 @@ public class PacketParserUtils {
return xml;
}
@SuppressWarnings("UnusedVariable")
private static CharSequence parseContentDepthWithRoundtrip(XmlPullParser parser, int depth, boolean fullNamespaces)
private static XmlStringBuilder parseContentDepthWithRoundtrip(XmlPullParser parser, int depth)
throws XmlPullParserException, IOException {
XmlStringBuilder sb = new XmlStringBuilder();
XmlPullParser.Event event = parser.getEventType();
@ -377,10 +376,9 @@ public class PacketParserUtils {
outerloop: while (true) {
switch (event) {
case START_ELEMENT:
if (startElementJustSeen) {
sb.rightAngleBracket();
}
startElementJustSeen = true;
String openElementTag = parser.getText();
sb.append(openElementTag);
break;
case END_ELEMENT:
boolean isEmptyElement = false;

View File

@ -854,4 +854,40 @@ public class PacketParserUtilsTest {
StanzaError error = PacketParserUtils.parseError(parser);
assertEquals(text, error.getDescriptiveText());
}
@ParameterizedTest
@EnumSource(SmackTestUtil.XmlPullParserKind.class)
public void testParseElementSimple(SmackTestUtil.XmlPullParserKind parserKind) throws TransformerException, ParserConfigurationException, FactoryConfigurationError, XmlPullParserException, IOException {
String unknownElement = XMLBuilder.create("unknown-element")
.ns("https://example.org/non-existent")
.e("inner")
.t("test")
.asString(outputProperties);
XmlPullParser xmlPullParser = SmackTestUtil.getParserFor(unknownElement, parserKind);
CharSequence unknownElementParsed = PacketParserUtils.parseElement(xmlPullParser);
assertXmlSimilar(unknownElement, unknownElementParsed);
}
@ParameterizedTest
@EnumSource(SmackTestUtil.XmlPullParserKind.class)
public void testParseElementExtended(SmackTestUtil.XmlPullParserKind parserKind) throws TransformerException, ParserConfigurationException, FactoryConfigurationError, XmlPullParserException, IOException {
String unknownElement = XMLBuilder.create("unknown-element")
.ns("https://example.org/non-existent")
.a("attribute-outer", "foo")
.e("inner")
.a("attribute-inner", "bar")
.a("attribute-inner-2", "baz")
.t("test")
.up()
.e("empty-element")
.up()
.asString(outputProperties);
XmlPullParser xmlPullParser = SmackTestUtil.getParserFor(unknownElement, parserKind);
CharSequence unknownElementParsed = PacketParserUtils.parseElement(xmlPullParser);
assertXmlSimilar(unknownElement, unknownElementParsed);
}
}