1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2025-09-09 10:19:41 +02:00

Bump ErrorProne to 2.5.1 and refactor Providers a bit

This also resulted in a refactoring of the Providers and parsing
Exceptions. NumberFormatException and ParseException can now be thrown
directly, the wrapping in a SmackParsingException is down at a higher
layer, i.e. in AbstractProvider.
This commit is contained in:
Florian Schmaus 2021-01-28 22:05:47 +01:00
parent 1df0763f92
commit a7b3303f3e
136 changed files with 574 additions and 551 deletions

View file

@ -39,7 +39,6 @@ import org.jivesoftware.smack.filter.OrFilter;
import org.jivesoftware.smack.filter.StanzaFilter;
import org.jivesoftware.smack.filter.ThreadFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Message.Type;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.util.StringUtils;
@ -110,7 +109,7 @@ public final class ChatManager extends Manager{
@Override
protected boolean acceptSpecific(Message message) {
return normalIncluded ? message.getType() == Type.normal : false;
return normalIncluded ? message.getType() == Message.Type.normal : false;
}
});

View file

@ -1,6 +1,6 @@
/**
*
* Copyright 2003-2007 Jive Software, 2016-2019 Florian Schmaus.
* Copyright 2003-2007 Jive Software, 2016-2021 Florian Schmaus.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -25,7 +25,6 @@ import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
@ -54,7 +53,6 @@ import org.jivesoftware.smack.filter.StanzaTypeFilter;
import org.jivesoftware.smack.filter.ToMatchesFilter;
import org.jivesoftware.smack.iqrequest.AbstractIqRequestHandler;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.IQ.Type;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.PresenceBuilder;
import org.jivesoftware.smack.packet.Stanza;
@ -151,7 +149,17 @@ public final class Roster extends Manager {
private static int defaultNonRosterPresenceMapMaxSize = INITIAL_DEFAULT_NON_ROSTER_PRESENCE_MAP_SIZE;
private RosterStore rosterStore;
private final Map<String, RosterGroup> groups = new ConcurrentHashMap<>();
/**
* The groups of this roster.
* <p>
* Note that we use {@link ConcurrentHashMap} also as static type of this field, since we use the fact that the same
* thread can modify this collection, e.g. remove items, while iterating over it. This is done, for example in
* {@link #deleteEntry(Collection, RosterEntry)}. If we do not denote the static type to ConcurrentHashMap, but
* {@link Map} instead, then error prone would report a ModifyCollectionInEnhancedForLoop but.
* </p>
*/
private final ConcurrentHashMap<String, RosterGroup> groups = new ConcurrentHashMap<>();
/**
* Concurrent hash map from JID to its roster entry.
@ -508,7 +516,7 @@ public final class Roster extends Manager {
return true;
}
protected boolean waitUntilLoaded() throws InterruptedException {
boolean waitUntilLoaded() throws InterruptedException {
long waitTime = connection().getReplyTimeout();
long start = System.currentTimeMillis();
while (!isLoaded()) {
@ -1416,7 +1424,7 @@ public final class Roster extends Manager {
move(user, presenceMap, nonRosterPresenceMap);
deletedEntries.add(user);
for (Entry<String, RosterGroup> e : groups.entrySet()) {
for (Map.Entry<String, RosterGroup> e : groups.entrySet()) {
RosterGroup group = e.getValue();
group.removeEntryLocal(entry);
if (group.getEntryCount() == 0) {
@ -1787,7 +1795,7 @@ public final class Roster extends Manager {
private final class RosterPushListener extends AbstractIqRequestHandler {
private RosterPushListener() {
super(RosterPacket.ELEMENT, RosterPacket.NAMESPACE, Type.set, Mode.sync);
super(RosterPacket.ELEMENT, RosterPacket.NAMESPACE, IQ.Type.set, Mode.sync);
}
@Override

View file

@ -29,7 +29,6 @@ import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException.XMPPErrorException;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.Presence.Type;
import org.jivesoftware.smack.roster.packet.RosterPacket;
import org.jivesoftware.smack.util.EqualsUtil;
@ -221,7 +220,7 @@ public final class RosterEntry extends Manager {
XMPPConnection connection = connection();
Presence unsubscribed = connection.getStanzaFactory().buildPresenceStanza()
.to(item.getJid())
.ofType(Type.unsubscribed)
.ofType(Presence.Type.unsubscribed)
.build();
connection.sendStanza(unsubscribed);
}

View file

@ -24,7 +24,6 @@ import static org.junit.Assert.assertTrue;
import org.jivesoftware.smack.DummyConnection;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Message.Type;
import org.jivesoftware.smack.packet.MessageBuilder;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.packet.StanzaBuilder;
@ -92,7 +91,7 @@ public class ChatConnectionTest {
@Test
public void validateMessageTypeWithDefaults1() {
MessageBuilder incomingChat = createChatPacket("134", true);
incomingChat.ofType(Type.chat);
incomingChat.ofType(Message.Type.chat);
processServerMessage(incomingChat.build());
assertNotNull(listener.getNewChat());
}
@ -100,14 +99,14 @@ public class ChatConnectionTest {
@Test
public void validateMessageTypeWithDefaults2() {
MessageBuilder incomingChat = createChatPacket("134", true);
incomingChat.ofType(Type.normal);
incomingChat.ofType(Message.Type.normal);
processServerMessage(incomingChat.build());
assertNotNull(listener.getNewChat());
}
@Test
public void validateMessageTypeWithDefaults3() {
MessageBuilder incomingChat = createChatPacket("134", true);
incomingChat.ofType(Type.groupchat);
incomingChat.ofType(Message.Type.groupchat);
processServerMessage(incomingChat.build());
assertNull(listener.getNewChat());
}
@ -115,7 +114,7 @@ public class ChatConnectionTest {
@Test
public void validateMessageTypeWithDefaults4() {
MessageBuilder incomingChat = createChatPacket("134", true);
incomingChat.ofType(Type.headline);
incomingChat.ofType(Message.Type.headline);
assertNull(listener.getNewChat());
}
@ -123,7 +122,7 @@ public class ChatConnectionTest {
public void validateMessageTypeWithNoNormal1() {
cm.setNormalIncluded(false);
MessageBuilder incomingChat = createChatPacket("134", true);
incomingChat.ofType(Type.chat);
incomingChat.ofType(Message.Type.chat);
processServerMessage(incomingChat.build());
assertNotNull(listener.getNewChat());
}
@ -132,7 +131,7 @@ public class ChatConnectionTest {
public void validateMessageTypeWithNoNormal2() {
cm.setNormalIncluded(false);
MessageBuilder incomingChat = createChatPacket("134", true);
incomingChat.ofType(Type.normal);
incomingChat.ofType(Message.Type.normal);
processServerMessage(incomingChat.build());
assertNull(listener.getNewChat());
}
@ -318,7 +317,7 @@ public class ChatConnectionTest {
cm.setNormalIncluded(false);
MessageBuilder incomingChat = createChatPacket(null, false);
incomingChat.ofType(Type.normal);
incomingChat.ofType(Message.Type.normal);
processServerMessage(incomingChat.build());
assertNull(listener.getNewChat());

View file

@ -35,7 +35,6 @@ import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.im.InitSmackIm;
import org.jivesoftware.smack.packet.ErrorIQ;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.IQ.Type;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.packet.StanzaError.Condition;
@ -385,7 +384,7 @@ public class RosterTest extends InitSmackIm {
public void testIgnoreInvalidFrom() throws XmppStringprepException {
final BareJid spammerJid = JidCreate.entityBareFrom("spam@example.com");
RosterPacket packet = new RosterPacket();
packet.setType(Type.set);
packet.setType(IQ.Type.set);
packet.setTo(connection.getUser());
packet.setFrom(JidCreate.entityBareFrom("mallory@example.com"));
packet.addRosterItem(new Item(spammerJid, "Cool products!"));
@ -530,7 +529,7 @@ public class RosterTest extends InitSmackIm {
for (RosterEntry entry : roster.getEntries()) {
// prepare the roster push packet
final RosterPacket rosterPush = new RosterPacket();
rosterPush.setType(Type.set);
rosterPush.setType(IQ.Type.set);
rosterPush.setTo(connection.getUser());
// prepare the buddy's item entry which should be removed
@ -555,7 +554,7 @@ public class RosterTest extends InitSmackIm {
roster.reload();
while (true) {
final Stanza sentPacket = connection.getSentPacket();
if (sentPacket instanceof RosterPacket && ((IQ) sentPacket).getType() == Type.get) {
if (sentPacket instanceof RosterPacket && ((IQ) sentPacket).getType() == IQ.Type.get) {
// setup the roster get request
final RosterPacket rosterRequest = (RosterPacket) sentPacket;
assertSame("The <query/> element MUST NOT contain any <item/> child elements!",
@ -565,7 +564,7 @@ public class RosterTest extends InitSmackIm {
// prepare the roster result
final RosterPacket rosterResult = new RosterPacket();
rosterResult.setTo(connection.getUser());
rosterResult.setType(Type.result);
rosterResult.setType(IQ.Type.result);
rosterResult.setStanzaId(rosterRequest.getStanzaId());
// prepare romeo's roster entry
@ -674,7 +673,7 @@ public class RosterTest extends InitSmackIm {
try {
while (true) {
final Stanza packet = connection.getSentPacket();
if (packet instanceof RosterPacket && ((IQ) packet).getType() == Type.set) {
if (packet instanceof RosterPacket && ((IQ) packet).getType() == IQ.Type.set) {
final RosterPacket rosterRequest = (RosterPacket) packet;
// Prepare and process the roster push
@ -683,7 +682,7 @@ public class RosterTest extends InitSmackIm {
if (item.getItemType() != ItemType.remove) {
item.setItemType(ItemType.none);
}
rosterPush.setType(Type.set);
rosterPush.setType(IQ.Type.set);
rosterPush.setTo(connection.getUser());
rosterPush.addRosterItem(item);
connection.processStanza(rosterPush);

View file

@ -30,7 +30,6 @@ import org.jivesoftware.smack.DummyConnection;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.IQ.Type;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.roster.RosterTest.TestRosterListener;
import org.jivesoftware.smack.roster.packet.RosterPacket;
@ -146,7 +145,7 @@ public class RosterVersioningTest {
RosterPacket sentRP = (RosterPacket) sentPacket;
RosterPacket answer = new RosterPacket();
answer.setStanzaId(sentRP.getStanzaId());
answer.setType(Type.result);
answer.setType(IQ.Type.result);
answer.setTo(sentRP.getFrom());
answer.setVersion("newVersion");
@ -188,7 +187,7 @@ public class RosterVersioningTest {
{
RosterPacket rosterPush = new RosterPacket();
rosterPush.setTo(JidCreate.from("rostertest@example.com/home"));
rosterPush.setType(Type.set);
rosterPush.setType(IQ.Type.set);
rosterPush.setVersion("v97");
Item pushedItem = vaglafItem();
@ -214,7 +213,7 @@ public class RosterVersioningTest {
{
RosterPacket rosterPush = new RosterPacket();
rosterPush.setTo(JidCreate.from("rostertest@example.com/home"));
rosterPush.setType(Type.set);
rosterPush.setType(IQ.Type.set);
rosterPush.setVersion("v98");
Item item = new Item(JidCreate.entityBareFrom("vaglaf@example.com"), "vaglaf the only");

View file

@ -26,7 +26,6 @@ import org.jivesoftware.smack.DummyConnection;
import org.jivesoftware.smack.SmackException.FeatureNotSupportedException;
import org.jivesoftware.smack.im.InitSmackIm;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.IQ.Type;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.Stanza;
import org.jivesoftware.smack.roster.RosterTest.TestRosterListener;
@ -161,7 +160,7 @@ public class SubscriptionPreApprovalTest extends InitSmackIm {
try {
while (true) {
final Stanza packet = connection.getSentPacket();
if (packet instanceof RosterPacket && ((IQ) packet).getType() == Type.set) {
if (packet instanceof RosterPacket && ((IQ) packet).getType() == IQ.Type.set) {
final RosterPacket rosterRequest = (RosterPacket) packet;
// Prepare and process the roster push
@ -170,7 +169,7 @@ public class SubscriptionPreApprovalTest extends InitSmackIm {
if (item.getItemType() != ItemType.remove) {
item.setItemType(ItemType.none);
}
rosterPush.setType(Type.set);
rosterPush.setType(IQ.Type.set);
rosterPush.setTo(connection.getUser());
rosterPush.addRosterItem(item);
connection.processStanza(rosterPush);