minor code clean up in XmppConnection class

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 91 ++--
1 file changed, 42 insertions(+), 49 deletions(-)

Detailed changes

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<String> 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<String> 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<Jid> items = new HashSet<Jid>();
+                final HashSet<Jid> items = new HashSet<>();
                 final List<Element> 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<String> getMucServersWithholdAccount() {
-        List<String> servers = getMucServers();
-        servers.remove(account.getDomain());
+        final List<String> 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) {