Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ebb1de56 authored by Holly Jiuyu Sun's avatar Holly Jiuyu Sun Committed by Gerrit Code Review
Browse files

Merge "Fix issues on EuiccCard constructor."

parents 9a0a3e9f 037eea07
Loading
Loading
Loading
Loading
+269 −27
Original line number Diff line number Diff line
@@ -179,6 +179,7 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                return (EuiccCard) controller.getUiccCardForSlot(slotId);
            }
        }
        Log.e(TAG, "EuiccCard is null. CardId : " + cardId);
        return null;
    }

@@ -194,6 +195,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IGetAllProfilesCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<EuiccProfileInfo[]> cardCb =
                new AsyncResultCallback<EuiccProfileInfo[]>() {
            @Override
@@ -214,7 +225,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).getAllProfiles(cardCb, mEuiccMainThreadHandler);

        card.getAllProfiles(cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -222,6 +234,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IGetProfileCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<EuiccProfileInfo> cardCb = new AsyncResultCallback<EuiccProfileInfo>() {
                    @Override
                    public void onResult(EuiccProfileInfo result) {
@@ -241,7 +263,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                        }
                    }
                };
        getEuiccCard(cardId).getProfile(iccid, cardCb, mEuiccMainThreadHandler);

        card.getProfile(iccid, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -249,6 +272,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IDisableProfileCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<Void> cardCb = new AsyncResultCallback<Void>() {
            @Override
            public void onResult(Void result) {
@@ -268,7 +301,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).disableProfile(iccid, refresh, cardCb, mEuiccMainThreadHandler);

        card.disableProfile(iccid, refresh, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -276,6 +310,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            ISwitchToProfileCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<EuiccProfileInfo> profileCb =
                new AsyncResultCallback<EuiccProfileInfo>() {
            @Override
@@ -299,8 +343,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                        }
                    }
                };
                getEuiccCard(cardId)
                        .switchToProfile(iccid, refresh, switchCb, mEuiccMainThreadHandler);

                card.switchToProfile(iccid, refresh, switchCb, mEuiccMainThreadHandler);
            }

            @Override
