package org.xmpp.jnodes.smack; import org.jivesoftware.smack.provider.IQProvider; import org.xmlpull.v1.XmlPullParser; import java.util.IllegalFormatException; public class JingleNodesProvider implements IQProvider { public JingleChannelIQ parseIQ(final XmlPullParser parser) throws Exception { JingleChannelIQ iq = null; boolean done = false; int eventType; String elementName; String namespace; while (!done) { eventType = parser.getEventType(); elementName = parser.getName(); namespace = parser.getNamespace(); if (eventType == XmlPullParser.START_TAG) { if (elementName.equals(JingleChannelIQ.NAME) && namespace.equals(JingleChannelIQ.NAMESPACE)) { final String protocol = parser.getAttributeValue(null, "protocol"); final String porta = parser.getAttributeValue(null, "localport"); final String portb = parser.getAttributeValue(null, "remoteport"); final String host = parser.getAttributeValue(null, "host"); try { iq = new JingleChannelIQ(); iq.setProtocol(protocol == null ? JingleChannelIQ.UDP : protocol); if (host != null) iq.setHost(host); if (porta != null) iq.setLocalport(Integer.valueOf(porta)); if (portb != null) iq.setRemoteport(Integer.valueOf(portb)); } catch (final IllegalFormatException e) { e.printStackTrace(); } catch (NumberFormatException e) { e.printStackTrace(); } } } else if (eventType == XmlPullParser.END_TAG) { done = true; } if (!done) parser.next(); } return iq; } }