0

I'm trying to migrate a Parse project to Backendless. Therefore, I'm following a Tutorial to learn Backendless. The Tutorial is by Samantha Squires, and it's on Youtube. What I'm building here is the ability to add 2 people as a friend. I'm logged in as a testuser and I want to add a friend to my friend list. Here's the method to add 2 friends as a friend in Backendless. I get the following error message:

E/AndroidRuntime: FATAL EXCEPTION: IntentService[AddFriendService]
                                                                                    java.lang.NoClassDefFoundError: java.util.Objects
                                                                                        at com.backendless.Persistence.find(Persistence.java:638)
                                                                                        at com.backendless.DataStoreFactory$1.find(DataStoreFactory.java:188)
                                                                                        at com.example.muhammadahsan.a27sam01.AddFriendService.addFriends(AddFriendService.java:121)
                                                                                        at com.example.muhammadahsan.a27sam01.AddFriendService.onHandleIntent(AddFriendService.java:90)
                                                                                        at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                        at android.os.Looper.loop(Looper.java:137)
                                                                                        at android.os.HandlerThread.run(HandlerThread.java:61)

My method to add 2 people as a friend is:

private void addFriends (String firstUserName, String secondUserName){

        Log.i("addFriendsMethod: ", "addFriendsMethod is Running");

        DataQueryBuilder query = DataQueryBuilder.create();

        query.setWhereClause(String.format("name = '%s' or name = '%s'", firstUserName, secondUserName));

        Backendless.Persistence.of(BackendlessUser.class).find(query, new AsyncCallback<List<BackendlessUser>>() {
            @Override
            public void handleResponse(List<BackendlessUser> response) {

                Log.i("Query Response:" , response.toString());

                List<BackendlessUser> users = response;

                if (users.size() !=2){
                    broadcastAddFriendFailure();
                    //That means we have more that one users or one of users wasn't found

                } else {
                    BackendlessUser user1 = users.get(0);//First user
                    final BackendlessUser user2 = users.get(1);//Second user

                    //Update first user, adding second user as a friend.
                    updateFriendsList(user1,user2);
                    Backendless.UserService.update(user1, new AsyncCallback<BackendlessUser>() {
                        @Override
                        public void handleResponse(BackendlessUser user) {
                            //Now Update second user adding first user as a friend
                            updateFriendsList(user2, user);//user is the updated version of user1
                            Backendless.UserService.update(user2, new AsyncCallback<BackendlessUser>() {
                                @Override
                                public void handleResponse(BackendlessUser response) {
                                    broadcastAddFriendSuccess();
                                }

                                @Override
                                public void handleFault(BackendlessFault fault) {
                                    broadcastAddFriendFailure();
                                }
                            });
                        }

                        @Override
                        public void handleFault(BackendlessFault fault) {
                            broadcastAddFriendFailure();
                        }
                    });
                }

            }

            @Override
            public void handleFault(BackendlessFault fault) {

            }
        });

    }

I know there's something wrong with the

Backendless.Persistence.of(BackendlessUser.class).find(query, new AsyncCallback<List<BackendlessUser>>()

Because I tried to test the output of whereclause in logs. Any help will be appreciated.

1 Answers1

0

It seems that in order to use Backendless SDK you have to specify Android SDK 19+ as minimal. The reason is that the Objects class' static methods (which apparently Backendless SDK uses) are only available from this version.

Scadge
  • 9,380
  • 3
  • 30
  • 39
  • Hello Scadge! THank you so much for the quick answer once again. One more quick question. Why I'm not able to get response.getData(), as the tutorial I'm following of Samantha squires, it works. But for me, response only gives me .get(int). Is it because of Backendless 3 and Backendless 4 differences? Please note that response is what I'm getting after passing the query.setWhereClause. – JohnyHawkAhsan Jun 14 '17 at 13:41
  • @JohnyHawkAhsan exactly, that's the difference between Backendless 3 and 4: now the `find()` method returns nativate java List, while earlier it returned a `BackendlessCollection` wrapper. This is a simplification, actually, since now you just need one method call less. – Scadge Jun 14 '17 at 15:33
  • Thank you sooo much @Scadge! – JohnyHawkAhsan Jun 15 '17 at 02:34