PacketParserUtils.parseMessage(PacketParserUtils.getParserFor(invalidControl)); fail("Exception should be thrown"); } catch (XmlPullParserException e) { PacketParserUtils.parseMessage(PacketParserUtils.getParserFor(invalidControl)); fail("Exception should be thrown"); } catch (XmlPullParserException e) { PacketParserUtils.parseMessage(PacketParserUtils.getParserFor(invalidControl)); fail("Exception should be thrown"); } catch (XmlPullParserException e) {
case "failure": if ("urn:ietf:params:xml:ns:xmpp-sasl".equals(parser.getNamespace(null))) { final SASLFailure failure = PacketParserUtils.parseSASLFailure(parser); getSASLAuthentication().authenticationFailed(failure); throw new StreamErrorException(PacketParserUtils.parseStreamError(parser)); } else { StanzaError.Builder builder = PacketParserUtils.parseError(parser); throw new XMPPException.XMPPErrorException(null, builder.build());
@Override public Transcript parse(XmlPullParser parser, int initialDepth) throws Exception { String sessionID = parser.getAttributeValue("", "sessionID"); List<Stanza> packets = new ArrayList<>(); boolean done = false; while (!done) { int eventType = parser.next(); if (eventType == XmlPullParser.START_TAG) { if (parser.getName().equals("message")) { packets.add(PacketParserUtils.parseMessage(parser)); } else if (parser.getName().equals("presence")) { packets.add(PacketParserUtils.parsePresence(parser)); } } else if (eventType == XmlPullParser.END_TAG) { if (parser.getName().equals("transcript")) { done = true; } } } return new Transcript(sessionID, packets); } }
/** * Tries to parse and return either a Message, IQ or Presence stanza. * * connection is optional and is used to return feature-not-implemented errors for unknown IQ stanzas. * * @param parser * @return a stanza which is either a Message, IQ or Presence. * @throws Exception */ public static Stanza parseStanza(XmlPullParser parser) throws Exception { ParserUtils.assertAtStartTag(parser); final String name = parser.getName(); switch (name) { case Message.ELEMENT: return parseMessage(parser); case IQ.IQ_ELEMENT: return parseIQ(parser); case Presence.ELEMENT: return parsePresence(parser); default: throw new IllegalArgumentException("Can only parse message, iq or presence, not " + name); } }
@Test public void parsePresenceWithInvalidLegacyDelayed() throws Exception { String stanza = "<presence from='mercutio@example.com' to='juliet@example.com'>" + "<x xmlns='jabber:x:delay'/></presence>"; Presence presence = PacketParserUtils.parsePresence(PacketParserUtils.getParserFor(stanza)); DelayInformation delay = DelayInformationManager.getXep203DelayInformation(presence); assertNull(delay); } }
if (eventType == XmlPullParser.START_TAG) { if (parser.getName().equals("message")) { processPacket(PacketParserUtils.parseMessage(parser)); } else if (parser.getName().equals("iq")) { processPacket(PacketParserUtils.parseIQ(parser, connection)); } else if (parser.getName().equals("presence")) { processPacket(PacketParserUtils.parsePresence(parser)); throw new XMPPException(PacketParserUtils.parseStreamError(parser)); } else if (parser.getName().equals("features")) { parseFeatures(parser); final Failure failure = PacketParserUtils.parseSASLFailure(parser); processPacket(failure); connection.getSASLAuthentication().authenticationFailed();
@Test public void checkMarkableProvider() throws Exception { XmlPullParser parser = PacketParserUtils.getParserFor(markableExtension); MarkableExtension markableExtension1 = new MarkableProvider().parse(parser); Assert.assertEquals(markableExtension, markableExtension1.toXML(null).toString()); Message message = PacketParserUtils.parseStanza(markableMessageStanza); MarkableExtension markableExtension2 = MarkableExtension.from(message); Assert.assertEquals(markableExtension, markableExtension2.toXML(null).toString()); }
@Test public void testStreamErrorXmlNotWellFormed() { StreamError error = null; final String xml = // Usually the stream:stream element has more attributes (to, version, ...) // We omit those, since they are not relevant for testing "<stream:stream from='im.example.com' id='++TR84Sm6A3hnt3Q065SnAbbk3Y=' xmlns:stream='http://etherx.jabber.org/streams'>" + "<stream:error><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error>" + "</stream:stream>"; try { XmlPullParser parser = PacketParserUtils.getParserFor(xml, "error"); error = PacketParserUtils.parseStreamError(parser); } catch (Exception e) { fail(e.getMessage()); } assertNotNull(error); assertEquals(Condition.not_well_formed, error.getCondition()); } }
presence.setPacketID(id == null ? Packet.ID_NOT_AVAILABLE : id); String language = getLanguageAttribute(parser); if (language != null && !"".equals(language.trim())) { presence.setLanguage(language); presence.setError(parseError(parser)); } else if (elementName.equals("properties") && namespace.equals(PROPERTIES_NAMESPACE)) { Map<String, Object> properties = parseProperties(parser); presence.addExtension(PacketParserUtils.parsePacketExtension(elementName, namespace, parser)); } catch (Exception e) { System.err.println("Failed to parse extension packet in Presence packet.");
public static OpenPgpContentElement parseOpenPgpContentElement(String element) throws XmlPullParserException, IOException { XmlPullParser parser = PacketParserUtils.getParserFor(element); return parseOpenPgpContentElement(parser); }
presence.setError(parseError(parser)); Map properties = parseProperties(parser); PacketParserUtils.parsePacketExtension(elementName, namespace, parser));
case "subject": String xmlLangSubject = ParserUtils.getXmlLang(parser); String subject = parseElementText(parser); message.setError(parseError(parser)); break; default: PacketParserUtils.addExtensionElement(message, parser, elementName, namespace); break;
@Test public void testNoWorkHomeSpecifier_TEL() throws Throwable { // @formatter:off final String request = "<iq id='v1' to='user@igniterealtime.org/mobile' type='result'>" + "<vCard xmlns='vcard-temp'><TEL><FAX/><NUMBER>3443233</NUMBER></TEL></vCard>" + "</iq>"; // @formatter:on VCard vCard = PacketParserUtils.parseStanza(request); assertEquals("3443233", vCard.getPhoneWork("FAX")); }
public static XmlPullParser getParserFor(Reader reader) throws XmlPullParserException, IOException { XmlPullParser parser = newXmppParser(reader); // Wind the parser forward to the first start tag int event = parser.getEventType(); while (event != XmlPullParser.START_TAG) { if (event == XmlPullParser.END_DOCUMENT) { throw new IllegalArgumentException("Document contains no start tag"); } event = parser.next(); } return parser; }
StanzaError.Builder error = PacketParserUtils.parseError(parser); adHocCommandData.setError(error);
@Test public void consumeUnparsedInput() throws Exception { final String MESSAGE_EXCEPTION_ELEMENT = "<" + ThrowException.ELEMENT + " xmlns='" + ThrowException.NAMESPACE + "'>" + "<nothingInHere>" + "</nothingInHere>" + "</" + ThrowException.ELEMENT + ">"; XmlPullParser parser = TestUtils.getMessageParser( "<message from='user@server.example' to='francisco@denmark.lit' id='foo'>" + MESSAGE_EXCEPTION_ELEMENT + EXTENSION2 + "</message>"); int parserDepth = parser.getDepth(); CharSequence content = null; try { PacketParserUtils.parseMessage(parser); } catch (Exception e) { content = PacketParserUtils.parseContentDepth(parser, parserDepth, false); } assertThat(MESSAGE_EXCEPTION_ELEMENT + EXTENSION2 + "</message>", equalsCharSequence(content)); }
switch (elementName) { case "error": error = PacketParserUtils.parseError(parser); break; iqPacket = new UnparsedIQ(elementName, namespace, parseElement(parser));
presence.setError(parseError(parser)); break; default: PacketParserUtils.addExtensionElement(presence, parser, elementName, namespace); } catch (Exception e) { LOGGER.warning("Failed to parse extension element in Presence stanza: \"" + e + "\" from: '"
packet = PacketParserUtils.parseMessage(parser); break; default:
.append("</iq>"); final XmlPullParser parser = TestUtils.getIQParser(sb.toString()); final IQ rosterPush = PacketParserUtils.parseIQ(parser); initRoster(); rosterListener.reset();