From 609781b5ade55fd26f80db9c9cafba602c1b1470 Mon Sep 17 00:00:00 2001 From: hamed-sb Date: Thu, 5 Sep 2024 12:49:15 +0330 Subject: [PATCH] [core] fix toXml for UnparsedIQ --- .../org/jivesoftware/smack/packet/UnparsedIQ.java | 9 ++++++++- .../org/jivesoftware/smack/packet/IqTest.java | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/UnparsedIQ.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/UnparsedIQ.java index e363d2e30..8cd2146f8 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/UnparsedIQ.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/UnparsedIQ.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smack.packet; +import org.jivesoftware.smack.util.StringUtils; + /** * An IQ stanzas that could not be parsed because no provider was found. */ @@ -34,7 +36,12 @@ public class UnparsedIQ extends IQ { @Override protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) { - xml.escape(content); + if (StringUtils.isEmpty(content)) { + xml.setEmptyElement(); + } else { + xml.rightAngleBracket(); + xml.escape(content); + } return xml; } } diff --git a/smack-core/src/test/java/org/jivesoftware/smack/packet/IqTest.java b/smack-core/src/test/java/org/jivesoftware/smack/packet/IqTest.java index 041c66981..2101daca4 100644 --- a/smack-core/src/test/java/org/jivesoftware/smack/packet/IqTest.java +++ b/smack-core/src/test/java/org/jivesoftware/smack/packet/IqTest.java @@ -58,4 +58,19 @@ public class IqTest { IQ iq = PacketParserUtils.parseIQ(parser); assertXmlSimilar(iqXml, iq.toXML()); } + + @ParameterizedTest + @EnumSource(SmackTestUtil.XmlPullParserKind.class) + public void testUnparsedIq(SmackTestUtil.XmlPullParserKind parserKind) throws Exception { + final String iqXml = "" + + "" + + ""; + final String expected = "" + + "<query xmlns='jabber:iq:version'/>" + + ""; + + XmlPullParser parser = SmackTestUtil.getParserFor(iqXml, "iq", parserKind); + IQ iq = PacketParserUtils.parseIQ(parser); + assertXmlSimilar(expected, iq.toXML()); + } }