1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2025-12-12 05:51:08 +01:00

Merge branch '4.1'

Conflicts:
	smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java
	smack-core/src/main/java/org/jivesoftware/smack/PacketCollector.java
	smack-core/src/main/java/org/jivesoftware/smack/PacketListener.java
	smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java
	smack-core/src/main/java/org/jivesoftware/smack/debugger/SmackDebugger.java
	smack-core/src/main/java/org/jivesoftware/smack/packet/Packet.java
	smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java
	smack-core/src/test/java/org/jivesoftware/smack/ThreadedDummyConnection.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/address/provider/MultipleAddressesProvider.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/ibb/DataListener.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/FaultTolerantNegotiator.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/IBBTransferNegotiator.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/Socks5TransferNegotiator.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/filetransfer/StreamNegotiator.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/muc/MultiUserChat.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSub.java
	smack-extensions/src/main/java/org/jivesoftware/smackx/vcardtemp/VCardManager.java
	smack-extensions/src/test/java/org/jivesoftware/smackx/receipts/DeliveryReceiptTest.java
	smack-im/src/main/java/org/jivesoftware/smack/chat/ChatManager.java
	smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/JingleSession.java
	smack-jingle-old/src/main/java/org/jivesoftware/smackx/jingleold/provider/JingleProvider.java
	smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/UserID.java
	smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/provider/RosterExchangeProvider.java
	smack-tcp/src/main/java/org/jivesoftware/smack/tcp/XMPPTCPConnection.java
	version.gradle
This commit is contained in:
Florian Schmaus 2015-03-04 22:42:36 +01:00
commit 701aa7d9c4
298 changed files with 2402 additions and 1562 deletions

View file

