[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [paho-dev] NPE thrown by MqttAndroidClient without any object set to null

Ian,

I tried different examples found in different forums, but the results are the same.

Surely there is the step I'm missing, as the paho example in github perfectly works (I cloned the project on the same machine, compiled it and installed on the same smartphone).

In any case, whatever the reason for the exception in my code, the NPE should be added in the documentation in the list of exceptions possibly thrown by MqttAndroidClient.publish(...) and a possible reason 

Sergio


Il 19 lug 2017 3:43 PM, Ian Craggs <icraggs@xxxxxxxxxxxxxxxxxxxxxxx> ha scritto:

Sergio,


James Sutton, who looks after the Android service, has been away helping IBM at the Wimbledon tennis tournament for a few weeks.  I'll ask him to look when he gets back.  I'm not familiar with the Android client, but are there examples you can look at?


Ian


On 19/07/2017 14:34, Sergio Torassa wrote:

I didn't see any reply to this thread.

Have anyone had the chance to give a look at what could be the reasons for the NPE?




Da: paho-dev-bounces@xxxxxxxxxxx <paho-dev-bounces@xxxxxxxxxxx> per conto di Sergio Torassa <sertorassa@xxxxxxxxxxx>
Inviato: mercoledà 24 maggio 2017 17:26
A: General development discussions for paho project
Oggetto: Re: [paho-dev] NPE thrown by MqttAndroidClient without any object set to null
 

Can anyone please help me understanding what's the issue?

Just to help the reader I include my complete code and the code where there is the actual call of a method on a null object in MqttAndroidClient.java (outlined in yellow)

Why mqttService is null?



------  MY CODE  --------


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import org.eclipse.paho.android.service.MqttAndroidClient;
import org.eclipse.paho.client.mqttv3.IMqttActionListener;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String topic        = "MQTT Examples";
        String content      = "Message from MqttPublishSample";
        int qos             = 2;
        String broker       = "tcp://iot.eclipse.org:1883";
        String clientId     = "JavaSample";
        MemoryPersistence persistence = new MemoryPersistence();

        try {
            MqttAndroidClient sampleClient = new MqttAndroidClient(getApplicationContext(),broker,clientId);

            MqttConnectOptions connOpts = new MqttConnectOptions();
            connOpts.setCleanSession(true);

            sampleClient.setCallback(new MqttCallback() {...} );

            sampleClient.connect(connOpts);

            MqttMessage message = new MqttMessage(content.getBytes());
            message.setQos(qos);

            sampleClient.publish(topic, message);

            System.exit(0);

        } catch(MqttException me) {

            me.printStackTrace();

        } catch (Exception e) {

            e.printStackTrace();
            throw new RuntimeException(e);

        }
    }
}

-------   MqttAndroidClient.java    ---------

@Override
public IMqttDeliveryToken publish(String topic, MqttMessage message,
      Object userContext, IMqttActionListener callback)
      throws MqttException, MqttPersistenceException {
   MqttDeliveryTokenAndroid token = new MqttDeliveryTokenAndroid(
         this, userContext, callback, message);
   String activityToken = storeToken(token);
   IMqttDeliveryToken internalToken = mqttService.publish(clientHandle,
         topic, message, null, activityToken);
   token.setDelegate(internalToken);
   return token;
}




Da: paho-dev-bounces@xxxxxxxxxxx <paho-dev-bounces@xxxxxxxxxxx> per conto di Sergio Torassa <sertorassa@xxxxxxxxxxx>
Inviato: mercoledà 17 maggio 2017 15.43
A: paho-dev@xxxxxxxxxxx
Oggetto: Re: [paho-dev] NPE thrown by MqttAndroidClient without any boject set to null
 

Does anyone know  what could be the reason of the NPE?


I also made another try using the same identical code but replacing MqttAndroidClient with MqttClient and everything works fine.

Debugging the code I found that the mqttService is null in MqttAndroidClient when the mqttService.publish(..) method is called.




Da: Sergio Torassa <sertorassa@xxxxxxxxxxx>
Inviato: sabato 6 maggio 2017 16.19
A: paho-dev@xxxxxxxxxxx
Oggetto: Re: [paho-dev] NPE thrown by MqttAndroidClient without any boject set to null
 

I tried creating a brand new project in AndroidStudio and the result is the same: NPE in the publish method


In the gradle.build config the versions of MQTT are:


serviceVersion = '1.1.1'
clientVersion = '1.1.0'


This is the excerpt for the connection, which works without catching any Exception


MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
mqttConnectOptions.setCleanSession(false);

try {

    mqttAndroidClient.connect(mqttConnectOptions, null);

} catch (MqttException ex){
    ex.printStackTrace();
}