@@ -312,7 +356,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).getProfile(iccid, profileCb, mEuiccMainThreadHandler);

        card.getProfile(iccid, profileCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -320,6 +365,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            ISetNicknameCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<Void> cardCb = new AsyncResultCallback<Void>() {
            @Override
            public void onResult(Void result) {
@@ -339,7 +394,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).setNickname(iccid, nickname, cardCb, mEuiccMainThreadHandler);

        card.setNickname(iccid, nickname, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -347,6 +403,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IDeleteProfileCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<Void> cardCb = new AsyncResultCallback<Void>() {
            @Override
            public void onResult(Void result) {
@@ -366,7 +432,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).deleteProfile(iccid, cardCb, mEuiccMainThreadHandler);

        card.deleteProfile(iccid, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -374,6 +441,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            @EuiccCardManager.ResetOption int options, IResetMemoryCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<Void> cardCb = new AsyncResultCallback<Void>() {
            @Override
            public void onResult(Void result) {
@@ -393,7 +470,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).resetMemory(options, cardCb, mEuiccMainThreadHandler);

        card.resetMemory(options, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -401,6 +479,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IGetDefaultSmdpAddressCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<String> cardCb = new AsyncResultCallback<String>() {
            @Override
            public void onResult(String result) {
@@ -420,7 +508,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).getDefaultSmdpAddress(cardCb, mEuiccMainThreadHandler);

        card.getDefaultSmdpAddress(cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -428,6 +517,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IGetSmdsAddressCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<String> cardCb = new AsyncResultCallback<String>() {
            @Override
            public void onResult(String result) {
@@ -447,7 +546,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).getSmdsAddress(cardCb, mEuiccMainThreadHandler);

        card.getSmdsAddress(cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -455,6 +555,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            ISetDefaultSmdpAddressCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<Void> cardCb = new AsyncResultCallback<Void>() {
            @Override
            public void onResult(Void result) {
@@ -474,7 +584,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).setDefaultSmdpAddress(address, cardCb, mEuiccMainThreadHandler);

        card.setDefaultSmdpAddress(address, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -482,6 +593,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IGetRulesAuthTableCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<EuiccRulesAuthTable> cardCb =
                new AsyncResultCallback<EuiccRulesAuthTable>() {
            @Override
@@ -502,7 +623,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).getRulesAuthTable(cardCb, mEuiccMainThreadHandler);

        card.getRulesAuthTable(cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -510,6 +632,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IGetEuiccChallengeCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<byte[]> cardCb = new AsyncResultCallback<byte[]>() {
            @Override
            public void onResult(byte[] result) {
@@ -529,7 +661,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).getEuiccChallenge(cardCb, mEuiccMainThreadHandler);

        card.getEuiccChallenge(cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -537,6 +670,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IGetEuiccInfo1Callback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<byte[]> cardCb = new AsyncResultCallback<byte[]>() {
            @Override
            public void onResult(byte[] result) {
@@ -556,7 +699,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).getEuiccInfo1(cardCb, mEuiccMainThreadHandler);

        card.getEuiccInfo1(cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -564,6 +708,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IGetEuiccInfo2Callback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<byte[]> cardCb = new AsyncResultCallback<byte[]>() {
            @Override
            public void onResult(byte[] result) {
@@ -583,7 +737,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).getEuiccInfo2(cardCb, mEuiccMainThreadHandler);

        card.getEuiccInfo2(cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -592,6 +747,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            byte[] serverCertificate, IAuthenticateServerCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<byte[]> cardCb = new AsyncResultCallback<byte[]>() {
            @Override
            public void onResult(byte[] result) {
@@ -611,8 +776,9 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).authenticateServer(matchingId, serverSigned1, serverSignature1,
                euiccCiPkIdToBeUsed, serverCertificate, cardCb, mEuiccMainThreadHandler);

        card.authenticateServer(matchingId, serverSigned1, serverSignature1, euiccCiPkIdToBeUsed,
                serverCertificate, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -621,6 +787,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IPrepareDownloadCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<byte[]> cardCb = new AsyncResultCallback<byte[]>() {
            @Override
            public void onResult(byte[] result) {
@@ -640,8 +816,9 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).prepareDownload(hashCc, smdpSigned2, smdpSignature2, smdpCertificate,
                cardCb, mEuiccMainThreadHandler);

        card.prepareDownload(hashCc, smdpSigned2, smdpSignature2, smdpCertificate, cardCb,
                mEuiccMainThreadHandler);
    }

    @Override
@@ -649,6 +826,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            byte[] boundProfilePackage, ILoadBoundProfilePackageCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<byte[]> cardCb = new AsyncResultCallback<byte[]>() {
            @Override
            public void onResult(byte[] result) {
@@ -668,8 +855,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).loadBoundProfilePackage(boundProfilePackage, cardCb,
                mEuiccMainThreadHandler);

        card.loadBoundProfilePackage(boundProfilePackage, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -677,6 +864,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            @EuiccCardManager.CancelReason int reason, ICancelSessionCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<byte[]> cardCb = new AsyncResultCallback<byte[]>() {
            @Override
            public void onResult(byte[] result) {
@@ -696,7 +893,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).cancelSession(transactionId, reason, cardCb, mEuiccMainThreadHandler);

        card.cancelSession(transactionId, reason, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -704,6 +902,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            @EuiccNotification.Event int events, IListNotificationsCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<EuiccNotification[]> cardCb =
                new AsyncResultCallback<EuiccNotification[]>() {
            @Override
@@ -724,7 +932,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                }
            }
        };
        getEuiccCard(cardId).listNotifications(events, cardCb, mEuiccMainThreadHandler);

        card.listNotifications(events, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -732,6 +941,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            @EuiccNotification.Event int events, IRetrieveNotificationListCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<EuiccNotification[]> cardCb =
                new AsyncResultCallback<EuiccNotification[]>() {
                    @Override
@@ -752,7 +971,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                        }
                    }
                };
        getEuiccCard(cardId).retrieveNotificationList(events, cardCb, mEuiccMainThreadHandler);

        card.retrieveNotificationList(events, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -760,6 +980,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IRetrieveNotificationCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND, null);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<EuiccNotification> cardCb =
                new AsyncResultCallback<EuiccNotification>() {
                    @Override
@@ -780,7 +1010,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                        }
                    }
                };
        getEuiccCard(cardId).retrieveNotification(seqNumber, cardCb, mEuiccMainThreadHandler);

        card.retrieveNotification(seqNumber, cardCb, mEuiccMainThreadHandler);
    }

    @Override
@@ -788,6 +1019,16 @@ public class EuiccCardController extends IEuiccCardController.Stub {
            IRemoveNotificationFromListCallback callback) {
        checkCallingPackage(callingPackage);

        EuiccCard card = getEuiccCard(cardId);
        if (card == null) {
            try {
                callback.onComplete(EuiccCardManager.RESULT_EUICC_NOT_FOUND);
            } catch (RemoteException exception) {
                throw exception.rethrowFromSystemServer();
            }
            return;
        }

        AsyncResultCallback<Void> cardCb = new AsyncResultCallback<Void>() {
                    @Override
                    public void onResult(Void result) {
@@ -808,7 +1049,8 @@ public class EuiccCardController extends IEuiccCardController.Stub {
                        }
                    }
                };
        getEuiccCard(cardId).removeNotificationFromList(seqNumber, cardCb, mEuiccMainThreadHandler);

        card.removeNotificationFromList(seqNumber, cardCb, mEuiccMainThreadHandler);
    }

    @Override
+2 −6
Original line number Diff line number Diff line
@@ -303,15 +303,11 @@ public class UiccController extends Handler {
            for (int idx = 0; idx < mUiccSlots.length; idx++) {
                if (mUiccSlots[idx] != null) {
                    UiccCard uiccCard = mUiccSlots[idx].getUiccCard();
                    if (uiccCard != null) {
                        // todo: uncomment this once getCardId() is added
                        //if (cardId.equals(uiccCard.getCardId())) {
                        if (false) {
                    if (uiccCard != null && cardId.equals(uiccCard.getCardId())) {
                        return idx;
                    }
                }
            }
            }
            // if a match is not found, do a lookup based on ICCID
            for (int idx = 0; idx < mUiccSlots.length; idx++) {
                if (mUiccSlots[idx] != null && cardId.equals(mUiccSlots[idx].getIccId())) {
+10 −3
Original line number Diff line number Diff line
@@ -112,7 +112,7 @@ public class EuiccCard extends UiccCard {

    private final ApduSender mApduSender;
    private final Object mLock = new Object();
    private final RegistrantList mEidReadyRegistrants = new RegistrantList();
    private RegistrantList mEidReadyRegistrants;
    private EuiccSpecVersion mSpecVersion;
    private volatile String mEid;

@@ -133,6 +133,9 @@ public class EuiccCard extends UiccCard {
        if (mEid != null) {
            r.notifyRegistrant(new AsyncResult(null, null, null));
        } else {
            if (mEidReadyRegistrants == null) {
                mEidReadyRegistrants = new RegistrantList();
            }
            mEidReadyRegistrants.add(r);
        }
    }
@@ -141,8 +144,10 @@ public class EuiccCard extends UiccCard {
     * Unregisters to be notified when EID is ready.
     */
    public void unregisterForEidReady(Handler h) {
        if (mEidReadyRegistrants != null) {
            mEidReadyRegistrants.remove(h);
        }
    }

    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    protected void loadEidAndNotifyRegistrants() {
@@ -150,8 +155,10 @@ public class EuiccCard extends UiccCard {
        AsyncResultCallback<String> cardCb = new AsyncResultCallback<String>() {
            @Override
            public void onResult(String result) {
                if (mEidReadyRegistrants != null) {
                    mEidReadyRegistrants.notifyRegistrants(new AsyncResult(null, null, null));
                }
            }

            @Override
            public void onException(Throwable e) {