Source:
public OnFailurePaymentControlResult executePluginOnFailureCalls(final Account account, final UUID paymentMethodId, final UUID paymentAttemptId, final UUID paymentId, final String paymentExternalKey, final String paymentTransactionExternalKey, final PaymentApiType paymentApiType, final TransactionType transactionType, final HPPType hppType, final BigDecimal amount, final Currency currency, final boolean isApiPayment, final List<String> paymentControlPluginNames, final Iterable<PluginProperty> pluginProperties, final CallContext callContext) { final PaymentControlContext inputPaymentControlContext = new DefaultPaymentControlContext(account, paymentMethodId, paymentAttemptId, paymentId, paymentExternalKey, paymentTransactionExternalKey, paymentApiType, transactionType, hppType, amount, currency, isApiPayment, callContext); DateTime candidate = null; Iterable<PluginProperty> inputPluginProperties = pluginProperties; final String requestId = Request.getPerThreadRequestData() != null ? Request.getPerThreadRequestData().getRequestId() : "NotAvailableRequestId"; for (final String pluginName : paymentControlPluginNames) { final PaymentControlPluginApi plugin = paymentControlPluginRegistry.getServiceForName(pluginName); if (plugin != null) { try { log.info("Calling onSuccessCall of plugin for requestId {}", pluginName, requestId); final OnFailurePaymentControlResult result = plugin.onFailureCall(inputPaymentControlContext, inputPluginProperties); log.info("Successful executed onSuccessCall of plugin for requestId {}", pluginName, requestId); if (candidate == null) { candidate = result.getNextRetryDate(); } else if (result.getNextRetryDate() != null) { candidate = candidate.compareTo(result.getNextRetryDate()) > 0 ? result.getNextRetryDate() : candidate; } if (result.getAdjustedPluginProperties() != null) { inputPluginProperties = result.getAdjustedPluginProperties(); } } catch (final PaymentControlApiException e) { log.warn("Plugin " + pluginName + " failed to return next retryDate for payment " + inputPaymentControlContext.getPaymentExternalKey(), e); return new DefaultFailureCallResult(candidate, inputPluginProperties); } } } return new DefaultFailureCallResult(candidate, inputPluginProperties); }

Target:
public OnFailurePaymentControlResult executePluginOnFailureCalls(final Account account, final UUID paymentMethodId, final UUID paymentAttemptId, final UUID paymentId, final String paymentExternalKey, final String paymentTransactionExternalKey, final PaymentApiType paymentApiType, final TransactionType transactionType, final HPPType hppType, final BigDecimal amount, final Currency currency, final boolean isApiPayment, final List<String> paymentControlPluginNames, final Iterable<PluginProperty> pluginProperties, final CallContext callContext) { final PaymentControlContext inputPaymentControlContext = new DefaultPaymentControlContext(account, paymentMethodId, paymentAttemptId, paymentId, paymentExternalKey, paymentTransactionExternalKey, paymentApiType, transactionType, hppType, amount, currency, isApiPayment, callContext); DateTime candidate = null; Iterable<PluginProperty> inputPluginProperties = pluginProperties; for (final String pluginName : paymentControlPluginNames) { final PaymentControlPluginApi plugin = paymentControlPluginRegistry.getServiceForName(pluginName); if (plugin != null) { try { log.debug("Calling onSuccessCall of plugin {}", pluginName); final OnFailurePaymentControlResult result = plugin.onFailureCall(inputPaymentControlContext, inputPluginProperties); log.debug("Successful executed onSuccessCall of plugin {}", pluginName); if (candidate == null) { candidate = result.getNextRetryDate(); } else if (result.getNextRetryDate() != null) { candidate = candidate.compareTo(result.getNextRetryDate()) > 0 ? result.getNextRetryDate() : candidate; } if (result.getAdjustedPluginProperties() != null) { inputPluginProperties = result.getAdjustedPluginProperties(); } } catch (final PaymentControlApiException e) { log.warn("Plugin " + pluginName + " failed to return next retryDate for payment " + inputPaymentControlContext.getPaymentExternalKey(), e); return new DefaultFailureCallResult(candidate, inputPluginProperties); } } } return new DefaultFailureCallResult(candidate, inputPluginProperties); }