Da: Sergio Torassa <sertorassa@xxxxxxxxxxx>
Inviato: martedà 2 maggio 2017 11.28
A: paho-dev@xxxxxxxxxxx
Oggetto: Re: [paho-dev] NPE thrown by MqttAndroidClient without any boject set to null
 

Hi James,


this is the result in logcat of e.printStackTrace()


java.lang.NullPointerException
     at org.eclipse.paho.android.service.MqttAndroidClient.publish(MqttAndroidClient.java:812)
     at org.eclipse.paho.android.service.MqttAndroidClient.publish(MqttAndroidClient.java:668)
     at com.storassa.android.giulia.MainActivity.onCreate(MainActivity.java:54)
     at android.app.Activity.performCreate(Activity.java:5275)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2166)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2252)
     at android.app.ActivityThread.access$800(ActivityThread.java:139)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:136)
     at android.app.ActivityThread.main(ActivityThread.java:5103)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:515)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
     at dalvik.system.NativeStart.main(Native Method)


Just to add a piece of info, I connected the client with a simple call to MqttAndroidClient.connect().


Da: paho-dev-bounces@xxxxxxxxxxx <paho-dev-bounces@xxxxxxxxxxx> per conto di James Sutton1 <james.sutton@xxxxxxxxxx>
Inviato: martedà 2 maggio 2017 10.20
A: paho-dev@xxxxxxxxxxx
Oggetto: Re: [paho-dev] NPE thrown by MqttAndroidClient without any boject set to null
 
Hi Sergio, 
 
Could you provide the stack trace please, It might help with identifying the cause.
 
Kind regards,
 
James Sutton
Software Engineer - IoT Foundation - MQTT Open Source Projects
Ops Team - Wimbledon Project

Phone: 01962 815438 | Extension: x372454
E-mail: james.sutton@xxxxxxxxxx
Personal Website: www.jsutton.co.uk
Find me on:     
IBM

Hursley Park
Hursley, SO212JN
United Kingdom
 
IBM United Kingdom Limited Registered in England and Wales with number 741598 Registered office: PO Box 41, North Harbour, Portsmouth, Hants. PO6 3AU
 
 
----- Original message -----
From: Sergio Torassa <sertorassa@xxxxxxxxxxx>
Sent by: paho-dev-bounces@xxxxxxxxxxx
To: General development discussions for paho project <paho-dev@xxxxxxxxxxx>, "ingeniero@xxxxxxxxxxxxxxxxxxx" <ingeniero@xxxxxxxxxxxxxxxxxxx>
Cc:
Subject: Re: [paho-dev] NPE thrown by MqttAndroidClient without any boject set to null
Date: Mon, May 1, 2017 7:40 PM
 

I forgot to mention that also topic is not null. It is a string

Il 01/mag/2017 20:01, Manuel DomÃnguez Dorado <manolodd@xxxxxxxxx> ha scritto:
>
> What about publishTopic?
>
> Perhaps this is null.
>
> 2017-05-01 19:26 GMT+02:00 Sergio Torassa <sertorassa@xxxxxxxxxxx>:
>>
>> Hello all
>>
>>
>> I'm trying to develop a very simple Android app based upon MQTT.
>>
>> Just from the beginning I started with an NPE thrown by MqttAndroidClient.publish(String topic, MqttMessage message) method.
>>
>>
>> This is the excerpt of the code where the NPE is thrown:
>>
>>
>> try {
>>     MqttMessage msg = new MqttMessage("test".getBytes());
>>     mqttAndroidClient.publish(publishTopic, msg);
>> } catch (Exception e) {
>>     throw new RuntimeException(e);
>> }
>>
>> I checked both mqttAndroidClient and msg and neither of them are null.
>>
>> From the MQTT documentation MqttAndroidClient.publish() method is not supposed to throw a NPE.
>>
>> What could be the reason for that?
>>
>>
>> Thanks
>>
>> Sergio
>>
>>
>> _______________________________________________
>> paho-dev mailing list
>> paho-dev@xxxxxxxxxxx
>> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/paho-dev
>
>
>
>
> --
> ---
> Manuel DomÃnguez Dorado
> Software engineer (Ph.D, M.Sc., B.Sc.)
> Certified Project Management Professional (PMP)
> ingeniero@xxxxxxxxxxxxxxxxxxx
> http://www.ManoloDominguez.com
> (+34) 607 418 760
>

_______________________________________________
paho-dev mailing list
paho-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/paho-dev
 
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU



_______________________________________________
paho-dev mailing list
paho-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/paho-dev

-- 
Ian Craggs
icraggs@xxxxxxxxxx                 IBM United Kingdom
Paho Project Lead; Committer on Mosquitto