0

I am using Facebook-Parse for a small test Android project. Its hosted on heroku.

I feel I am hitting an error because Retrofit & Facebook-Parse don't play nice together.

My build.gradle file :

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'android-apt'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"
    defaultConfig {
        applicationId "com.sudhishkr.project.test"
        minSdkVersion 23
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'

    // parse stuff
    compile 'com.parse:parse-android:1.13.1'
    compile 'com.parse:parseinterceptors:0.0.2'
    compile 'com.parse.bolts:bolts-android:1.4.0'
    // butterknife
    apt 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.jakewharton:butterknife:8.4.0'
    //
    compile 'com.android.support:design:24.2.1'
    compile 'com.android.support:cardview-v7:24.2.1'
    compile 'com.android.support:recyclerview-v7:24.2.1'
    //
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'jp.wasabeef:picasso-transformations:2.1.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    //
    compile 'com.squareup.okhttp3:okhttp:3.3.0'
    compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'
    compile 'com.google.code.gson:gson:2.6.2'
}

I am using Facebook-Parse only for user related operations. I have an issue with Login Page.

This is my login fragment

public class LoginFragment extends Fragment {

    @BindView(R.id.etEmail) EditText etEmail;
    @BindView(R.id.etPassword) EditText etPassword;
    @BindView(R.id.btnLogIn) Button btnLogIn;
    @BindView(R.id.btnSignUp) Button btnSignUp;

    private Unbinder unbinder;

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_login, container, false);
        unbinder = ButterKnife.bind(this, view);
        btnLogIn.setOnClickListener(v -> ParseUser.logInInBackground(etEmail.getText().toString(),
                etPassword.getText().toString(),
                (user, e) -> {
                    if (user != null) {
                        GeneralUtils.showSnackBar(getView(),
                                "Success",
                                getActivity().getColor(R.color.colorGreen),
                                getActivity().getColor(R.color.colorGray));
                                Intent intent = new Intent(getActivity(), HomeActivity.class);
                                startActivity(intent);
                    } else {
                        GeneralUtils.showSnackBar(getView(),
                                "Failed",
                                getActivity().getColor(R.color.colorRed),
                                getActivity().getColor(R.color.colorGray));
                    }
                }));
        btnSignUp.setOnClickListener(v -> {
            Intent intent = new Intent(getActivity(), SignupActivity.class);
            startActivity(intent);
        });

        return view;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }

}

Now with this setup, I cannot perform a login on an existing user in my Facebook-Parse backend. The error I get is : com.parse.ParseException: java.lang.NullPointerException: value == null

Now if I remove the below section from the build.gradle file and try logging in with the existing user. I am able to pass through without any problems.

        compile 'com.squareup.okhttp3:okhttp:3.3.0'
        compile 'com.squareup.retrofit2:retrofit:2.0.2'
        compile 'com.squareup.retrofit2:converter-gson:2.0.2'
        compile 'com.google.code.gson:gson:2.6.2'

I really like using retrofit for my projects, and I am not sure of the root-cause for this issue. This must be either something small I am missing or something really big.

I would be happy to provide more details on this issue. Pls let me know.


Edit

providing stacktrace

12-05 01:28:26.334 9197-9403/com.sudhishkr.project.test E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7f88096824d0
12-05 01:28:39.661 9197-9197/com.sudhishkr.project.test W/System.err: com.parse.ParseException: java.lang.NullPointerException: value == null
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:114)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at android.os.Handler.handleCallback(Handler.java:739)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at android.os.Looper.loop(Looper.java:148)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5417)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err: Caused by: java.lang.NullPointerException: value == null
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at okhttp3.Headers$Builder.checkNameAndValue(Headers.java:316)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at okhttp3.Headers$Builder.add(Headers.java:270)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseOkHttpClient.getRequest(ParseOkHttpClient.java:138)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseOkHttpClient.executeInternal(ParseOkHttpClient.java:64)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseHttpClient$ParseNetworkInterceptorChain.proceed(ParseHttpClient.java:158)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseDecompressInterceptor.intercept(ParseDecompressInterceptor.java:30)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseHttpClient$ParseNetworkInterceptorChain.proceed(ParseHttpClient.java:147)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParsePlugins$1.intercept(ParsePlugins.java:115)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseHttpClient$ParseNetworkInterceptorChain.proceed(ParseHttpClient.java:147)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseHttpClient.execute(ParseHttpClient.java:122)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseRequest$3.then(ParseRequest.java:136)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at com.parse.ParseRequest$3.then(ParseRequest.java:133)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at bolts.Task$15.run(Task.java:917)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at bolts.Task.completeAfterTask(Task.java:908)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at bolts.Task.continueWithTask(Task.java:715)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at bolts.Task.continueWithTask(Task.java:726)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at bolts.Task$13.then(Task.java:818)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at bolts.Task$13.then(Task.java:806)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at bolts.Task$15.run(Task.java:917)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test W/System.err:     at java.lang.Thread.run(Thread.java:818)
12-05 01:28:39.662 9197-9197/com.sudhishkr.project.test E/sudhishkrError: java.lang.NullPointerException: value == null
sudhishkr
  • 3,318
  • 5
  • 33
  • 55
  • can you share full log – Rajesh Dec 05 '16 at 08:48
  • @RajeshRajendiran : I just put a logger in the `else` block `Log.e("sudhishkrError", e.getMessage());`. This is what I get as an error `12-05 01:18:16.145 3795-3795/com.sudhishkr.project.test E/sudhishkrError: java.lang.NullPointerException: value == null` – sudhishkr Dec 05 '16 at 09:19
  • you can use e.printstacktrace method instead of 'Log.e("sudhishkrError", e.getMessage());' – Rajesh Dec 05 '16 at 09:24
  • @RajeshRajendiran : just added the stacktrace to the main question. – sudhishkr Dec 05 '16 at 09:33
  • may i know android version because this is bug in android 6.0 [ref](http://stackoverflow.com/questions/33046375/e-surface-getslotfrombufferlocked-unknown-buffer-0xab7519c0) – Rajesh Dec 05 '16 at 09:39
  • I am using 24 version – sudhishkr Dec 05 '16 at 09:44
  • @RajeshRajendiran : I just got the fix for this issue from codepath website. Pls dont debug this further. I am posting my learnings here. – sudhishkr Dec 05 '16 at 09:44
  • http://guides.codepath.com/android/Configuring-a-Parse-Server#troubleshooting-parse-server (search for `value == null`) in this document. It indicates its an issue with `clientKey` on Parse. – sudhishkr Dec 05 '16 at 09:45
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/129787/discussion-between-sudhishkr-and-rajesh-rajendiran). – sudhishkr Dec 05 '16 at 09:49

0 Answers0