@Inject public PaymentProcessor(final OSGIServiceRegistration<PaymentPluginApi> pluginRegistry, final PaymentMethodProcessor paymentMethodProcessor, final AccountInternalApi accountUserApi, final InvoiceInternalApi invoiceApi, final TagInternalApi tagUserApi, final FailedPaymentRetryServiceScheduler failedPaymentRetryService, final PluginFailureRetryServiceScheduler pluginFailureRetryService, final AutoPayRetryServiceScheduler autoPayoffRetryService, final PaymentDao paymentDao, final NonEntityDao nonEntityDao, final PersistentBus eventBus, final Clock clock, final GlobalLocker locker, final PaymentConfig paymentConfig, @Named(PLUGIN_EXECUTOR_NAMED) final ExecutorService executor) { super(pluginRegistry, accountUserApi, eventBus, paymentDao, nonEntityDao, tagUserApi, locker, executor, invoiceApi); this.paymentMethodProcessor = paymentMethodProcessor; this.failedPaymentRetryService = failedPaymentRetryService; this.pluginFailureRetryService = pluginFailureRetryService; this.autoPayoffRetryService = autoPayoffRetryService; this.clock = clock; this.paymentConfig = paymentConfig; final long paymentPluginTimeoutSec = TimeUnit.SECONDS.convert(paymentConfig.getPaymentPluginTimeout().getPeriod(), paymentConfig.getPaymentPluginTimeout().getUnit()); this.paymentPluginDispatcher = new PluginDispatcher<Payment>(paymentPluginTimeoutSec, executor); this.voidPluginDispatcher = new PluginDispatcher<Void>(paymentPluginTimeoutSec, executor); }