diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 64db553fe..2054dfa53 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -107,32 +107,29 @@ public class XmppConnection implements Runnable { private static final int PACKET_IQ = 0; private static final int PACKET_MESSAGE = 1; private static final int PACKET_PRESENCE = 2; - public final OnIqPacketReceived registrationResponseListener = new OnIqPacketReceived() { - @Override - public void onIqPacketReceived(Account account, IqPacket packet) { - if (packet.getType() == IqPacket.TYPE.RESULT) { - account.setOption(Account.OPTION_REGISTER, false); - Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": successfully registered new account on server"); - throw new StateChangingError(Account.State.REGISTRATION_SUCCESSFUL); - } else { - final List PASSWORD_TOO_WEAK_MSGS = Arrays.asList( - "The password is too weak", - "Please use a longer password."); - Element error = packet.findChild("error"); - Account.State state = Account.State.REGISTRATION_FAILED; - if (error != null) { - if (error.hasChild("conflict")) { - state = Account.State.REGISTRATION_CONFLICT; - } else if (error.hasChild("resource-constraint") - && "wait".equals(error.getAttribute("type"))) { - state = Account.State.REGISTRATION_PLEASE_WAIT; - } else if (error.hasChild("not-acceptable") - && PASSWORD_TOO_WEAK_MSGS.contains(error.findChildContent("text"))) { - state = Account.State.REGISTRATION_PASSWORD_TOO_WEAK; - } + public final OnIqPacketReceived registrationResponseListener = (account, packet) -> { + if (packet.getType() == IqPacket.TYPE.RESULT) { + account.setOption(Account.OPTION_REGISTER, false); + Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": successfully registered new account on server"); + throw new StateChangingError(Account.State.REGISTRATION_SUCCESSFUL); + } else { + final List PASSWORD_TOO_WEAK_MSGS = Arrays.asList( + "The password is too weak", + "Please use a longer password."); + Element error = packet.findChild("error"); + Account.State state = Account.State.REGISTRATION_FAILED; + if (error != null) { + if (error.hasChild("conflict")) { + state = Account.State.REGISTRATION_CONFLICT; + } else if (error.hasChild("resource-constraint") + && "wait".equals(error.getAttribute("type"))) { + state = Account.State.REGISTRATION_PLEASE_WAIT; + } else if (error.hasChild("not-acceptable") + && PASSWORD_TOO_WEAK_MSGS.contains(error.findChildContent("text"))) { + state = Account.State.REGISTRATION_PASSWORD_TOO_WEAK; } - throw new StateChangingError(state); } + throw new StateChangingError(state); } }; protected final Account account; @@ -160,10 +157,10 @@ public class XmppConnection implements Runnable { private long lastSessionStarted = 0; private long lastDiscoStarted = 0; private boolean isMamPreferenceAlways = false; - private AtomicInteger mPendingServiceDiscoveries = new AtomicInteger(0); - private AtomicBoolean mWaitForDisco = new AtomicBoolean(true); - private AtomicBoolean mWaitingForSmCatchup = new AtomicBoolean(false); - private AtomicInteger mSmCatchupMessageCounter = new AtomicInteger(0); + private final AtomicInteger mPendingServiceDiscoveries = new AtomicInteger(0); + private final AtomicBoolean mWaitForDisco = new AtomicBoolean(true); + private final AtomicBoolean mWaitingForSmCatchup = new AtomicBoolean(false); + private final AtomicInteger mSmCatchupMessageCounter = new AtomicInteger(0); private boolean mInteractive = false; private int attempt = 0; private OnPresencePacketReceived presenceListener = null; @@ -772,7 +769,7 @@ public class XmppConnection implements Runnable { } } - private void processMessage(final Tag currentTag) throws XmlPullParserException, IOException { + private void processMessage(final Tag currentTag) throws IOException { final MessagePacket packet = (MessagePacket) processPacket(currentTag, PACKET_MESSAGE); if (!packet.valid()) { Log.e(Config.LOGTAG, "encountered invalid message from='" + packet.getFrom() + "' to='" + packet.getTo() + "'"); @@ -781,7 +778,7 @@ public class XmppConnection implements Runnable { this.messageListener.onMessagePacketReceived(account, packet); } - private void processPresence(final Tag currentTag) throws XmlPullParserException, IOException { + private void processPresence(final Tag currentTag) throws IOException { PresencePacket packet = (PresencePacket) processPacket(currentTag, PACKET_PRESENCE); if (!packet.valid()) { Log.e(Config.LOGTAG, "encountered invalid presence from='" + packet.getFrom() + "' to='" + packet.getTo() + "'"); @@ -835,7 +832,7 @@ public class XmppConnection implements Runnable { return sslSocket; } - private void processStreamFeatures(final Tag currentTag) throws XmlPullParserException, IOException { + private void processStreamFeatures(final Tag currentTag) throws IOException { this.streamFeatures = tagReader.readElement(currentTag); final boolean isSecure = features.encryptionEnabled || Config.ALLOW_NON_TLS_CONNECTIONS || account.isOnion(); final boolean needsBinding = !isBound && !account.isOptionSet(Account.OPTION_REGISTER); @@ -1326,7 +1323,7 @@ public class XmppConnection implements Runnable { iq.query("http://jabber.org/protocol/disco#items"); this.sendIqPacket(iq, (account, packet) -> { if (packet.getType() == IqPacket.TYPE.RESULT) { - HashSet items = new HashSet(); + final HashSet items = new HashSet<>(); final List elements = packet.query().getChildren(); for (final Element element : elements) { if (element.getName().equals("item")) { @@ -1354,23 +1351,19 @@ public class XmppConnection implements Runnable { private void sendEnableCarbons() { final IqPacket iq = new IqPacket(IqPacket.TYPE.SET); iq.addChild("enable", "urn:xmpp:carbons:2"); - this.sendIqPacket(iq, new OnIqPacketReceived() { - - @Override - public void onIqPacketReceived(final Account account, final IqPacket packet) { - if (!packet.hasChild("error")) { - Log.d(Config.LOGTAG, account.getJid().asBareJid() - + ": successfully enabled carbons"); - features.carbonsEnabled = true; - } else { - Log.d(Config.LOGTAG, account.getJid().asBareJid() - + ": error enableing carbons " + packet.toString()); - } + this.sendIqPacket(iq, (account, packet) -> { + if (!packet.hasChild("error")) { + Log.d(Config.LOGTAG, account.getJid().asBareJid() + + ": successfully enabled carbons"); + features.carbonsEnabled = true; + } else { + Log.d(Config.LOGTAG, account.getJid().asBareJid() + + ": error enableing carbons " + packet.toString()); } }); } - private void processStreamError(final Tag currentTag) throws XmlPullParserException, IOException { + private void processStreamError(final Tag currentTag) throws IOException { final Element streamError = tagReader.readElement(currentTag); if (streamError == null) { return; @@ -1623,8 +1616,8 @@ public class XmppConnection implements Runnable { } public List getMucServersWithholdAccount() { - List servers = getMucServers(); - servers.remove(account.getDomain()); + final List servers = getMucServers(); + servers.remove(account.getDomain().toEscapedString()); return servers; } @@ -1795,7 +1788,7 @@ public class XmppConnection implements Runnable { } } - private class StateChangingError extends Error { + private static class StateChangingError extends Error { private final Account.State state; public StateChangingError(Account.State state) { @@ -1803,7 +1796,7 @@ public class XmppConnection implements Runnable { } } - private class StateChangingException extends IOException { + private static class StateChangingException extends IOException { private final Account.State state; public StateChangingException(Account.State state) {