get user inside a loop misfunctioning

0 votes

I am trying to develop a multiplayer game which integrates google as well as facebook login. My game logic is that as soon as a person logs in through any platform then i should automatically add all his friends(who have played the game) from that social platform to app42 buddies. Since google gives only one list of friends therefore, i need to find out for each of the friend whether he/she has played the game. I am pasting the code below.

public void addFriends(){

if(obj.myFriend != null && !obj.myFriend.isEmpty()){
app42RequestType = ACCEPT_FRIEND_REQUEST;
senders = new FriendRequestSender[obj.myFriend.size()];
acceptors = new FriendRequestAcceptor[obj.myFriend.size()];
Log.v(LoginPage.TAG, "sending friend request to : " + obj.myFriend.size() + " friends. ");
int i = 0;
String searchString;
for (SpellUpUser mUser : obj.myFriend){
i++;
 
searchString = "%" + mUser.getUserId() + "%";
Log.v(LoginPage.TAG, "searching for user : " + searchString);
HashMap<String, String> otherMetaHeaders = new HashMap<String, String>();
otherMetaHeaders.put("like", searchString);
 
userService.setOtherMetaHeaders(otherMetaHeaders);
senders[i - 1] = new FriendRequestSender(i, mUser.getUserId());
userService.getAllUsers(senders[i - 1]);
}
}

}

//the inner class for listening to the response

private class FriendRequestSender implements App42CallBack{
 
private int counter;
private String friendName;
ArrayList<User> searchedUsers;
 
private FriendRequestSender(int counter, String friendName){
this.counter = counter;
this.friendName = friendName;
this.searchedUsers = null;
Log.v(LoginPage.TAG, "friendName to send request : " + this.friendName);
 
}
 
@Override
public void onException(Exception e) {
App42UserInitializer.this.counter = this.counter;
Log.v(LoginPage.TAG, "the user " + this.friendName + "has not played the game yet. you can invite him/her");
 
 
}
 
@Override
public void onSuccess(final Object response) {
this.searchedUsers = (ArrayList<User>)response;
friendsFound.add(this.searchedUsers.get(0).getUserName());
Log.v(LoginPage.TAG, response.toString());
Log.v(LoginPage.TAG, this.searchedUsers.size() + " : my friend username is : " + this.friendName);
 
 
}
 
}
 
 
The Logcat
 
03-27 16:11:19.890: V/tag(16278): sending friend request to : 3 friends. 
 
03-27 16:11:19.890: V/tag(16278): searching for user : %113195432701725509290%
03-27 16:11:19.890: V/tag(16278): friendName to send request : 113195432701725509290
 
03-27 16:11:19.890: V/tag(16278): searching for user : %109099365556900661884%
03-27 16:11:19.890: V/tag(16278): friendName to send request : 109099365556900661884
 
03-27 16:11:19.890: V/tag(16278): searching for user : %101513042965188424205%
03-27 16:11:19.890: V/tag(16278): friendName to send request : 101513042965188424205
 
03-27 16:11:21.130: V/tag(16278): [{"app42":{"response":{"success":true,"users":{"user":{"userName":"g_101513042965188424205","email":"husain707@gmail.com","createdOn":"2015-03-26T07:48:52.000Z","accountLocked":false,"profile":{"firstName":"","lastName":"","sex":null,"dateOfBirth":null,"mobile":null,"officeLandLine":null,"homeLandLine":null,"line1":null,"line2":null,"city":null,"state":null,"pincode":null,"country":null}}}}}}]
 
03-27 16:11:21.130: V/tag(16278): 1 : my friend username is : 109099365556900661884
03-27 16:11:21.130: V/tag(16278): friendName to accept request : g_101513042965188424205
 
03-27 16:11:21.160: V/tag(16278): [{"app42":{"response":{"success":true,"users":{"user":{"userName":"g_109099365556900661884","email":"mahtabhussain7@gmail.com","createdOn":"2015-03-27T09:42:17.000Z","accountLocked":false,"profile":{"firstName":"","lastName":"","sex":null,"dateOfBirth":null,"mobile":null,"officeLandLine":null,"homeLandLine":null,"line1":null,"line2":null,"city":null,"state":null,"pincode":null,"country":null}}}}}}]
 
03-27 16:11:21.160: V/tag(16278): 1 : my friend username is : 113195432701725509290
03-27 16:11:21.160: V/tag(16278): friendName to accept request : g_109099365556900661884
 
03-27 16:11:21.230: V/tag(16278): [{"app42":{"response":{"success":true,"users":{"user":{"userName":"g_101513042965188424205","email":"husain707@gmail.com","createdOn":"2015-03-26T07:48:52.000Z","accountLocked":false,"profile":{"firstName":"","lastName":"","sex":null,"dateOfBirth":null,"mobile":null,"officeLandLine":null,"homeLandLine":null,"line1":null,"line2":null,"city":null,"state":null,"pincode":null,"country":null}}}}}}]
03-27 16:11:21.230: V/tag(16278): 1 : my friend username is : 101513042965188424205
03-27 16:11:21.230: V/tag(16278): friendName to accept request : g_101513042965188424205
 
The Problem
 
I am not able to understand why there callbacks for some requests are getting overriden over other callbacks of other requests. Does anybody know what is the reason for this? Is there any other better way to accomplish the task?
asked Mar 27, 2015 in App42 Cloud API-BaaS by husain707 (15 points)

1 Answer

0 votes

Hi ,

For maintaining the callback of diffrent class in single callback, you have to put the check for respective callback object as shown below in code snippet .

@Override

public void onSuccess(final Object response) {

            if (response instanceof User) {

                        System.out.println("Response for User ");

            }

 

            if (response instanceof Buddy) {

                        System.out.println("Response for Buddy");

            }

}

                                                           

if you are using same class e.g only User then you have to make different callback.                                   

This will solve the problem of override of other callback. let me know if it helps

 

Thanks & Regards

App42API Team

 

answered Mar 27, 2015 by naresh (350 points)
I have made an array of callbacks , one for every request but then too i donot understand why some callbacks are being called more than one and some are never  called. I have put the code and logcat above.
the problem persists even when i am using different callbacks for different requests
Download Widgets
Welcome to ShepHertz Product line forum, where you can ask questions and receive answers from the community. You can also reach out to us on support@shephertz.com
...