@ -16,13 +16,11 @@
*/
package org.jivesoftware.smackx.bytestreams.ibb;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.iqrequest.AbstractIqRequestHandler;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smackx.bytestreams.ibb.packet.Data;
import org.jivesoftware.smackx.bytestreams.ibb.packet.DataPacketExtension;
/**
* DataListener handles all In-Band Bytestream IQ stanzas containing a data
@ -38,40 +36,38 @@ import org.jivesoftware.smackx.bytestreams.ibb.packet.Data;
*
* @author Henning Staib
*/
class DataListener implements PacketListener {
class DataListener extends AbstractIqRequestHandler {
/* manager containing the listeners and the XMPP connection */
private final InBandBytestreamManager manager;
/* packet filter for all In-Band Bytestream data packets */
private final PacketFilter dataFilter = new AndFilter(
new PacketTypeFilter(Data.class));
/**
* Constructor.
*
* @param manager the In-Band Bytestream manager
*/
public DataListener(InBandBytestreamManager manager) {
super(DataPacketExtension.ELEMENT, DataPacketExtension.NAMESPACE, IQ.Type.set, Mode.async);
this.manager = manager;
}
public void processPacket(Stanza packet) throws NotConnectedException, InterruptedException {
Data data = (Data) packet;
@Override
public IQ handleIQRequest(IQ iqRequest) {
Data data = (Data) iqRequest;
InBandBytestreamSession ibbSession = this.manager.getSessions().get(
data.getDataPacketExtension().getSessionID());
if (ibbSession == null) {
this.manager.replyItemNotFoundPacket(data);
try {
if (ibbSession == null) {
this.manager.replyItemNotFoundPacket(data);
}
else {
ibbSession.processIQPacket(data);
}
}
}
/**
* Returns the packet filter for In-Band Bytestream data packets.
*
* @return the packet filter for In-Band Bytestream data packets
*/
protected PacketFilter getFilter() {
return this.dataFilter;
catch (NotConnectedException|InterruptedException e) {
return null;
}
return null;
}
}

View file

@ -25,11 +25,11 @@ import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import org.jivesoftware.smack.AbstractConnectionClosedListener;
import org.jivesoftware.smack.ConnectionCreationListener;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.SmackException.NoResponseException;
import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.ConnectionCreationListener;
import org.jivesoftware.smack.XMPPConnectionRegistry;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.XMPPException.XMPPErrorException;
@ -215,7 +215,7 @@ public class InBandBytestreamManager implements BytestreamManager {
// register bytestream data packet listener
this.dataListener = new DataListener(this);
this.connection.addSyncPacketListener(this.dataListener, this.dataListener.getFilter());
connection.registerIQRequestHandler(dataListener);
// register bytestream close packet listener
this.closeListener = new CloseListener(this);
@ -446,7 +446,7 @@ public class InBandBytestreamManager implements BytestreamManager {
protected void replyRejectPacket(IQ request) throws NotConnectedException, InterruptedException {
XMPPError xmppError = new XMPPError(XMPPError.Condition.not_acceptable);
IQ error = IQ.createErrorResponse(request, xmppError);
this.connection.sendPacket(error);
this.connection.sendStanza(error);
}
/**
@ -460,7 +460,7 @@ public class InBandBytestreamManager implements BytestreamManager {
protected void replyResourceConstraintPacket(IQ request) throws NotConnectedException, InterruptedException {
XMPPError xmppError = new XMPPError(XMPPError.Condition.resource_constraint);
IQ error = IQ.createErrorResponse(request, xmppError);
this.connection.sendPacket(error);
this.connection.sendStanza(error);
}
/**
@ -474,7 +474,7 @@ public class InBandBytestreamManager implements BytestreamManager {
protected void replyItemNotFoundPacket(IQ request) throws NotConnectedException, InterruptedException {
XMPPError xmppError = new XMPPError(XMPPError.Condition.item_not_found);
IQ error = IQ.createErrorResponse(request, xmppError);
this.connection.sendPacket(error);
this.connection.sendStanza(error);
}
/**
@ -548,7 +548,7 @@ public class InBandBytestreamManager implements BytestreamManager {
// remove all listeners registered by this manager
connection.unregisterIQRequestHandler(initiationListener);
this.connection.removeSyncPacketListener(this.dataListener);
connection.unregisterIQRequestHandler(dataListener);
connection.unregisterIQRequestHandler(closeListener);
// shutdown threads

View file

@ -81,7 +81,7 @@ public class InBandBytestreamRequest implements BytestreamRequest {
// acknowledge request
IQ resultIQ = IQ.createResultIQ(this.byteStreamRequest);
connection.sendPacket(resultIQ);
connection.sendStanza(resultIQ);
return ibbSession;
}

View file

@ -26,10 +26,10 @@ import java.util.concurrent.TimeUnit;
import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.StanzaListener;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.filter.StanzaFilter;
import org.jivesoftware.smack.filter.StanzaTypeFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Stanza;
@ -175,7 +175,7 @@ public class InBandBytestreamSession implements BytestreamSession {
// acknowledge close request
IQ confirmClose = IQ.createResultIQ(closeRequest);
this.connection.sendPacket(confirmClose);
this.connection.sendStanza(confirmClose);
}
@ -237,7 +237,7 @@ public class InBandBytestreamSession implements BytestreamSession {
private abstract class IBBInputStream extends InputStream {
/* the data packet listener to fill the data queue */
private final PacketListener dataPacketListener;
private final StanzaListener dataPacketListener;
/* queue containing received In-Band Bytestream data packets */
protected final BlockingQueue<DataPacketExtension> dataQueue = new LinkedBlockingQueue<DataPacketExtension>();
@ -266,7 +266,7 @@ public class InBandBytestreamSession implements BytestreamSession {
public IBBInputStream() {
// add data packet listener to connection
this.dataPacketListener = getDataPacketListener();
connection.addSyncPacketListener(this.dataPacketListener, getDataPacketFilter());
connection.addSyncStanzaListener(this.dataPacketListener, getDataPacketFilter());
}
/**
@ -274,14 +274,14 @@ public class InBandBytestreamSession implements BytestreamSession {
*
* @return the data packet listener
*/
protected abstract PacketListener getDataPacketListener();
protected abstract StanzaListener getDataPacketListener();
/**
* Returns the packet filter that accepts In-Band Bytestream data packets.
*
* @return the data packet filter
*/
protected abstract PacketFilter getDataPacketFilter();
protected abstract StanzaFilter getDataPacketFilter();
public synchronized int read() throws IOException {
checkClosed();
@ -433,7 +433,7 @@ public class InBandBytestreamSession implements BytestreamSession {
* Invoked if the session is closed.
*/
private void cleanup() {
connection.removeSyncPacketListener(this.dataPacketListener);
connection.removeSyncStanzaListener(this.dataPacketListener);
}
}
@ -444,8 +444,8 @@ public class InBandBytestreamSession implements BytestreamSession {
*/
private class IQIBBInputStream extends IBBInputStream {
protected PacketListener getDataPacketListener() {
return new PacketListener() {
protected StanzaListener getDataPacketListener() {
return new StanzaListener() {
private long lastSequence = -1;
@ -459,7 +459,7 @@ public class InBandBytestreamSession implements BytestreamSession {
if (data.getSeq() <= this.lastSequence) {
IQ unexpectedRequest = IQ.createErrorResponse((IQ) packet, new XMPPError(
XMPPError.Condition.unexpected_request));
connection.sendPacket(unexpectedRequest);
connection.sendStanza(unexpectedRequest);
return;
}
@ -469,7 +469,7 @@ public class InBandBytestreamSession implements BytestreamSession {
// data is invalid; respond with bad-request error
IQ badRequest = IQ.createErrorResponse((IQ) packet, new XMPPError(
XMPPError.Condition.bad_request));
connection.sendPacket(badRequest);
connection.sendStanza(badRequest);
return;
}
@ -478,7 +478,7 @@ public class InBandBytestreamSession implements BytestreamSession {
// confirm IQ
IQ confirmData = IQ.createResultIQ((IQ) packet);
connection.sendPacket(confirmData);
connection.sendStanza(confirmData);
// set last seen sequence
this.lastSequence = data.getSeq();
@ -491,12 +491,12 @@ public class InBandBytestreamSession implements BytestreamSession {
};
}
protected PacketFilter getDataPacketFilter() {
protected StanzaFilter getDataPacketFilter() {
/*
* filter all IQ stanzas having type 'SET' (represented by Data class), containing a
* data packet extension, matching session ID and recipient
*/
return new AndFilter(new PacketTypeFilter(Data.class), new IBBDataPacketFilter());
return new AndFilter(new StanzaTypeFilter(Data.class), new IBBDataPacketFilter());
}
}
@ -507,8 +507,8 @@ public class InBandBytestreamSession implements BytestreamSession {
*/
private class MessageIBBInputStream extends IBBInputStream {
protected PacketListener getDataPacketListener() {
return new PacketListener() {
protected StanzaListener getDataPacketListener() {
return new StanzaListener() {
public void processPacket(Stanza packet) {
// get data packet extension
@ -538,12 +538,12 @@ public class InBandBytestreamSession implements BytestreamSession {
}
@Override
protected PacketFilter getDataPacketFilter() {
protected StanzaFilter getDataPacketFilter() {
/*
* filter all message stanzas containing a data packet extension, matching session ID
* and recipient
*/
return new AndFilter(new PacketTypeFilter(Message.class), new IBBDataPacketFilter());
return new AndFilter(new StanzaTypeFilter(Message.class), new IBBDataPacketFilter());
}
}
@ -553,7 +553,7 @@ public class InBandBytestreamSession implements BytestreamSession {
* containing an In-Band Bytestream data packet extension whose session ID matches this sessions
* ID.
*/
private class IBBDataPacketFilter implements PacketFilter {
private class IBBDataPacketFilter implements StanzaFilter {
public boolean accept(Stanza packet) {
// sender equals remote peer
@ -811,10 +811,19 @@ public class InBandBytestreamSession implements BytestreamSession {
Message message = new Message(remoteJID);
message.addExtension(data);
connection.sendPacket(message);
connection.sendStanza(message);
}
}
/**
* @param data
* @throws NotConnectedException
* @throws InterruptedException
*/
public void processIQPacket(Data data) throws NotConnectedException, InterruptedException {
inputStream.dataPacketListener.processPacket(data);
}
}

View file

@ -27,6 +27,7 @@ import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smackx.bytestreams.BytestreamListener;
import org.jivesoftware.smackx.bytestreams.ibb.packet.Open;
import org.jivesoftware.smackx.filetransfer.StreamNegotiator;
/**
@ -86,6 +87,8 @@ class InitiationListener extends AbstractIqRequestHandler {
return;
}
StreamNegotiator.signal(ibbRequest.getFrom().toString() + '\t' + ibbRequest.getSessionID(), ibbRequest);
// ignore request if in ignore list
if (this.manager.getIgnoredBytestreamRequests().remove(ibbRequest.getSessionID()))
return;

View file

@ -16,7 +16,7 @@
*/
package org.jivesoftware.smackx.bytestreams.ibb.packet;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.IQ.IQChildElementXmlStringBuilder;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jivesoftware.smack.util.stringencoder.Base64;
@ -27,7 +27,7 @@ import org.jivesoftware.smack.util.stringencoder.Base64;
*
* @author Henning Staib
*/
public class DataPacketExtension implements PacketExtension {
public class DataPacketExtension implements ExtensionElement {
/**
* The element name of the data packet extension.

View file

@ -46,7 +46,7 @@ public class DataPacketProvider {
}
}
public static class PacketExtensionProvider extends org.jivesoftware.smack.provider.PacketExtensionProvider<DataPacketExtension> {
public static class PacketExtensionProvider extends org.jivesoftware.smack.provider.ExtensionElementProvider<DataPacketExtension> {
@Override
public DataPacketExtension parse(XmlPullParser parser,

View file

@ -27,6 +27,7 @@ import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smackx.bytestreams.BytestreamListener;
import org.jivesoftware.smackx.bytestreams.socks5.packet.Bytestream;
import org.jivesoftware.smackx.filetransfer.StreamNegotiator;
/**
* InitiationListener handles all incoming SOCKS5 Bytestream initiation requests. If there are no
@ -77,6 +78,8 @@ final class InitiationListener extends AbstractIqRequestHandler {
private void processRequest(Stanza packet) throws NotConnectedException, InterruptedException {
Bytestream byteStreamRequest = (Bytestream) packet;
StreamNegotiator.signal(byteStreamRequest.getFrom().toString() + '\t' + byteStreamRequest.getSessionID(), byteStreamRequest);
// ignore request if in ignore list
if (this.manager.getIgnoredBytestreamRequests().remove(byteStreamRequest.getSessionID())) {
return;

View file

@ -710,7 +710,7 @@ public final class Socks5BytestreamManager implements BytestreamManager {
protected void replyRejectPacket(IQ packet) throws NotConnectedException, InterruptedException {
XMPPError xmppError = new XMPPError(XMPPError.Condition.not_acceptable);
IQ errorIQ = IQ.createErrorResponse(packet, xmppError);
this.connection.sendPacket(errorIQ);
this.connection.sendStanza(errorIQ);
}
/**

View file

@ -258,7 +258,7 @@ public class Socks5BytestreamRequest implements BytestreamRequest {
// send used-host confirmation
Bytestream response = createUsedHostResponse(selectedHost);
this.manager.getConnection().sendPacket(response);
this.manager.getConnection().sendStanza(response);
return new Socks5BytestreamSession(socket, selectedHost.getJID().equals(
this.bytestreamRequest.getFrom()));
@ -285,7 +285,7 @@ public class Socks5BytestreamRequest implements BytestreamRequest {
String errorMessage = "Could not establish socket with any provided host";
XMPPError error = XMPPError.from(XMPPError.Condition.item_not_found, errorMessage);
IQ errorIQ = IQ.createErrorResponse(this.bytestreamRequest, error);
this.manager.getConnection().sendPacket(errorIQ);
this.manager.getConnection().sendStanza(errorIQ);
throw new XMPPErrorException(errorMessage, error);
}