From 5247fce7cad61fda250efb8a447230a631f4c30c Mon Sep 17 00:00:00 2001 From: Gaston Dombiak Date: Mon, 27 Feb 2006 18:17:27 +0000 Subject: [PATCH] Moved resource binding parsing as a core IQ packet. SMACK-124 git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@3492 b35dd754-fafc-0310-a699-88a17e54d16e --- build/resources/META-INF/smack.providers | 7 ----- .../org/jivesoftware/smack/PacketReader.java | 29 ++++++++++++++++++- .../org/jivesoftware/smack/packet/Bind.java | 28 ------------------ 3 files changed, 28 insertions(+), 36 deletions(-) diff --git a/build/resources/META-INF/smack.providers b/build/resources/META-INF/smack.providers index 8033f7676..98867a4fa 100644 --- a/build/resources/META-INF/smack.providers +++ b/build/resources/META-INF/smack.providers @@ -121,13 +121,6 @@ org.jivesoftware.smackx.packet.OfflineMessageInfo$Provider - - - bind - urn:ietf:params:xml:ns:xmpp-bind - org.jivesoftware.smack.packet.Bind$Provider - - query diff --git a/source/org/jivesoftware/smack/PacketReader.java b/source/org/jivesoftware/smack/PacketReader.java index 4167719bd..31c9fc136 100644 --- a/source/org/jivesoftware/smack/PacketReader.java +++ b/source/org/jivesoftware/smack/PacketReader.java @@ -29,8 +29,8 @@ import org.xmlpull.mxp1.MXParser; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import java.util.*; import java.io.IOException; +import java.util.*; /** * Listens for XML traffic from the XMPP server and parses it into packet objects. @@ -585,6 +585,10 @@ class PacketReader { else if (elementName.equals("query") && namespace.equals("jabber:iq:register")) { iqPacket = parseRegistration(parser); } + else if (elementName.equals("bind") && + namespace.equals("urn:ietf:params:xml:ns:xmpp-bind")) { + iqPacket = parseResourceBinding(parser); + } // Otherwise, see if there is a registered provider for // this element name and namespace. else { @@ -756,6 +760,29 @@ class PacketReader { return registration; } + private Bind parseResourceBinding(XmlPullParser parser) throws IOException, + XmlPullParserException { + Bind bind = new Bind(); + boolean done = false; + while (!done) { + int eventType = parser.next(); + if (eventType == XmlPullParser.START_TAG) { + if (parser.getName().equals("resource")) { + bind.setResource(parser.nextText()); + } + else if (parser.getName().equals("jid")) { + bind.setJid(parser.nextText()); + } + } else if (eventType == XmlPullParser.END_TAG) { + if (parser.getName().equals("bind")) { + done = true; + } + } + } + + return bind; + } + /** * A wrapper class to associate a packet collector with a listener. */ diff --git a/source/org/jivesoftware/smack/packet/Bind.java b/source/org/jivesoftware/smack/packet/Bind.java index b913c9c5b..9d589b921 100644 --- a/source/org/jivesoftware/smack/packet/Bind.java +++ b/source/org/jivesoftware/smack/packet/Bind.java @@ -20,9 +20,6 @@ package org.jivesoftware.smack.packet; -import org.jivesoftware.smack.provider.IQProvider; -import org.xmlpull.v1.XmlPullParser; - /** * IQ packet used by Smack to bind a resource and to obtain the jid assigned by the server. * There are two ways to bind a resource. One is simply sending an empty Bind packet where the @@ -71,29 +68,4 @@ public class Bind extends IQ { buf.append(""); return buf.toString(); } - - public static class Provider implements IQProvider { - - public IQ parseIQ(XmlPullParser parser) throws Exception { - Bind bind = new Bind(); - boolean done = false; - while (!done) { - int eventType = parser.next(); - if (eventType == XmlPullParser.START_TAG) { - if (parser.getName().equals("resource")) { - bind.setResource(parser.nextText()); - } - else if (parser.getName().equals("jid")) { - bind.setJid(parser.nextText()); - } - } else if (eventType == XmlPullParser.END_TAG) { - if (parser.getName().equals("bind")) { - done = true; - } - } - } - - return bind; - } - } }