gateway.java.svn-base

来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 136 行

SVN-BASE
136
字号
/** * $Revision$ * $Date$ * * Copyright (C) 1999-2005 Jive Software. All rights reserved. * This software is the proprietary information of Jive Software. Use is subject to license terms. */package org.jivesoftware.sparkimpl.plugin.gateways;import org.jivesoftware.smack.PacketCollector;import org.jivesoftware.smack.SmackConfiguration;import org.jivesoftware.smack.XMPPConnection;import org.jivesoftware.smack.XMPPException;import org.jivesoftware.smack.filter.PacketIDFilter;import org.jivesoftware.smack.packet.IQ;import org.jivesoftware.smack.provider.IQProvider;import org.jivesoftware.spark.SparkManager;import org.xmlpull.v1.XmlPullParser;/** * */public class Gateway extends IQ {    private String jid;    private String username;    public String getJid() {        return jid;    }    public void setJid(String jid) {        this.jid = jid;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    /**     * Element name of the packet extension.     */    public static final String ELEMENT_NAME = "query";    /**     * Namespace of the packet extension.     */    public static final String NAMESPACE = "jabber:iq:gateway";    public String getChildElementXML() {        StringBuffer buf = new StringBuffer();        buf.append("<query xmlns=\"").append(NAMESPACE).append("\">");        buf.append("<prompt>").append(username).append("</prompt>");        buf.append("</query>");        return buf.toString();    }    /**     * An IQProvider for Gateway packet.     *     * @author Derek DeMoro     */    public static class Provider implements IQProvider {        public Provider() {            super();        }        public IQ parseIQ(XmlPullParser parser) throws Exception {            Gateway version = new Gateway();            boolean done = false;            while (!done) {                int eventType = parser.next();                if (eventType == XmlPullParser.START_TAG) {                    if (parser.getName().equals("jid")) {                        version.setJid(parser.nextText());                    }                    else if (parser.getName().equals("username")) {                        version.setUsername(parser.nextText());                    }                }                else if (eventType == XmlPullParser.END_TAG) {                    if (parser.getName().equals(ELEMENT_NAME)) {                        done = true;                    }                }            }            return version;        }    }    /**     * Returns the fully qualified JID of a user.     *     * @param serviceName the service the user belongs to.     * @param username    the name of the user.     * @return the JID.     * @throws XMPPException thrown if an exception occurs.     */    public static String getJID(String serviceName, String username) throws XMPPException {        Gateway registration = new Gateway();        registration.setType(IQ.Type.SET);        registration.setTo(serviceName);        registration.setUsername(username);        XMPPConnection con = SparkManager.getConnection();        PacketCollector collector = con.createPacketCollector(new PacketIDFilter(registration.getPacketID()));        con.sendPacket(registration);        Gateway response = (Gateway)collector.nextResult(SmackConfiguration.getPacketReplyTimeout());        collector.cancel();        if (response == null) {            throw new XMPPException("Server timed out");        }        if (response.getType() == IQ.Type.ERROR) {            throw new XMPPException("Error registering user", response.getError());        }        return response.getJid();    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?