Rename IQ.ELEMENT to IQ.IQ_ELEMENT

to avoid confusion between the IQ element 'iq' and the IQs child
element. ELEMENT defined in an IQ sublcass should contain the *child*
element.

Add element to StreamInitation and fix FileTransferManager which still
used a packet listener instead of an IQ request handler to handle
incoming stream initiation requests.
This commit is contained in:
Florian Schmaus 2015-01-11 21:52:06 +01:00
parent f1a1215f35
commit b0cecee710
6 changed files with 19 additions and 15 deletions

View File

@ -543,7 +543,7 @@ public class XMPPBOSHConnection extends AbstractXMPPConnection {
String name = parser.getName();
switch (name) {
case Message.ELEMENT:
case IQ.ELEMENT:
case IQ.IQ_ELEMENT:
case Presence.ELEMENT:
parseAndProcessStanza(parser);
break;

View File

@ -40,7 +40,8 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
*/
public abstract class IQ extends Packet {
public static final String ELEMENT = "iq";
// Don't name this field 'ELEMENT'. When it comes to IQ, ELEMENT is the child element!
public static final String IQ_ELEMENT = "iq";
public static final String QUERY_ELEMENT = "query";
private final String childElementName;
@ -98,7 +99,7 @@ public abstract class IQ extends Packet {
@Override
public final XmlStringBuilder toXML() {
XmlStringBuilder buf = new XmlStringBuilder();
buf.halfOpenElement(ELEMENT);
buf.halfOpenElement(IQ_ELEMENT);
addCommonAttributes(buf);
if (type == null) {
buf.attribute("type", "get");
@ -108,7 +109,7 @@ public abstract class IQ extends Packet {
}
buf.rightAngleBracket();
buf.append(getChildElementXML());
buf.closeElement(ELEMENT);
buf.closeElement(IQ_ELEMENT);
return buf;
}

View File

@ -149,7 +149,7 @@ public class PacketParserUtils {
switch (name) {
case Message.ELEMENT:
return parseMessage(parser);
case IQ.ELEMENT:
case IQ.IQ_ELEMENT:
return parseIQ(parser);
case Presence.ELEMENT:
return parsePresence(parser);

View File

@ -30,6 +30,9 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
* @author Alexander Wenckus
*/
public class Bytestream extends IQ {
public static final String ELEMENT = QUERY_ELEMENT;
/**
* The XMPP namespace of the SOCKS5 Bytestream
*/
@ -49,7 +52,7 @@ public class Bytestream extends IQ {
* The default constructor
*/
public Bytestream() {
super(QUERY_ELEMENT, NAMESPACE);
super(ELEMENT, NAMESPACE);
}
/**

View File

@ -17,14 +17,11 @@
package org.jivesoftware.smackx.filetransfer;
import org.jivesoftware.smack.Manager;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.IQTypeFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.iqrequest.AbstractIqRequestHandler;
import org.jivesoftware.smack.iqrequest.IQRequestHandler.Mode;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.XMPPError;
import org.jivesoftware.smackx.si.packet.StreamInitiation;
import org.jxmpp.util.XmppStringUtils;
@ -73,15 +70,18 @@ public class FileTransferManager extends Manager {
super(connection);
this.fileTransferNegotiator = FileTransferNegotiator
.getInstanceFor(connection);
connection.addAsyncPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
connection.registerIQRequestHandler(new AbstractIqRequestHandler(StreamInitiation.ELEMENT,
StreamInitiation.NAMESPACE, IQ.Type.set, Mode.async) {
@Override
public IQ handleIQRequest(IQ packet) {
StreamInitiation si = (StreamInitiation) packet;
final FileTransferRequest request = new FileTransferRequest(FileTransferManager.this, si);
for (final FileTransferListener listener : listeners) {
listener.fileTransferRequest(request);
}
return null;
}
}, new AndFilter(new PacketTypeFilter(StreamInitiation.class), IQTypeFilter.SET));
});
}
/**

View File

@ -948,7 +948,7 @@ public class XMPPTCPConnection extends AbstractXMPPConnection {
final String name = parser.getName();
switch (name) {
case Message.ELEMENT:
case IQ.ELEMENT:
case IQ.IQ_ELEMENT:
case Presence.ELEMENT:
try {
parseAndProcessStanza(parser);