1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2025-12-14 06: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

@ -29,7 +29,7 @@ import java.util.logging.Logger;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.StanzaListener;
import org.jivesoftware.smack.PresenceListener;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.SmackException.NoResponseException;
@ -45,9 +45,9 @@ import org.jivesoftware.smack.filter.FromMatchesFilter;
import org.jivesoftware.smack.filter.MessageTypeFilter;
import org.jivesoftware.smack.filter.MessageWithSubjectFilter;
import org.jivesoftware.smack.filter.NotFilter;
import org.jivesoftware.smack.filter.PacketExtensionFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.filter.StanzaFilter;
import org.jivesoftware.smack.filter.StanzaExtensionFilter;
import org.jivesoftware.smack.filter.StanzaTypeFilter;
import org.jivesoftware.smack.filter.ToFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Message;
@ -112,18 +112,18 @@ public class MultiUserChat {
* the groupchat participants, i.e. it filters only the bare JID of the from
* attribute against the JID of the MUC.
*/
private final PacketFilter fromRoomFilter;
private final StanzaFilter fromRoomFilter;
/**
* Same as {@link #fromRoomFilter} together with {@link MessageTypeFilter#GROUPCHAT}.
*/
private final PacketFilter fromRoomGroupchatFilter;
private final StanzaFilter fromRoomGroupchatFilter;
private final PacketListener presenceInterceptor;
private final PacketListener messageListener;
private final PacketListener presenceListener;
private final PacketListener subjectListener;
private final PacketListener declinesListener;
private final StanzaListener presenceInterceptor;
private final StanzaListener messageListener;
private final StanzaListener presenceListener;
private final StanzaListener subjectListener;
private final StanzaListener declinesListener;
private String subject;
private Resourcepart nickname;
@ -138,7 +138,7 @@ public class MultiUserChat {
fromRoomFilter = FromMatchesFilter.create(room);
fromRoomGroupchatFilter = new AndFilter(fromRoomFilter, MessageTypeFilter.GROUPCHAT);
messageListener = new PacketListener() {
messageListener = new StanzaListener() {
@Override
public void processPacket(Stanza packet) throws NotConnectedException {
Message message = (Message) packet;
@ -149,7 +149,7 @@ public class MultiUserChat {
};
// Create a listener for subject updates.
subjectListener = new PacketListener() {
subjectListener = new StanzaListener() {
public void processPacket(Stanza packet) {
Message msg = (Message) packet;
FullJid from = msg.getFrom().asFullJidIfPossible();
@ -167,7 +167,7 @@ public class MultiUserChat {
};
// Create a listener for all presence updates.
presenceListener = new PacketListener() {
presenceListener = new StanzaListener() {
public void processPacket(Stanza packet) {
Presence presence = (Presence) packet;
final FullJid from = presence.getFrom().asFullJidIfPossible();
@ -210,7 +210,7 @@ public class MultiUserChat {
case unavailable:
occupantsMap.remove(from);
MUCUser mucUser = MUCUser.from(packet);
if (mucUser != null && mucUser.getStatus() != null) {
if (mucUser != null && mucUser.hasStatus()) {
// Fire events according to the received presence code
checkPresenceCode(
mucUser.getStatus(),
@ -237,7 +237,7 @@ public class MultiUserChat {
// Listens for all messages that include a MUCUser extension and fire the invitation
// rejection listeners if the message includes an invitation rejection.
declinesListener = new PacketListener() {
declinesListener = new StanzaListener() {
public void processPacket(Stanza packet) {
// Get the MUC User extension
MUCUser mucUser = MUCUser.from(packet);
@ -250,7 +250,7 @@ public class MultiUserChat {
}
};
presenceInterceptor = new PacketListener() {
presenceInterceptor = new StanzaListener() {
@Override
public void processPacket(Stanza packet) {
Presence presence = (Presence) packet;
@ -306,18 +306,18 @@ public class MultiUserChat {
joinPresence.addExtension(mucInitialPresence);
// Wait for a presence packet back from the server.
PacketFilter responseFilter = new AndFilter(FromMatchesFilter.createFull(jid), new PacketTypeFilter(Presence.class));
StanzaFilter responseFilter = new AndFilter(FromMatchesFilter.createFull(jid), new StanzaTypeFilter(Presence.class));
// Setup the messageListeners and presenceListeners *before* the join presence is send.
connection.addSyncPacketListener(messageListener, fromRoomGroupchatFilter);
connection.addSyncPacketListener(presenceListener, new AndFilter(fromRoomFilter,
PacketTypeFilter.PRESENCE));
connection.addSyncPacketListener(subjectListener, new AndFilter(fromRoomFilter,
connection.addSyncStanzaListener(messageListener, fromRoomGroupchatFilter);
connection.addSyncStanzaListener(presenceListener, new AndFilter(fromRoomFilter,
StanzaTypeFilter.PRESENCE));
connection.addSyncStanzaListener(subjectListener, new AndFilter(fromRoomFilter,
MessageWithSubjectFilter.INSTANCE));
connection.addSyncPacketListener(declinesListener, new AndFilter(new PacketExtensionFilter(MUCUser.ELEMENT,
connection.addSyncStanzaListener(declinesListener, new AndFilter(new StanzaExtensionFilter(MUCUser.ELEMENT,
MUCUser.NAMESPACE), new NotFilter(MessageTypeFilter.ERROR)));
connection.addPacketInterceptor(presenceInterceptor, new AndFilter(new ToFilter(room),
PacketTypeFilter.PRESENCE));
StanzaTypeFilter.PRESENCE));
messageCollector = connection.createPacketCollector(fromRoomGroupchatFilter);
Presence presence;
@ -539,7 +539,7 @@ public class MultiUserChat {
// field is in the form "roomName@service/nickname"
Presence leavePresence = new Presence(Presence.Type.unavailable);
leavePresence.setTo(JidCreate.fullFrom(room, nickname));
connection.sendPacket(leavePresence);
connection.sendStanza(leavePresence);
// Reset occupant information.
occupantsMap.clear();
nickname = null;
@ -717,7 +717,7 @@ public class MultiUserChat {
// Add the MUCUser packet that includes the invitation to the message
message.addExtension(mucUser);
connection.sendPacket(message);
connection.sendStanza(message);
}
/**
@ -782,7 +782,7 @@ public class MultiUserChat {
}
/**
* Adds a new {@link PacketListener} that will be invoked every time a new presence
* Adds a new {@link StanzaListener} that will be invoked every time a new presence
* is going to be sent by this MultiUserChat to the server. Packet interceptors may
* add new extensions to the presence that is going to be sent to the MUC service.
*
@ -793,13 +793,13 @@ public class MultiUserChat {
}
/**
* Removes a {@link PacketListener} that was being invoked every time a new presence
* Removes a {@link StanzaListener} that was being invoked every time a new presence
* was being sent by this MultiUserChat to the server. Packet interceptors may
* add new extensions to the presence that is going to be sent to the MUC service.
*
* @param presenceInterceptor the packet interceptor to remove.
*/
public void removePresenceInterceptor(PacketListener presenceInterceptor) {
public void removePresenceInterceptor(StanzaListener presenceInterceptor) {
presenceInterceptors.remove(presenceInterceptor);
}
@ -886,10 +886,10 @@ public class MultiUserChat {
joinPresence.setTo(jid);
// Wait for a presence packet back from the server.
PacketFilter responseFilter =
StanzaFilter responseFilter =
new AndFilter(
FromMatchesFilter.createFull(jid),
new PacketTypeFilter(Presence.class));
new StanzaTypeFilter(Presence.class));
PacketCollector response = connection.createPacketCollectorAndSend(responseFilter, joinPresence);
// Wait up to a certain number of seconds for a reply. If there is a negative reply, an
// exception will be thrown
@ -924,7 +924,7 @@ public class MultiUserChat {
joinPresence.setTo(JidCreate.fullFrom(room, nickname));
// Send join packet.
connection.sendPacket(joinPresence);
connection.sendStanza(joinPresence);
}
/**
@ -973,7 +973,7 @@ public class MultiUserChat {
form.addField(requestVoiceField);
Message message = new Message(room);
message.addExtension(form);
connection.sendPacket(message);
connection.sendStanza(message);
}
/**
@ -1642,7 +1642,7 @@ public class MultiUserChat {
public void sendMessage(String text) throws XMPPException, NotConnectedException, InterruptedException {
Message message = createMessage();
message.setBody(text);
connection.sendPacket(message);
connection.sendStanza(message);
}
/**
@ -1680,7 +1680,7 @@ public class MultiUserChat {
public void sendMessage(Message message) throws XMPPException, NotConnectedException, InterruptedException {
message.setTo(room);
message.setType(Message.Type.groupchat);
connection.sendPacket(message);
connection.sendStanza(message);
}
/**
@ -1778,7 +1778,7 @@ public class MultiUserChat {
Message message = createMessage();
message.setSubject(subject);
// Wait for an error or confirmation message back from the server.
PacketFilter responseFilter = new AndFilter(fromRoomGroupchatFilter, new PacketFilter() {
StanzaFilter responseFilter = new AndFilter(fromRoomGroupchatFilter, new StanzaFilter() {
@Override
public boolean accept(Stanza packet) {
Message msg = (Message) packet;
@ -1795,9 +1795,9 @@ public class MultiUserChat {
* connection.
*/
private void removeConnectionCallbacks() {
connection.removeSyncPacketListener(messageListener);
connection.removeSyncPacketListener(presenceListener);
connection.removeSyncPacketListener(declinesListener);
connection.removeSyncStanzaListener(messageListener);
connection.removeSyncStanzaListener(presenceListener);
connection.removeSyncStanzaListener(declinesListener);
connection.removePacketInterceptor(presenceInterceptor);
if (messageCollector != null) {
messageCollector.cancel();

View file

@ -30,7 +30,7 @@ import java.util.logging.Logger;
import org.jivesoftware.smack.ConnectionCreationListener;
import org.jivesoftware.smack.Manager;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.StanzaListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPConnectionRegistry;
import org.jivesoftware.smack.SmackException.NoResponseException;
@ -38,10 +38,10 @@ import org.jivesoftware.smack.SmackException.NotConnectedException;
import org.jivesoftware.smack.XMPPException.XMPPErrorException;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.MessageTypeFilter;
import org.jivesoftware.smack.filter.PacketExtensionFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.StanzaExtensionFilter;
import org.jivesoftware.smack.filter.StanzaFilter;
import org.jivesoftware.smack.filter.NotFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.filter.StanzaTypeFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smackx.disco.AbstractNodeInformationProvider;
@ -107,7 +107,7 @@ public class MultiUserChatManager extends Manager {
return multiUserChatManager;
}
private static final PacketFilter INVITATION_FILTER = new AndFilter(PacketTypeFilter.MESSAGE, new PacketExtensionFilter(new MUCUser()),
private static final StanzaFilter INVITATION_FILTER = new AndFilter(StanzaTypeFilter.MESSAGE, new StanzaExtensionFilter(new MUCUser()),
new NotFilter(MessageTypeFilter.ERROR));
private final Set<InvitationListener> invitationsListeners = new CopyOnWriteArraySet<InvitationListener>();
@ -124,7 +124,7 @@ public class MultiUserChatManager extends Manager {
super(connection);
// Listens for all messages that include a MUCUser extension and fire the invitation
// listeners if the message includes an invitation.
PacketListener invitationPacketListener = new PacketListener() {
StanzaListener invitationPacketListener = new StanzaListener() {
public void processPacket(Stanza packet) {
final Message message = (Message) packet;
// Get the MUCUser extension
@ -145,7 +145,7 @@ public class MultiUserChatManager extends Manager {
}
}
};
connection.addAsyncPacketListener(invitationPacketListener, INVITATION_FILTER);
connection.addAsyncStanzaListener(invitationPacketListener, INVITATION_FILTER);
}
/**
@ -307,7 +307,7 @@ public class MultiUserChatManager extends Manager {
// Add the MUCUser packet that includes the rejection
message.addExtension(mucUser);
connection().sendPacket(message);
connection().sendStanza(message);
}
/**

View file

@ -20,8 +20,8 @@ package org.jivesoftware.smackx.muc.packet;
import java.io.IOException;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smack.provider.PacketExtensionProvider;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@ -36,15 +36,15 @@ import org.xmlpull.v1.XmlPullParserException;
* Message message = new Message("user@chat.example.com");
* message.setBody("Join me for a group chat!");
* message.addExtension(new GroupChatInvitation("room@chat.example.com"););
* con.sendPacket(message);
* con.sendStanza(message);
* </pre>
*
* To listen for group chat invitations, use a PacketExtensionFilter for the
* To listen for group chat invitations, use a StanzaExtensionFilter for the
* <tt>x</tt> element name and <tt>jabber:x:conference</tt> namespace, as in the
* following code example:
*
* <pre>
* PacketFilter filter = new PacketExtensionFilter("x", "jabber:x:conference");
* PacketFilter filter = new StanzaExtensionFilter("x", "jabber:x:conference");
* // Create a packet collector or packet listeners using the filter...
* </pre>
*
@ -55,7 +55,7 @@ import org.xmlpull.v1.XmlPullParserException;
*
* @author Matt Tucker
*/
public class GroupChatInvitation implements PacketExtension {
public class GroupChatInvitation implements ExtensionElement {
/**
* Element name of the packet extension.
@ -128,7 +128,7 @@ public class GroupChatInvitation implements PacketExtension {
return packet.getExtension(ELEMENT, NAMESPACE);
}
public static class Provider extends PacketExtensionProvider<GroupChatInvitation> {
public static class Provider extends ExtensionElementProvider<GroupChatInvitation> {
@Override
public GroupChatInvitation parse(XmlPullParser parser,

View file

@ -19,7 +19,7 @@ package org.jivesoftware.smackx.muc.packet;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jxmpp.util.XmppDateTime;
@ -37,7 +37,7 @@ import java.util.Date;
* @author Gaston Dombiak
* @see MUCInitialPresence#setHistory(MUCInitialPresence.History)
*/
public class MUCInitialPresence implements PacketExtension {
public class MUCInitialPresence implements ExtensionElement {
public static final String ELEMENT = "x";
public static final String NAMESPACE = "http://jabber.org/protocol/muc";

View file

@ -25,7 +25,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.util.XmlStringBuilder;
/**
@ -34,7 +34,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder;
*
* @author Gaston Dombiak
*/
public class MUCUser implements PacketExtension {
public class MUCUser implements ExtensionElement {
public static final String ELEMENT = "x";
public static final String NAMESPACE = MUCInitialPresence.NAMESPACE + "#user";
@ -118,6 +118,19 @@ public class MUCUser implements PacketExtension {
return statusCodes;
}
/**
* Returns true if this MUCUser instance has also {@link Status} information.
* <p>
* If <code>true</code> is returned, then {@link #getStatus()} will return a non-empty set.
* </p>
*
* @return true if this MUCUser has status information.
* @since 4.1
*/
public boolean hasStatus() {
return !statusCodes.isEmpty();
}
/**
* Returns the notification that the room has been destroyed. After a room has been destroyed,
* the room occupants will receive a Presence packet of type 'unavailable' with the reason for

View file

@ -49,7 +49,7 @@ public class MUCOwnerProvider extends IQProvider<MUCOwner> {
}
// Otherwise, it must be a packet extension.
else {
PacketParserUtils.addPacketExtension(mucOwner, parser);
PacketParserUtils.addExtensionElement(mucOwner, parser);
}
}
else if (eventType == XmlPullParser.END_TAG) {

View file

@ -20,7 +20,7 @@ package org.jivesoftware.smackx.muc.provider;
import java.io.IOException;
import org.jivesoftware.smack.provider.PacketExtensionProvider;
import org.jivesoftware.smack.provider.ExtensionElementProvider;
import org.jivesoftware.smackx.muc.packet.MUCUser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@ -31,7 +31,7 @@ import org.xmlpull.v1.XmlPullParserException;
*
* @author Gaston Dombiak
*/
public class MUCUserProvider extends PacketExtensionProvider<MUCUser> {
public class MUCUserProvider extends ExtensionElementProvider<MUCUser> {
/**
* Parses a MUCUser packet (extension sub-packet).