0

My android app receives data from a servlet as a JSON string. The string is a valid JSON string. I use the exact same ProfileBean class on the servlet side, and run gson.fromJson() to deserialize the string and store the bean in a db, which works fine. For some reason on the android side, the call gson.fromJson() causes a null pointer exception.

protected ProfileBean doInBackground(ProfileBean... params) {
...
InputStream is = httpConn.getInputStream();
DataConversion dc = new DataConversion();
String jsonString = dc.convertStreamToString2(is);
is.close();
Log.d(jsString, jsonString.substring(0, 200));
Log.d(jsString, jsonString.substring(jsonString.length() - 200, jsonString.length()));
Log.d(jsString, String.valueOf(jsonString.length()) );
pfb = gson.fromJson(jsonString, ProfileBean.class);
...
}

This is the ProfileBean class for pub:

public class ProfileBean implements Serializable{
    String name;
    String email;
    String homeCity;
    String password;
    String img;
    /**
     * Takes 5 String parameters. Representing the data of a new user.
     * @param name
     * @param email
     * @param homeCity
     * @param password
     * @param img
     */
    public ProfileBean(String name, String email, String homeCity, String password, String img){
        this.name = name;
        this.email=email;
        this.homeCity=homeCity;
        this.password=password;
        this.img = img;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getHomeCity() {
        return homeCity;
    }

    public void setHomeCity(String homeCity) {
        this.homeCity = homeCity;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getImg() {
        return img;
    }

    public void setImg(String img) {
        this.img = img;
    }

}

I have been struggling with this all morning, checked the docs for Async task, Gson, and other similar stack overflow questions. I thought the problem was with the ProfileBean class, but as mentioned it works on the Servlet side. I'm stuck, any help would be greatly appreciated.

This is the log message:

04-02 14:09:42.490 25449-25449/com.danielsapps.packbuddy W/System.err: java.util.concurrent.ExecutionException: java.lang.NullPointerException
04-02 14:09:42.525 25449-26309/com.danielsapps.packbuddy W/dalvikvm: threadid=13: thread exiting with uncaught exception (group=0x411932a0)
04-02 14:09:42.560 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:223)
04-02 14:09:42.560 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.util.concurrent.FutureTask.get(FutureTask.java:82)
04-02 14:09:42.565 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.os.AsyncTask.get(AsyncTask.java:482)
04-02 14:09:42.565 25449-25449/com.danielsapps.packbuddy W/System.err:     at com.danielsapps.packbuddy.HostelSearch.searchForHostelsAndSetUiData(HostelSearch.java:47)
04-02 14:09:42.565 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
04-02 14:09:42.565 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.lang.reflect.Method.invoke(Method.java:511)
04-02 14:09:42.565 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
04-02 14:09:42.565 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.view.View.performClick(View.java:4232)
04-02 14:09:42.565 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.view.View$PerformClick.run(View.java:17298)
04-02 14:09:42.565 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.os.Handler.handleCallback(Handler.java:615)
04-02 14:09:42.570 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:92)
04-02 14:09:42.570 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.os.Looper.loop(Looper.java:137)
04-02 14:09:42.570 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:4921)
04-02 14:09:42.570 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
04-02 14:09:42.570 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.lang.reflect.Method.invoke(Method.java:511)
04-02 14:09:42.570 25449-25449/com.danielsapps.packbuddy W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
04-02 14:09:42.570 25449-25449/com.danielsapps.packbuddy W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
04-02 14:09:42.570 25449-25449/com.danielsapps.packbuddy W/System.err:     at dalvik.system.NativeStart.main(Native Method)
04-02 14:09:42.570 25449-25449/com.danielsapps.packbuddy W/System.err: Caused by: java.lang.NullPointerException
04-02 14:09:42.575 25449-25449/com.danielsapps.packbuddy W/System.err:     at com.danielsapps.packbuddycontroller.HostelSearchController.doInBackground(HostelSearchController.java:81)
04-02 14:09:42.575 25449-25449/com.danielsapps.packbuddy W/System.err:     at com.danielsapps.packbuddycontroller.HostelSearchController.doInBackground(HostelSearchController.java:32)
04-02 14:09:42.575 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-02 14:09:42.575 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-02 14:09:42.575 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-02 14:09:42.575 25449-25449/com.danielsapps.packbuddy W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-02 14:09:42.575 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
04-02 14:09:42.575 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
04-02 14:09:42.580 25449-25449/com.danielsapps.packbuddy W/System.err:     at java.lang.Thread.run(Thread.java:856)
04-02 14:09:42.690 25449-26309/com.danielsapps.packbuddy E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
                                                                           java.lang.RuntimeException: An error occured while executing doInBackground()
                                                                               at android.os.AsyncTask$3.done(AsyncTask.java:299)
                                                                               at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
                                                                               at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
                                                                               at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
                                                                               at java.util.concurrent.FutureTask.run(FutureTask.java:137)
                                                                               at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
                                                                               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
                                                                               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
                                                                               at java.lang.Thread.run(Thread.java:856)
                                                                            Caused by: java.lang.NullPointerException
                                                                               at com.danielsapps.packbuddycontroller.HostelSearchController.doInBackground(HostelSearchController.java:81)
                                                                               at com.danielsapps.packbuddycontroller.HostelSearchController.doInBackground(HostelSearchController.java:32)
                                                                               at android.os.AsyncTask$2.call(AsyncTask.java:287)
                                                                               at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
                                                                               at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
                                                                               at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
                                                                               at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
                                                                               at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
                                                                               at java.lang.Thread.run(Thread.java:856) 
slipperypete
  • 5,358
  • 17
  • 59
  • 99

0 Answers0