diff --git a/src/java/org/jivesoftware/multiplexer/net/XMLLightweightParser.java b/src/java/org/jivesoftware/multiplexer/net/XMLLightweightParser.java index 0170d74..c500186 100644 --- a/src/java/org/jivesoftware/multiplexer/net/XMLLightweightParser.java +++ b/src/java/org/jivesoftware/multiplexer/net/XMLLightweightParser.java @@ -189,6 +189,10 @@ status = XMLLightweightParser.TAIL; depth--; } + else if (ch == '!') { + // This is a "; + in.putString(msg1, Charset.forName(CHARSET).newEncoder()); + in.flip(); + // Fill parser with byte buffer content and parse it + parser.read(in); + // Make verifications + assertTrue("No messages were found in stanza", parser.areThereMsgs()); + String[] values = parser.getMsgs(); + assertEquals("Wrong number of parsed stanzas", 1, values.length); + assertEquals("Wrong stanza was parsed", msg1, values[0]); + + XmlPullParserFactory factory = XmlPullParserFactory.newInstance(MXParser.class.getName(), null); + factory.setNamespaceAware(true); + + XMPPPacketReader xmppReader = new XMPPPacketReader(); + xmppReader.setXPPFactory(factory); + Element doc = xmppReader.read(new StringReader(values[0])).getRootElement(); + assertNotNull(doc); + assertEquals(msg1, doc.asXML()); + } + protected void setUp() throws Exception { super.setUp(); // Create parser