q-municate-android
q-municate-android copied to clipboard
Sign up with email?
Is it not possible to sign up in the app with email? It shows in the screenshots that you can but when you load the latest build of the app you have to use your telephone number or facebook. I need to use email. Is this possible? Is it a setting I need to change? Thanks, Martyn.
Hi, @martyndix. In current version Q-mun you can login with email, if you are already have account but sign up only with your telephone number or facebook. To use signup with email, you can use SignUpActivity, but you should make some changes in your project code.
Thanks very much. Please can you explain what I need to change in the iOS and Android project code? Thanks, Martyn.
Martyn, if you want to add some feature to your project, you should explore Q-mun. There is a Command QBSignUpCommand in Q-mun. You can search in git history, how to restore SignUp functionality for this command or try to add it by himself.
@RomanPronin In which commit the ability to register via email is removed?
@EminDemiri commit - https://github.com/QuickBlox/q-municate-android/commit/2a70f12ab022d72fc5d41748e6f668043e8255e4
@RomanPronin hi. I have a problem, or more problem :).
I added all class needed to reanable the email signup but i have 2 problems. (I enter the error of the logcat directly and the code is entered so you can immediately understand what it is)
Code: ` public class QBAuthHelper extends BaseHelper {
private String TAG = QBAuthHelper.class.getSimpleName();
private QBUser user;
public QBAuthHelper(Context context) {
super(context);
this.context = context;
}
public QBUser login(QBUser user) throws QBResponseException, XMPPException {
QBAuth.createSession();
String password = user.getPassword();
this.user = QBUsers.signIn(user).perform();
this.user.setPassword(password);
return this.user;
}
public QBUser login(String socialProvider, String accessToken,
String accessTokenSecret) throws QBResponseException, XMPPException {
QBSession session = QBAuth.createSession().perform();
user = QBUsers.signInUsingSocialProvider(socialProvider, accessToken, accessTokenSecret).perform();
user.setPassword(session.getToken());
return user;
}
public QBUser signup(QBUser user, File file) throws QBResponseException, XMPPException {
QBAuth.createSession();
String password = user.getPassword();
user.setOldPassword(password);
this.user = QBUsers.signUpSignInTask(user).perform();
if (null != file) {
QBFile qbFile = QBContent.uploadFileTask(file, true, null).perform();
this.user.setWebsite(qbFile.getPublicUrl());
this.user = QBUsers.updateUser(user).perform();
}
this.user.setPassword(password);
return user;
}
public QBUser updateUser(QBUser user) throws QBResponseException {
String password = user.getPassword();
this.user = QBUsers.updateUser(user).perform();
this.user.setPassword(password);
return this.user;
}
public QBUser updateUser(QBUser user, File file) throws QBResponseException {
QBFile qbFile = QBContent.uploadFileTask(file, true,null).perform();
user.setWebsite(qbFile.getPublicUrl());
user.setFileId(qbFile.getId());
return updateUser(user);
}
public void resetPassword(String email) throws QBResponseException {
QBAuth.createSession();
QBUsers.resetPassword(email);
}
public QBUser getUser() {
return user;
}
public boolean isLoggedIn() {
return user != null;
}
}
public class QBSignUpRestCommand extends CompositeServiceCommand {
private static final String TAG = QBSignUpRestCommand.class.getSimpleName();
private final QBAuthHelper authHelper;
public QBSignUpRestCommand(Context context, QBAuthHelper authHelper, String successAction,
String failAction) {
super(context, successAction, failAction);
this.authHelper = authHelper;
}
public static void start(Context context, QBUser user, File image) {
Intent intent = new Intent(QBServiceConsts.SIGNUP_REST_ACTION, null, context, QBService.class);
intent.putExtra(QBServiceConsts.EXTRA_USER, user);
intent.putExtra(QBServiceConsts.EXTRA_FILE, image);
context.startService(intent);
}
@Override
public Bundle perform(Bundle extras) throws Exception {
QBUser user = (QBUser) extras.getSerializable(QBServiceConsts.EXTRA_USER);
File file = (File) extras.getSerializable(QBServiceConsts.EXTRA_FILE);
user = authHelper.signup(user, file);
extras.putSerializable(QBServiceConsts.EXTRA_USER, user);
return extras;
}
}`
On QBService class: ` helpersMap.put(AUTH_HELPER, new QBAuthHelper(this)); // On initHelpers()
private void registerSignUpCommand() { QBAuthHelper authHelper = (QBAuthHelper) getHelper(AUTH_HELPER);
QBSignUpCommand signUpCommand = new QBSignUpCommand(this,
QBServiceConsts.SIGNUP_SUCCESS_ACTION,
QBServiceConsts.SIGNUP_FAIL_ACTION);
QBSignUpRestCommand signUpRestCommand = new QBSignUpRestCommand(this, authHelper,
QBServiceConsts.SIGNUP_REST_SUCCESS_ACTION,
QBServiceConsts.SIGNUP_REST_FAIL_ACTION);
signUpCommand.addCommand(signUpRestCommand);
QBChatRestHelper chatRestHelper = (QBChatRestHelper) getHelper(CHAT_REST_HELPER);
QBLoginChatCommand loginChatCommand = new QBLoginChatCommand(this, chatRestHelper,
QBServiceConsts.LOGIN_CHAT_SUCCESS_ACTION,
QBServiceConsts.LOGIN_CHAT_FAIL_ACTION);
addLoginChatAndInitCommands(signUpCommand, loginChatCommand);
serviceCommandMap.put(QBServiceConsts.SIGNUP_ACTION, signUpCommand);
}
`
**Error 1 **
04-05 09:15:26.805 14319-14319/com.emindemiri.talk_me I/TableUtils: clearing table 'qm_user' with 'DELETE FROM
qm_user04-05 09:15:26.822 14319-14319/com.emindemiri.talk_me I/TableUtils: clearing table 'social' with 'DELETE FROM
social04-05 09:15:26.827 14319-14319/com.emindemiri.talk_me I/TableUtils: clearing table 'friend' with 'DELETE FROM
friend04-05 09:15:26.832 14319-14319/com.emindemiri.talk_me I/TableUtils: clearing table 'user_request' with 'DELETE FROM
user_request04-05 09:15:26.837 14319-14319/com.emindemiri.talk_me I/TableUtils: clearing table 'dialog' with 'DELETE FROM
dialog04-05 09:15:26.838 14319-14319/com.emindemiri.talk_me I/TableUtils: clearing table 'dialog_occupant' with 'DELETE FROM
dialog_occupant04-05 09:15:26.839 14319-14319/com.emindemiri.talk_me I/TableUtils: clearing table 'dialog_notification' with 'DELETE FROM
dialog_notificationclearing table 'attachment' with 'DELETE FROM
attachment04-05 09:15:26.844 14319-14319/com.emindemiri.talk_me I/TableUtils: clearing table 'message' with 'DELETE FROM
message04-05 09:15:26.856 14319-14319/com.emindemiri.talk_me D/NSD: curPkgName is not in list 04-05 09:15:26.861 14319-14319/com.emindemiri.talk_me D/BaseActivity: onAttachFragment 04-05 09:15:26.862 14319-14319/com.emindemiri.talk_me D/HwSensorManager: HwSensorManager version: 1.0.0 04-05 09:15:26.886 14319-14319/com.emindemiri.talk_me D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.15, mControlPoint1y = 0.7, mControlPoint2x = 0.2, mControlPoint2y = 0.98 CubicBezierInterpolator mControlPoint1x = 0.6, mControlPoint1y = 0.9, mControlPoint2x = 0.8, mControlPoint2y = 1.0 CubicBezierInterpolator mControlPoint1x = 0.15, mControlPoint1y = 0.7, mControlPoint2x = 0.2, mControlPoint2y = 0.98 CubicBezierInterpolator mControlPoint1x = 0.6, mControlPoint1y = 0.9, mControlPoint2x = 0.8, mControlPoint2y = 1.0 04-05 09:15:26.907 14319-14319/com.emindemiri.talk_me D/QBService: onStartCommand service started with resultAction=signup_action 04-05 09:15:26.909 14319-14518/com.emindemiri.talk_me D/CompositeServiceCommand: perform CompositeServiceCommand command = com.quickblox.q_municate_core.qb.commands.rest.QBSignUpRestCommand@7487fcc 04-05 09:15:26.929 14319-14518/com.emindemiri.talk_me D/QBASDK: ========================================================= === REQUEST ==== 85f0e6d1-cf06-4596-a3f8-4697d3908576 === REQUEST POST https://api.quickblox.com/users.json HEADERS QuickBlox-REST-API-Version=0.1.1 QB-SDK=Android 3.5.2 QB-Token=6***************************************d PARAMETERS user[email][email protected] user[full_name]=test user[tag_list]= user[password]=test123ss INLINE POST https://api.quickblox.com/users.json?user[email]=infi%40emindemiri.com&user[full_name]=test&user[tag_list]=&user[password]=test123ss 04-05 09:15:26.947 14319-14406/com.emindemiri.talk_me D/mali_winsys: new_window_surface returns 0x3000 04-05 09:15:27.419 14319-14518/com.emindemiri.talk_me I/System: core_booster, getBoosterConfig = false 04-05 09:15:27.908 14319-14518/com.emindemiri.talk_me I/System: core_booster, getBoosterConfig = false 04-05 09:15:29.334 14319-14518/com.emindemiri.talk_me D/QBASDK: ********************************************************* *** RESPONSE *** 85f0e6d1-cf06-4596-a3f8-4697d3908576 *** STATUS : 201 HEADERS X-Runtime=0.058096 Cache-Control=max-age=0, private, must-revalidate QuickBlox-REST-API-Version=0.1.1 X-Android-Selected-Protocol=http/1.1 Set-Cookie=_mkra_ctxt=076f6dfa0ae62035970c1ecd13617669--201; path=/; max-age=5; HttpOnly; secure QB-Token-ExpirationDate=2018-04-05 09:05:40 +0000 Status=201 Created X-Request-Id=3feb02c5-f8ef-4601-a8ca-9161bbe811c2 X-Android-Response-Source=NETWORK 201 Connection=Close X-Android-Sent-Millis=1522912529100 Content-Type=application/json; charset=utf-8 Date=Thu, 05 Apr 2018 07:15:29 GMT X-Content-Type-Options=nosniff Location=https://api.quickblox.com/users/46713397 Server=openresty/1.9.15.1 ETag=W/"538c842a5a96ee2bcd9310b6428ead26" Content-Length=363 Strict-Transport-Security=max-age=31536000max-age=15768000; X-XSS-Protection=1; mode=block X-Frame-Options=SAMEORIGIN X-Android-Received-Millis=1522912529329 Access-Control-Allow-Origin=* BODY '{"user":{"id":46713397,"owner_id":28544,"full_name":"test","email":"[email protected]","login":null,"phone":null,"website":null,"created_at":"2018-04-05T07:15:29Z","updated_at":"2018-04-05T07:15:29Z","last_request_at":null,"external_user_id":null,"facebook_id":null,"twitter_id":null,"blob_id":null,"custom_data":null,"twitter_digits_id":null,"user_tags":null}}' 04-05 09:15:29.383 14319-14518/com.emindemiri.talk_me D/QBASDK: ========================================================= === REQUEST ==== a08c3c4d-52f6-4afa-9028-ce2149ad3aa8 === REQUEST POST https://api.quickblox.com/login.json HEADERS QuickBlox-REST-API-Version=0.1.1 QB-SDK=Android 3.5.2 QB-Token=6***************************************d PARAMETERS [email protected] password=test123ss INLINE POST https://api.quickblox.com/login.json?email=infi%40emindemiri.com&password=test123ss 04-05 09:15:29.385 14319-14518/com.emindemiri.talk_me I/System: core_booster, getBoosterConfig = false 04-05 09:15:29.388 14319-14319/com.emindemiri.talk_me D/SessionListener: onSessionUpdated pswd:test123ss, iserId : 46713397 04-05 09:15:29.399 14319-14319/com.emindemiri.talk_me D/QBASDK: QBSessionListener onSessionUpdated 04-05 09:15:29.410 14319-14319/com.emindemiri.talk_me D/QBASDK: SubscribeService: SubscribeService created 04-05 09:15:29.417 14319-14527/com.emindemiri.talk_me D/QBASDK: SubscribeService: onHandleIntent start: register to pushes SubscribeService: subscribed already 04-05 09:15:29.421 14319-14319/com.emindemiri.talk_me D/QBASDK: SubscribeService: Service onDestroy 04-05 09:15:29.545 14319-14518/com.emindemiri.talk_me I/System: core_booster, getBoosterConfig = false 04-05 09:15:30.161 14319-14518/com.emindemiri.talk_me D/QBASDK: ********************************************************* *** RESPONSE *** a08c3c4d-52f6-4afa-9028-ce2149ad3aa8 *** STATUS : 202 HEADERS X-Runtime=0.021009 Cache-Control=no-cache QuickBlox-REST-API-Version=0.1.1 X-Android-Selected-Protocol=http/1.1 Set-Cookie=_mkra_ctxt=5811ffadbd29be8f7e612007d926ff22--202; path=/; max-age=5; HttpOnly; secure QB-Token-ExpirationDate=2018-04-05 09:05:40 +0000 Status=202 Accepted X-Request-Id=ac3c1223-e4df-4919-bf9c-03848a433a6a X-Android-Response-Source=NETWORK 202 Connection=Close X-Android-Sent-Millis=1522912529745 Content-Type=application/json; charset=utf-8 Date=Thu, 05 Apr 2018 07:15:30 GMT X-Content-Type-Options=nosniff Server=openresty/1.9.15.1 Content-Length=381 Strict-Transport-Security=max-age=31536000 X-XSS-Protection=1; mode=block X-Frame-Options=SAMEORIGIN X-Android-Received-Millis=1522912530154 Access-Control-Allow-Origin=* BODY '{"user":{"id":46713397,"owner_id":28544,"full_name":"test","email":"[email protected]","login":null,"phone":null,"website":null,"created_at":"2018-04-05T07:15:29Z","updated_at":"2018-04-05T07:15:29Z","last_request_at":"2018-04-05T07:15:30Z","external_user_id":null,"facebook_id":null,"twitter_id":null,"blob_id":null,"custom_data":null,"twitter_digits_id":null,"user_tags":null}}' 04-05 09:15:30.201 14319-14518/com.emindemiri.talk_me D/CompositeServiceCommand: perform CompositeServiceCommand command = com.quickblox.q_municate_core.qb.commands.chat.QBInitChatServiceCommand@212eef5 04-05 09:15:30.201 14319-14518/com.emindemiri.talk_me V/QBChatHelper: initChatService() 04-05 09:15:30.201 14319-14518/com.emindemiri.talk_me D/CompositeServiceCommand: perform CompositeServiceCommand command = com.quickblox.q_municate_core.qb.commands.chat.QBLoginChatCommand@d5c948a 04-05 09:15:30.202 14319-14518/com.emindemiri.talk_me I/QBLoginChatCommand: login with user login:null, user id:0, pswd=test123ss, fb id:null, tw dg id:null session token:6714fb7ab2d267a55c023f09fd47b90abb00b3ed , token exp date: Thu Apr 05 11:05:40 GMT+02:00 2018 , is valid token:true 04-05 09:15:30.204 14319-14518/com.emindemiri.talk_me D/QBASDK: connect to chat via new connection 04-05 09:15:30.206 14319-14319/com.emindemiri.talk_me D/SessionListener: onSessionUpdated pswd:test123ss, iserId : 46713397 04-05 09:15:30.222 14319-14319/com.emindemiri.talk_me D/QBASDK: QBSessionListener onSessionUpdated 04-05 09:15:30.233 14319-14319/com.emindemiri.talk_me D/QBASDK: SubscribeService: SubscribeService created 04-05 09:15:30.240 14319-14528/com.emindemiri.talk_me D/QBASDK: SubscribeService: onHandleIntent start: register to pushes SubscribeService: subscribed already 04-05 09:15:30.243 14319-14319/com.emindemiri.talk_me D/QBASDK: SubscribeService: Service onDestroy 04-05 09:15:30.245 14319-14518/com.emindemiri.talk_me I/System: core_booster, getBoosterConfig = false 04-05 09:15:30.245 14319-14518/com.emindemiri.talk_me D/QBASDK: Setting socket keepAlive :true Setting socket timeout :0 04-05 09:15:30.316 14319-14518/com.emindemiri.talk_me I/System: core_booster, getBoosterConfig = false 04-05 09:15:30.316 14319-14518/com.emindemiri.talk_me D/QBASDK: Setting socket keepAlive :true 04-05 09:15:30.317 14319-14518/com.emindemiri.talk_me D/QBASDK: Setting socket timeout :0 04-05 09:15:30.512 14319-14518/com.emindemiri.talk_me I/System: core_booster, getBoosterConfig = false 04-05 09:15:31.257 14319-14530/com.emindemiri.talk_me D/SMACK: SENT (0): <stream:stream xmlns='jabber:client' to='chat.quickblox.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xml:lang='en'> 04-05 09:15:31.413 14319-14531/com.emindemiri.talk_me D/SMACK: RECV (0): <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='chat.quickblox.com' id='88fc725c-46ae-44bd-a3b7-05ddbc3118eb' version='1.0' xml:lang='en'> 04-05 09:15:31.562 14319-14531/com.emindemiri.talk_me D/SMACK: RECV (0): <stream:features><sm xmlns="urn:xmpp:sm:3"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>ANONYMOUS</mechanism><mechanism>PLAIN_FAST</mechanism></mechanisms><ver xmlns="urn:xmpp:features:rosterver"/><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression></stream:features> 04-05 09:15:31.567 14319-14518/com.emindemiri.talk_me D/QBASDK: register network listener 04-05 09:15:31.568 14319-14518/com.emindemiri.talk_me D/QBASDK: Connected. Login to chat, currentUser JID: 0-46061, resource: android_ffffffff-9eb1-dbf2-041f-74833dfd13c2 04-05 09:15:31.572 14319-14530/com.emindemiri.talk_me D/SMACK: SENT (0): <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN_FAST'><password>ADAtNDYwNjEAdGVzdDEyM3Nz</password><resource>android_ffffffff-9eb1-dbf2-041f-74833dfd13c2</resource></auth> 04-05 09:15:31.580 14319-14319/com.emindemiri.talk_me E/QBChatRestHelper: connected 04-05 09:15:31.723 14319-14531/com.emindemiri.talk_me D/SMACK: RECV (0): <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure> 04-05 09:15:31.730 14319-14518/com.emindemiri.talk_me W/System.err: org.jivesoftware.smack.sasl.SASLErrorException: SASLError using PLAIN_FAST: not-authorized at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(Unknown Source) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(Unknown Source) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(Unknown Source) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(Unknown Source) 04-05 09:15:31.731 14319-14518/com.emindemiri.talk_me W/System.err: at java.lang.Thread.run(Thread.java:833) org.jivesoftware.smack.sasl.SASLErrorException: SASLError using PLAIN_FAST: not-authorized at org.jivesoftware.smack.SASLAuthentication.authenticationFailed(Unknown Source) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(Unknown Source) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(Unknown Source) at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(Unknown Source) at java.lang.Thread.run(Thread.java:833)
The recording was performed but I continue to remain in the recording screen with the preloader.
The second error happens when I enter the same email, from the server arrives the right email error already present but in the app nothing happens as in the previous error. These exceptions are printed in the logcat:
04-05 09:28:01.512 17289-17543/com.emindemiri.talk_me D/QBASDK: ********************************************************* *** RESPONSE *** 884c646b-1a22-48f2-937b-2c3aeff8ff9a *** STATUS : 422 HEADERS X-Runtime=0.025180 Cache-Control=no-cache QuickBlox-REST-API-Version=0.1.1 X-Android-Selected-Protocol=http/1.1 Set-Cookie=_mkra_ctxt=26ca88********de973da--422; path=/; max-age=5; HttpOnly; secure QB-Token-ExpirationDate=2018-04-05 09:28:01 +0000 Status=422 Unprocessable Entity X-Request-Id=720aa1a6-ce4b-4ed5-b66c-ecd7ca0fd556 X-Android-Response-Source=NETWORK 422 Connection=Close X-Android-Sent-Millis=1522913281128 Content-Type=application/json; charset=utf-8 Date=Thu, 05 Apr 2018 07:28:02 GMT X-Content-Type-Options=nosniff Server=openresty/1.9.15.1 Content-Length=48 Strict-Transport-Security=max-age=31536000 X-XSS-Protection=1; mode=block X-Frame-Options=SAMEORIGIN X-Android-Received-Millis=1522913281509 Access-Control-Allow-Origin=* BODY '{"errors":{"email":["has already been taken."]}}' 04-05 09:28:01.513 17289-17543/com.emindemiri.talk_me W/System.err: com.quickblox.core.exception.QBResponseException: email has already been taken. at com.quickblox.core.parser.QBJsonParser.parse(Unknown Source) at com.quickblox.users.parsers.QBUserJsonParser.parse(Unknown Source) at com.quickblox.users.parsers.QBUserJsonParser.parse(Unknown Source) at com.quickblox.auth.session.Query.perform(Unknown Source) at com.quickblox.core.task.TaskSync.runPerformer(Unknown Source) at com.quickblox.users.task.TaskSyncSignupSignIn.execute(Unknown Source) at com.quickblox.users.task.TaskSyncSignupSignIn.execute(Unknown Source) 04-05 09:28:01.514 17289-17543/com.emindemiri.talk_me W/System.err: at com.quickblox.core.PerformerTaskWrapper.perform(Unknown Source) at com.quickblox.q_municate_core.qb.helpers.QBAuthHelper.signup(QBAuthHelper.java:55) at com.quickblox.q_municate_core.qb.commands.rest.QBSignUpRestCommand.perform(QBSignUpRestCommand.java:43) at com.quickblox.q_municate_core.core.command.CompositeServiceCommand.perform(CompositeServiceCommand.java:32) at com.quickblox.q_municate_core.core.command.ServiceCommand.execute(ServiceCommand.java:27) at com.quickblox.q_municate_core.service.QBService$1.run(QBService.java:562) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:833) com.quickblox.core.exception.QBResponseException: email has already been taken. at com.quickblox.core.parser.QBJsonParser.parse(Unknown Source) at com.quickblox.users.parsers.QBUserJsonParser.parse(Unknown Source) 04-05 09:28:01.515 17289-17543/com.emindemiri.talk_me W/System.err: at com.quickblox.users.parsers.QBUserJsonParser.parse(Unknown Source) at com.quickblox.auth.session.Query.perform(Unknown Source) at com.quickblox.core.task.TaskSync.runPerformer(Unknown Source) at com.quickblox.users.task.TaskSyncSignupSignIn.execute(Unknown Source) at com.quickblox.users.task.TaskSyncSignupSignIn.execute(Unknown Source) at com.quickblox.core.PerformerTaskWrapper.perform(Unknown Source) at com.quickblox.q_municate_core.qb.helpers.QBAuthHelper.signup(QBAuthHelper.java:55) at com.quickblox.q_municate_core.qb.commands.rest.QBSignUpRestCommand.perform(QBSignUpRestCommand.java:43) at com.quickblox.q_municate_core.core.command.CompositeServiceCommand.perform(CompositeServiceCommand.java:32) at com.quickblox.q_municate_core.core.command.ServiceCommand.execute(ServiceCommand.java:27) at com.quickblox.q_municate_core.service.QBService$1.run(QBService.java:562) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:833)