protected void postAmericanExpressCallback(final AmericanExpressRewardsBalance rewardsBalance) { postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mAmericanExpressListener != null; } @Override public void run() { mAmericanExpressListener.onRewardsBalanceFetched(rewardsBalance); } }); }
protected void postCallback(final Exception error) { postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mErrorListener != null; } @Override public void run() { mErrorListener.onError(error); } }); }
protected void postPaymentMethodDeletedCallback(final PaymentMethodNonce paymentMethodNonce) { postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mPaymentMethodNonceDeletedListener != null; } @Override public void run() { mPaymentMethodNonceDeletedListener.onPaymentMethodNonceDeleted(paymentMethodNonce); } }); }
protected void postConfigurationCallback() { postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mConfigurationListener != null; } @Override public void run() { mConfigurationListener.onConfigurationFetched(getConfiguration()); } }); }
protected void postCancelCallback(final int requestCode) { postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mCancelListener != null; } @Override public void run() { mCancelListener.onCancel(requestCode); } }); }
protected void postCallback(final UnionPayCapabilities capabilities) { postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mUnionPayListener != null; } @Override public void run() { mUnionPayListener.onCapabilitiesFetched(capabilities); } }); }
protected void postUnionPayCallback(final String enrollmentId, final boolean smsCodeRequired) { postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mUnionPayListener != null; } @Override public void run() { mUnionPayListener.onSmsCodeSent(enrollmentId, smsCodeRequired); } }); }
protected void postCallback(final BraintreePaymentResult result) { postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mBraintreePaymentResultListener != null; } @Override public void run() { mBraintreePaymentResultListener.onBraintreePaymentResult(result); } }); }
protected void postCallback(final List<PaymentMethodNonce> paymentMethodNonceList) { mCachedPaymentMethodNonces.clear(); mCachedPaymentMethodNonces.addAll(paymentMethodNonceList); mHasFetchedPaymentMethodNonces = true; postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mPaymentMethodNoncesUpdatedListener != null; } @Override public void run() { mPaymentMethodNoncesUpdatedListener.onPaymentMethodNoncesUpdated(paymentMethodNonceList); } }); }
protected void postCallback(final PaymentMethodNonce paymentMethodNonce) { if (paymentMethodNonce instanceof AndroidPayCardNonce) { for (PaymentMethodNonce cachedPaymentMethodNonce : new ArrayList<>(mCachedPaymentMethodNonces)) { if (cachedPaymentMethodNonce instanceof AndroidPayCardNonce) { mCachedPaymentMethodNonces.remove(cachedPaymentMethodNonce); } } } mCachedPaymentMethodNonces.add(0, paymentMethodNonce); postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mPaymentMethodNonceCreatedListener != null; } @Override public void run() { mPaymentMethodNonceCreatedListener.onPaymentMethodNonceCreated(paymentMethodNonce); } }); }
protected void waitForConfiguration(final ConfigurationListener listener) { fetchConfiguration(); postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return getConfiguration() != null && isAdded(); } @Override public void run() { listener.onConfigurationFetched(getConfiguration()); } }); }
@Override public void onResponse(final Exception e) { final ConfigurationException exception = new ConfigurationException("Request for configuration has failed: " + e.getMessage() + ". " + "Future requests will retry up to 3 times", e); postCallback(exception); postOrQueueCallback(new QueuedCallback() { @Override public boolean shouldRun() { return mConfigurationErrorListener != null; } @Override public void run() { mConfigurationErrorListener.onResponse(exception); } }); flushCallbacks(); } });
@Test public void executesCallbacksOnlyWhenShouldRunIsTrue() throws InvalidArgumentException { final AtomicBoolean shouldRun = new AtomicBoolean(false); final AtomicBoolean run = new AtomicBoolean(false); BraintreeFragment fragment = BraintreeFragment.newInstance(mActivity, TOKENIZATION_KEY); QueuedCallback callback = new QueuedCallback() { @Override public boolean shouldRun() { return shouldRun.get(); } @Override public void run() { run.set(true); } }; fragment.postOrQueueCallback(callback); assertFalse(run.get()); shouldRun.set(true); fragment.flushCallbacks(); assertTrue(run.get()); }
@Test public void doesNotExecuteCallbackWhenShouldRunIsFalse() throws InvalidArgumentException { BraintreeFragment fragment = BraintreeFragment.newInstance(mActivity, TOKENIZATION_KEY); QueuedCallback callback = new QueuedCallback() { @Override public boolean shouldRun() { return false; } @Override public void run() { fail("Listener was called"); } }; fragment.postOrQueueCallback(callback); }