From 554e79d4da351cdc05ca07ee3c71a795592cc582 Mon Sep 17 00:00:00 2001 From: ivanDanil Date: Fri, 22 Jul 2016 12:26:51 +0700 Subject: [PATCH] Fix NPE pada isConnected setelah disconnect secara manual --- .../service/test/AndroidServiceTest.java | 30 +++++++++++++++++++ .../android/service/MqttAndroidClient.java | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/org.eclipse.paho.android.service/org.eclipse.paho.android.service.test/src/org/eclipse/paho/android/service/test/AndroidServiceTest.java b/org.eclipse.paho.android.service/org.eclipse.paho.android.service.test/src/org/eclipse/paho/android/service/test/AndroidServiceTest.java index cd3f1a48..9f484990 100644 --- a/org.eclipse.paho.android.service/org.eclipse.paho.android.service.test/src/org/eclipse/paho/android/service/test/AndroidServiceTest.java +++ b/org.eclipse.paho.android.service/org.eclipse.paho.android.service.test/src/org/eclipse/paho/android/service/test/AndroidServiceTest.java @@ -90,6 +90,36 @@ public void testConnect() throws Exception { } } + + /** + * Tests isConnected() returns false after a disconnect() call. + * @throws Exception + */ + public void testIsConnected() throws Exception { + IMqttAsyncClient mqttClient = null; + try { + mqttClient = new MqttAndroidClient(mContext, mqttServerURI, "testConnect"); + IMqttToken connectToken = null; + IMqttToken disconnectToken = null; + + assertFalse(mqttClient.isConnected()); + + connectToken = mqttClient.connect(null, null); + connectToken.waitForCompletion(waitForCompletionTime); + + assertTrue(mqttClient.isConnected()); + + disconnectToken = mqttClient.disconnect(null, null); + disconnectToken.waitForCompletion(waitForCompletionTime); + + assertFalse(mqttClient.isConnected()); + } + finally { + if (mqttClient != null) { + mqttClient.close(); + } + } + } /** * Test connection using a remote host name for the local host. diff --git a/org.eclipse.paho.android.service/org.eclipse.paho.android.service/src/org/eclipse/paho/android/service/MqttAndroidClient.java b/org.eclipse.paho.android.service/org.eclipse.paho.android.service/src/org/eclipse/paho/android/service/MqttAndroidClient.java index 596b42dd..1845a9aa 100644 --- a/org.eclipse.paho.android.service/org.eclipse.paho.android.service/src/org/eclipse/paho/android/service/MqttAndroidClient.java +++ b/org.eclipse.paho.android.service/org.eclipse.paho.android.service/src/org/eclipse/paho/android/service/MqttAndroidClient.java @@ -247,7 +247,7 @@ public MqttAndroidClient(Context context, String serverURI, */ @Override public boolean isConnected() { - if (mqttService != null) + if (mqttService != null && clientHandle != null) return mqttService.isConnected(clientHandle); else return false;