killbill-memoizeit
Changes
payment/src/main/java/org/killbill/billing/payment/api/svcs/DefaultInvoicePaymentInternalApi.java 149(+149 -0)
Details
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/db/TestDBRouter.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/db/TestDBRouter.java
index 94cb0ac..6cd9b9b 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/db/TestDBRouter.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/db/TestDBRouter.java
@@ -76,6 +76,10 @@ public class TestDBRouter extends TestIntegrationBase {
@AfterMethod(groups = "slow")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
externalBus.unregister(publicListener);
super.afterMethod();
}
diff --git a/payment/src/main/java/org/killbill/billing/payment/api/DefaultInvoicePaymentApi.java b/payment/src/main/java/org/killbill/billing/payment/api/DefaultInvoicePaymentApi.java
index 6d87e45..c0ffe20 100644
--- a/payment/src/main/java/org/killbill/billing/payment/api/DefaultInvoicePaymentApi.java
+++ b/payment/src/main/java/org/killbill/billing/payment/api/DefaultInvoicePaymentApi.java
@@ -29,9 +29,10 @@ import org.killbill.billing.account.api.Account;
import org.killbill.billing.catalog.api.Currency;
import org.killbill.billing.invoice.api.InvoiceInternalApi;
import org.killbill.billing.invoice.api.InvoicePayment;
-import org.killbill.billing.payment.invoice.InvoicePaymentControlPluginApi;
+import org.killbill.billing.payment.api.svcs.InvoicePaymentPaymentOptions;
import org.killbill.billing.util.UUIDs;
import org.killbill.billing.util.callcontext.CallContext;
+import org.killbill.billing.util.callcontext.InternalCallContextFactory;
import org.killbill.billing.util.callcontext.TenantContext;
import com.google.common.base.MoreObjects;
@@ -41,11 +42,18 @@ public class DefaultInvoicePaymentApi implements InvoicePaymentApi {
private final PaymentApi paymentApi;
private final InvoiceInternalApi invoiceInternalApi;
+ private final InvoicePaymentInternalApi invoicePaymentInternalApi;
+ private final InternalCallContextFactory internalCallContextFactory;
@Inject
- public DefaultInvoicePaymentApi(final PaymentApi paymentApi, final InvoiceInternalApi invoiceInternalApi) {
+ public DefaultInvoicePaymentApi(final PaymentApi paymentApi,
+ final InvoiceInternalApi invoiceInternalApi,
+ final InvoicePaymentInternalApi invoicePaymentInternalApi,
+ final InternalCallContextFactory internalCallContextFactory) {
this.paymentApi = paymentApi;
this.invoiceInternalApi = invoiceInternalApi;
+ this.invoicePaymentInternalApi = invoicePaymentInternalApi;
+ this.internalCallContextFactory = internalCallContextFactory;
}
@Override
@@ -57,32 +65,23 @@ public class DefaultInvoicePaymentApi implements InvoicePaymentApi {
final Currency currency,
final DateTime effectiveDate,
final String paymentExternalKey,
- final String originalPaymentTransactionExternalKey,
- final Iterable<PluginProperty> originalProperties,
+ final String paymentTransactionExternalKey,
+ final Iterable<PluginProperty> properties,
final PaymentOptions paymentOptions,
final CallContext context) throws PaymentApiException {
- final Collection<PluginProperty> pluginProperties = new LinkedList<PluginProperty>();
- if (originalProperties != null) {
- for (final PluginProperty pluginProperty : originalProperties) {
- pluginProperties.add(pluginProperty);
- }
- }
- pluginProperties.add(new PluginProperty("IPCD_INVOICE_ID", invoiceId.toString(), false));
-
- final String paymentTransactionExternalKey = MoreObjects.firstNonNull(originalPaymentTransactionExternalKey, UUIDs.randomUUID().toString());
- final Payment payment = paymentApi.createPurchaseWithPaymentControl(account,
- paymentMethodId,
- null,
- amount,
- currency,
- null,
- paymentExternalKey,
- paymentTransactionExternalKey,
- pluginProperties,
- buildPaymentOptions(paymentOptions),
- context);
-
- return getInvoicePayment(payment.getId(), paymentTransactionExternalKey, context);
+ return invoicePaymentInternalApi.createPurchaseForInvoice(true,
+ account,
+ invoiceId,
+ paymentMethodId,
+ paymentId,
+ amount,
+ currency,
+ effectiveDate,
+ paymentExternalKey,
+ paymentTransactionExternalKey,
+ properties,
+ paymentOptions,
+ internalCallContextFactory.createInternalCallContext(account.getId(), context));
}
@Override
@@ -107,7 +106,7 @@ public class DefaultInvoicePaymentApi implements InvoicePaymentApi {
effectiveDate,
paymentTransactionExternalKey,
pluginProperties,
- buildPaymentOptions(paymentOptions),
+ InvoicePaymentPaymentOptions.create(paymentOptions),
context);
return getInvoicePayment(payment.getId(), paymentTransactionExternalKey, context);
@@ -142,7 +141,7 @@ public class DefaultInvoicePaymentApi implements InvoicePaymentApi {
paymentExternalKey,
paymentTransactionExternalKey,
pluginProperties,
- buildPaymentOptions(paymentOptions),
+ InvoicePaymentPaymentOptions.create(paymentOptions),
context);
return getInvoicePayment(payment.getId(), paymentTransactionExternalKey, context);
@@ -180,44 +179,4 @@ public class DefaultInvoicePaymentApi implements InvoicePaymentApi {
}
return null;
}
-
- private PaymentOptions buildPaymentOptions(final PaymentOptions paymentOptions) {
- final List<String> paymentControlPluginNames = new LinkedList<String>();
- paymentControlPluginNames.addAll(paymentOptions.getPaymentControlPluginNames());
- if (!paymentControlPluginNames.contains(InvoicePaymentControlPluginApi.PLUGIN_NAME)) {
- paymentControlPluginNames.add(InvoicePaymentControlPluginApi.PLUGIN_NAME);
- }
-
- return new InvoicePaymentPaymentOptions(paymentOptions.isExternalPayment(), paymentControlPluginNames);
- }
-
- private static final class InvoicePaymentPaymentOptions implements PaymentOptions {
-
- private final boolean isExternalPayment;
- private final List<String> paymentControlPluginNames;
-
- public InvoicePaymentPaymentOptions(final boolean isExternalPayment, final List<String> getPaymentControlPluginNames) {
- this.isExternalPayment = isExternalPayment;
- this.paymentControlPluginNames = getPaymentControlPluginNames;
- }
-
- @Override
- public boolean isExternalPayment() {
- return isExternalPayment;
- }
-
- @Override
- public List<String> getPaymentControlPluginNames() {
- return paymentControlPluginNames;
- }
-
- @Override
- public String toString() {
- final StringBuilder sb = new StringBuilder("InvoicePaymentPaymentOptions{");
- sb.append("isExternalPayment=").append(isExternalPayment);
- sb.append(", paymentControlPluginNames=").append(paymentControlPluginNames);
- sb.append('}');
- return sb.toString();
- }
- }
}
diff --git a/payment/src/main/java/org/killbill/billing/payment/api/svcs/DefaultInvoicePaymentInternalApi.java b/payment/src/main/java/org/killbill/billing/payment/api/svcs/DefaultInvoicePaymentInternalApi.java
new file mode 100644
index 0000000..4b8313f
--- /dev/null
+++ b/payment/src/main/java/org/killbill/billing/payment/api/svcs/DefaultInvoicePaymentInternalApi.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2014-2018 Groupon, Inc
+ * Copyright 2014-2018 The Billing Project, LLC
+ *
+ * The Billing Project licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.killbill.billing.payment.api.svcs;
+
+import java.math.BigDecimal;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.UUID;
+
+import org.joda.time.DateTime;
+import org.killbill.billing.account.api.Account;
+import org.killbill.billing.callcontext.InternalCallContext;
+import org.killbill.billing.catalog.api.Currency;
+import org.killbill.billing.invoice.api.InvoiceInternalApi;
+import org.killbill.billing.invoice.api.InvoicePayment;
+import org.killbill.billing.payment.api.InvoicePaymentInternalApi;
+import org.killbill.billing.payment.api.Payment;
+import org.killbill.billing.payment.api.PaymentApiException;
+import org.killbill.billing.payment.api.PaymentOptions;
+import org.killbill.billing.payment.api.PaymentTransaction;
+import org.killbill.billing.payment.api.PluginProperty;
+import org.killbill.billing.payment.api.TransactionType;
+import org.killbill.billing.payment.core.PluginControlPaymentProcessor;
+import org.killbill.billing.util.UUIDs;
+import org.killbill.billing.util.callcontext.CallContext;
+import org.killbill.billing.util.callcontext.InternalCallContextFactory;
+import org.killbill.billing.util.callcontext.TenantContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.MoreObjects;
+import com.google.inject.Inject;
+
+import static org.killbill.billing.payment.logging.PaymentLoggingHelper.logEnterAPICall;
+import static org.killbill.billing.payment.logging.PaymentLoggingHelper.logExitAPICall;
+
+public class DefaultInvoicePaymentInternalApi implements InvoicePaymentInternalApi {
+
+ private static final Logger log = LoggerFactory.getLogger(DefaultInvoicePaymentInternalApi.class);
+
+ private final InvoiceInternalApi invoiceInternalApi;
+ private final PluginControlPaymentProcessor pluginControlPaymentProcessor;
+ private final InternalCallContextFactory internalCallContextFactory;
+
+ @Inject
+ public DefaultInvoicePaymentInternalApi(final InvoiceInternalApi invoiceInternalApi,
+ final PluginControlPaymentProcessor pluginControlPaymentProcessor,
+ final InternalCallContextFactory internalCallContextFactory) {
+ this.invoiceInternalApi = invoiceInternalApi;
+ this.pluginControlPaymentProcessor = pluginControlPaymentProcessor;
+ this.internalCallContextFactory = internalCallContextFactory;
+ }
+
+ @Override
+ public InvoicePayment createPurchaseForInvoice(final boolean isApiPayment,
+ final Account account,
+ final UUID invoiceId,
+ final UUID paymentMethodId,
+ final UUID paymentId,
+ final BigDecimal amount,
+ final Currency currency,
+ final DateTime effectiveDate,
+ final String paymentExternalKey,
+ final String originalPaymentTransactionExternalKey,
+ final Iterable<PluginProperty> originalProperties,
+ final PaymentOptions paymentOptions,
+ final InternalCallContext internalCallContext) throws PaymentApiException {
+ final Collection<PluginProperty> pluginProperties = new LinkedList<PluginProperty>();
+ if (originalProperties != null) {
+ for (final PluginProperty pluginProperty : originalProperties) {
+ pluginProperties.add(pluginProperty);
+ }
+ }
+ pluginProperties.add(new PluginProperty("IPCD_INVOICE_ID", invoiceId.toString(), false));
+
+ final String paymentTransactionExternalKey = MoreObjects.firstNonNull(originalPaymentTransactionExternalKey, UUIDs.randomUUID().toString());
+ final CallContext callContext = internalCallContextFactory.createCallContext(internalCallContext);
+
+ final List<String> paymentControlPluginNames = InvoicePaymentPaymentOptions.create(paymentOptions).getPaymentControlPluginNames();
+
+ final String transactionType = TransactionType.PURCHASE.name();
+ Payment payment = null;
+ PaymentTransaction paymentTransaction = null;
+ PaymentApiException exception = null;
+ try {
+ logEnterAPICall(log, transactionType, account, paymentMethodId, paymentId, null, amount, currency, paymentExternalKey, paymentTransactionExternalKey, null, paymentControlPluginNames);
+
+ payment = pluginControlPaymentProcessor.createPurchase(isApiPayment,
+ account,
+ paymentMethodId,
+ paymentId,
+ amount,
+ currency,
+ effectiveDate,
+ paymentExternalKey,
+ paymentTransactionExternalKey,
+ pluginProperties,
+ paymentControlPluginNames,
+ callContext,
+ internalCallContext);
+
+ paymentTransaction = payment.getTransactions().get(payment.getTransactions().size() - 1);
+ } catch (final PaymentApiException e) {
+ exception = e;
+ throw e;
+ } finally {
+ logExitAPICall(log,
+ transactionType,
+ account,
+ payment != null ? payment.getPaymentMethodId() : null,
+ payment != null ? payment.getId() : null,
+ paymentTransaction != null ? paymentTransaction.getId() : null,
+ paymentTransaction != null ? paymentTransaction.getProcessedAmount() : null,
+ paymentTransaction != null ? paymentTransaction.getProcessedCurrency() : null,
+ payment != null ? payment.getExternalKey() : null,
+ paymentTransaction != null ? paymentTransaction.getExternalKey() : null,
+ paymentTransaction != null ? paymentTransaction.getTransactionStatus() : null,
+ paymentControlPluginNames,
+ exception);
+ }
+
+ return getInvoicePayment(payment.getId(), paymentTransactionExternalKey, callContext);
+ }
+
+ private InvoicePayment getInvoicePayment(final UUID paymentId, final String paymentTransactionExternalKey, final TenantContext context) {
+ for (final InvoicePayment invoicePayment : invoiceInternalApi.getInvoicePayments(paymentId, context)) {
+ if (invoicePayment.getPaymentCookieId().compareTo(paymentTransactionExternalKey) == 0) {
+ return invoicePayment;
+ }
+ }
+ return null;
+ }
+}
diff --git a/payment/src/main/java/org/killbill/billing/payment/api/svcs/InvoicePaymentPaymentOptions.java b/payment/src/main/java/org/killbill/billing/payment/api/svcs/InvoicePaymentPaymentOptions.java
new file mode 100644
index 0000000..f6e81c8
--- /dev/null
+++ b/payment/src/main/java/org/killbill/billing/payment/api/svcs/InvoicePaymentPaymentOptions.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2014-2018 Groupon, Inc
+ * Copyright 2014-2018 The Billing Project, LLC
+ *
+ * The Billing Project licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.killbill.billing.payment.api.svcs;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.killbill.billing.payment.api.PaymentOptions;
+import org.killbill.billing.payment.invoice.InvoicePaymentControlPluginApi;
+
+public class InvoicePaymentPaymentOptions implements PaymentOptions {
+
+ private final boolean isExternalPayment;
+ private final List<String> paymentControlPluginNames;
+
+ public InvoicePaymentPaymentOptions(final boolean isExternalPayment, final List<String> getPaymentControlPluginNames) {
+ this.isExternalPayment = isExternalPayment;
+ this.paymentControlPluginNames = getPaymentControlPluginNames;
+ }
+
+ public static InvoicePaymentPaymentOptions create(final PaymentOptions paymentOptions) {
+ final List<String> paymentControlPluginNames = new LinkedList<String>();
+ paymentControlPluginNames.addAll(paymentOptions.getPaymentControlPluginNames());
+ if (!paymentControlPluginNames.contains(InvoicePaymentControlPluginApi.PLUGIN_NAME)) {
+ paymentControlPluginNames.add(InvoicePaymentControlPluginApi.PLUGIN_NAME);
+ }
+
+ return new InvoicePaymentPaymentOptions(paymentOptions.isExternalPayment(), paymentControlPluginNames);
+ }
+
+ @Override
+ public boolean isExternalPayment() {
+ return isExternalPayment;
+ }
+
+ @Override
+ public List<String> getPaymentControlPluginNames() {
+ return paymentControlPluginNames;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("InvoicePaymentPaymentOptions{");
+ sb.append("isExternalPayment=").append(isExternalPayment);
+ sb.append(", paymentControlPluginNames=").append(paymentControlPluginNames);
+ sb.append('}');
+ return sb.toString();
+ }
+}
diff --git a/payment/src/main/java/org/killbill/billing/payment/bus/PaymentBusEventHandler.java b/payment/src/main/java/org/killbill/billing/payment/bus/PaymentBusEventHandler.java
index e32b32a..4566e17 100644
--- a/payment/src/main/java/org/killbill/billing/payment/bus/PaymentBusEventHandler.java
+++ b/payment/src/main/java/org/killbill/billing/payment/bus/PaymentBusEventHandler.java
@@ -29,12 +29,11 @@ import org.killbill.billing.account.api.AccountInternalApi;
import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.events.InvoiceCreationInternalEvent;
import org.killbill.billing.events.PaymentInternalEvent;
-import org.killbill.billing.payment.api.InvoicePaymentApi;
+import org.killbill.billing.payment.api.InvoicePaymentInternalApi;
import org.killbill.billing.payment.api.PaymentApiException;
import org.killbill.billing.payment.api.PaymentOptions;
import org.killbill.billing.payment.api.PluginProperty;
import org.killbill.billing.payment.core.janitor.Janitor;
-import org.killbill.billing.util.callcontext.CallContext;
import org.killbill.billing.util.callcontext.CallOrigin;
import org.killbill.billing.util.callcontext.InternalCallContextFactory;
import org.killbill.billing.util.callcontext.UserType;
@@ -52,7 +51,7 @@ public class PaymentBusEventHandler {
private static final Logger log = LoggerFactory.getLogger(PaymentBusEventHandler.class);
private final AccountInternalApi accountApi;
- private final InvoicePaymentApi invoicePaymentApi;
+ private final InvoicePaymentInternalApi invoicePaymentInternalApi;
private final InternalCallContextFactory internalCallContextFactory;
private final PaymentConfig paymentConfig;
private final Janitor janitor;
@@ -60,12 +59,12 @@ public class PaymentBusEventHandler {
@Inject
public PaymentBusEventHandler(final PaymentConfig paymentConfig,
final AccountInternalApi accountApi,
- final InvoicePaymentApi invoicePaymentApi,
+ final InvoicePaymentInternalApi invoicePaymentInternalApi,
final Janitor janitor,
final InternalCallContextFactory internalCallContextFactory) {
this.paymentConfig = paymentConfig;
this.accountApi = accountApi;
- this.invoicePaymentApi = invoicePaymentApi;
+ this.invoicePaymentInternalApi = invoicePaymentInternalApi;
this.janitor = janitor;
this.internalCallContextFactory = internalCallContextFactory;
}
@@ -82,37 +81,37 @@ public class PaymentBusEventHandler {
log.info("Received invoice creation notification for accountId='{}', invoiceId='{}'", event.getAccountId(), event.getInvoiceId());
final InternalCallContext internalContext = internalCallContextFactory.createInternalCallContext(event.getSearchKey2(), event.getSearchKey1(), "PaymentRequestProcessor", CallOrigin.INTERNAL, UserType.SYSTEM, event.getUserToken());
- final CallContext callContext = internalCallContextFactory.createCallContext(internalContext);
final BigDecimal amountToBePaid = null; // We let the plugin compute how much should be paid
final List<String> paymentControlPluginNames = paymentConfig.getPaymentControlPluginNames(internalContext) != null ? new LinkedList<String>(paymentConfig.getPaymentControlPluginNames(internalContext)) : new LinkedList<String>();
- Account account;
+ final Account account;
try {
account = accountApi.getAccountById(event.getAccountId(), internalContext);
- invoicePaymentApi.createPurchaseForInvoice(account,
- event.getInvoiceId(),
- account.getPaymentMethodId(),
- null,
- amountToBePaid,
- account.getCurrency(),
- null,
- null,
- null,
- ImmutableList.<PluginProperty>of(),
- new PaymentOptions() {
- @Override
- public boolean isExternalPayment() {
- return false;
- }
-
- @Override
- public List<String> getPaymentControlPluginNames() {
- return paymentControlPluginNames;
- }
- },
- callContext);
+ invoicePaymentInternalApi.createPurchaseForInvoice(false,
+ account,
+ event.getInvoiceId(),
+ account.getPaymentMethodId(),
+ null,
+ amountToBePaid,
+ account.getCurrency(),
+ null,
+ null,
+ null,
+ ImmutableList.<PluginProperty>of(),
+ new PaymentOptions() {
+ @Override
+ public boolean isExternalPayment() {
+ return false;
+ }
+
+ @Override
+ public List<String> getPaymentControlPluginNames() {
+ return paymentControlPluginNames;
+ }
+ },
+ internalContext);
} catch (final AccountApiException e) {
log.warn("Failed to process invoice payment", e);
} catch (final PaymentApiException e) {
diff --git a/payment/src/main/java/org/killbill/billing/payment/glue/PaymentModule.java b/payment/src/main/java/org/killbill/billing/payment/glue/PaymentModule.java
index 92f7235..d9d06b0 100644
--- a/payment/src/main/java/org/killbill/billing/payment/glue/PaymentModule.java
+++ b/payment/src/main/java/org/killbill/billing/payment/glue/PaymentModule.java
@@ -23,6 +23,7 @@ import javax.inject.Provider;
import org.killbill.automaton.DefaultStateMachineConfig;
import org.killbill.automaton.StateMachineConfig;
import org.killbill.billing.control.plugin.api.PaymentControlPluginApi;
+import org.killbill.billing.invoice.api.InvoiceInternalApi;
import org.killbill.billing.osgi.api.OSGIServiceRegistration;
import org.killbill.billing.payment.api.AdminPaymentApi;
import org.killbill.billing.payment.api.DefaultAdminPaymentApi;
@@ -30,9 +31,11 @@ import org.killbill.billing.payment.api.DefaultInvoicePaymentApi;
import org.killbill.billing.payment.api.DefaultPaymentApi;
import org.killbill.billing.payment.api.DefaultPaymentGatewayApi;
import org.killbill.billing.payment.api.InvoicePaymentApi;
+import org.killbill.billing.payment.api.InvoicePaymentInternalApi;
import org.killbill.billing.payment.api.PaymentApi;
import org.killbill.billing.payment.api.PaymentGatewayApi;
import org.killbill.billing.payment.api.PaymentService;
+import org.killbill.billing.payment.api.svcs.DefaultInvoicePaymentInternalApi;
import org.killbill.billing.payment.bus.PaymentBusEventHandler;
import org.killbill.billing.payment.config.MultiTenantPaymentConfig;
import org.killbill.billing.payment.caching.EhCacheStateMachineConfigCache;
@@ -154,6 +157,7 @@ public class PaymentModule extends KillBillModule {
bind(PaymentApi.class).to(DefaultPaymentApi.class).asEagerSingleton();
bind(InvoicePaymentApi.class).to(DefaultInvoicePaymentApi.class).asEagerSingleton();
+ bind(InvoicePaymentInternalApi.class).to(DefaultInvoicePaymentInternalApi.class).asEagerSingleton();
bind(PaymentGatewayApi.class).to(DefaultPaymentGatewayApi.class).asEagerSingleton();
bind(AdminPaymentApi.class).to(DefaultAdminPaymentApi.class).asEagerSingleton();
bind(PaymentBusEventHandler.class).asEagerSingleton();
diff --git a/payment/src/test/java/org/killbill/billing/payment/TestRetryService.java b/payment/src/test/java/org/killbill/billing/payment/TestRetryService.java
index 377bec1..8780762 100644
--- a/payment/src/test/java/org/killbill/billing/payment/TestRetryService.java
+++ b/payment/src/test/java/org/killbill/billing/payment/TestRetryService.java
@@ -19,7 +19,6 @@
package org.killbill.billing.payment;
import java.math.BigDecimal;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -36,7 +35,6 @@ import org.killbill.billing.payment.api.PaymentApiException;
import org.killbill.billing.payment.api.PluginProperty;
import org.killbill.billing.payment.dao.PaymentAttemptModelDao;
import org.killbill.billing.payment.dao.PaymentTransactionModelDao;
-import org.killbill.billing.payment.invoice.InvoicePaymentControlPluginApi;
import org.killbill.billing.payment.provider.MockPaymentProviderPlugin;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
@@ -55,6 +53,7 @@ import static org.testng.Assert.assertTrue;
public class TestRetryService extends PaymentTestSuiteNoDB {
private static final int TIMEOUT = 10;
+ private static final ImmutableList<PluginProperty> NO_PROPERTIES = ImmutableList.<PluginProperty>of();
private MockPaymentProviderPlugin mockPaymentProviderPlugin;
@@ -128,7 +127,7 @@ public class TestRetryService extends PaymentTestSuiteNoDB {
null,
paymentExternalKey,
transactionExternalKey,
- ImmutableList.<PluginProperty>of(),
+ NO_PROPERTIES,
PAYMENT_OPTIONS,
callContext);
} catch (final PaymentApiException e) {
@@ -183,7 +182,7 @@ public class TestRetryService extends PaymentTestSuiteNoDB {
null,
paymentExternalKey,
transactionExternalKey,
- ImmutableList.<PluginProperty>of(),
+ NO_PROPERTIES,
PAYMENT_OPTIONS,
callContext);
@@ -266,7 +265,7 @@ public class TestRetryService extends PaymentTestSuiteNoDB {
null,
paymentExternalKey,
transactionExternalKey,
- ImmutableList.<PluginProperty>of(),
+ NO_PROPERTIES,
PAYMENT_OPTIONS,
callContext);
@@ -359,7 +358,7 @@ public class TestRetryService extends PaymentTestSuiteNoDB {
null,
paymentExternalKey,
transactionExternalKey,
- ImmutableList.<PluginProperty>of(),
+ NO_PROPERTIES,
PAYMENT_OPTIONS,
callContext);