killbill-memoizeit
Changes
beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentInvoiceIntegration.java 2(+1 -1)
beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentProvider.java 2(+1 -1)
Details
diff --git a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java
index 17b3c14..e4dff64 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java
@@ -24,7 +24,7 @@ import com.ning.billing.dbi.MysqlTestingHelper;
import com.ning.billing.entitlement.glue.DefaultEntitlementModule;
import com.ning.billing.invoice.glue.DefaultInvoiceModule;
import com.ning.billing.junction.glue.DefaultJunctionModule;
-import com.ning.billing.payment.setup.PaymentModule;
+import com.ning.billing.payment.glue.PaymentModule;
import com.ning.billing.util.email.EmailModule;
import com.ning.billing.util.email.templates.TemplateModule;
import com.ning.billing.util.glue.BusModule;
diff --git a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
index 43e046f..d0a8d7f 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
@@ -285,8 +285,7 @@ public class TestAnalyticsService {
final PaymentAttempt paymentAttempt = new DefaultPaymentAttempt(UUID.randomUUID(), invoice.getId(), account.getId(), BigDecimal.TEN,
ACCOUNT_CURRENCY, clock.getUTCNow(), clock.getUTCNow(), paymentInfoNotification.getId(), 1, new DateTime(), new DateTime(), PaymentAttemptStatus.COMPLETED_SUCCESS);
paymentDao.createPaymentAttempt(paymentAttempt, PaymentAttemptStatus.COMPLETED_SUCCESS, context);
- paymentDao.savePaymentInfo(paymentInfoNotification, context);
- paymentDao.updatePaymentAttemptWithPaymentId(paymentAttempt.getId(), paymentInfoNotification.getId(), context);
+ paymentDao.insertPaymentInfoWithPaymentAttemptUpdate(paymentInfoNotification, paymentAttempt.getId(), context);
Assert.assertEquals(paymentDao.getPaymentInfoList(Arrays.asList(invoice.getId())).size(), 1);
}
diff --git a/api/src/main/java/com/ning/billing/payment/api/CreditCardPaymentMethodInfo.java b/api/src/main/java/com/ning/billing/payment/api/CreditCardPaymentMethodInfo.java
index bc3d372..6af0430 100644
--- a/api/src/main/java/com/ning/billing/payment/api/CreditCardPaymentMethodInfo.java
+++ b/api/src/main/java/com/ning/billing/payment/api/CreditCardPaymentMethodInfo.java
@@ -21,6 +21,9 @@ import org.codehaus.jackson.annotate.JsonProperty;
public final class CreditCardPaymentMethodInfo extends PaymentMethodInfo {
+
+ public static final String TYPE = "CreditCard";
+
private final String cardHolderName;
private final String cardType;
private final String expirationDate;
@@ -47,7 +50,7 @@ public final class CreditCardPaymentMethodInfo extends PaymentMethodInfo {
@JsonProperty("cardPostalCode") String cardPostalCode,
@JsonProperty("cardCountry") String cardCountry) {
- super(id, accountId, defaultMethod, "CreditCard");
+ super(id, accountId, defaultMethod, TYPE);
this.cardHolderName = cardHolderName;
this.cardType = cardType;
this.expirationDate = expirationDate;
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentMethodInfo.java b/api/src/main/java/com/ning/billing/payment/api/PaymentMethodInfo.java
index bf3abe9..a2a3a01 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentMethodInfo.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentMethodInfo.java
@@ -16,7 +16,6 @@
package com.ning.billing.payment.api;
-import java.util.UUID;
import com.google.common.base.Objects;
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaypalPaymentMethodInfo.java b/api/src/main/java/com/ning/billing/payment/api/PaypalPaymentMethodInfo.java
index 3b2ebed..c8d1342 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaypalPaymentMethodInfo.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaypalPaymentMethodInfo.java
@@ -23,6 +23,7 @@ import com.google.common.base.Strings;
public final class PaypalPaymentMethodInfo extends PaymentMethodInfo {
+
public static final String TYPE = "PayPal";
public static final class Builder extends BuilderBase<PaypalPaymentMethodInfo, Builder> {
diff --git a/api/src/main/java/com/ning/billing/payment/plugin/api/PaymentInfoPlugin.java b/api/src/main/java/com/ning/billing/payment/plugin/api/PaymentInfoPlugin.java
index 8f1117b..2f76e99 100644
--- a/api/src/main/java/com/ning/billing/payment/plugin/api/PaymentInfoPlugin.java
+++ b/api/src/main/java/com/ning/billing/payment/plugin/api/PaymentInfoPlugin.java
@@ -32,12 +32,6 @@ public interface PaymentInfoPlugin {
public String getPaymentNumber();
- public String getPaymentMethod();
-
- public String getCardType();
-
- public String getCardCountry();
-
public String getReferenceId();
public String getPaymentMethodId();
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixModule.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixModule.java
index 420483c..9f7b259 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixModule.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixModule.java
@@ -48,8 +48,8 @@ import com.ning.billing.junction.glue.DefaultJunctionModule;
import com.ning.billing.lifecycle.KillbillService;
import com.ning.billing.overdue.OverdueService;
import com.ning.billing.payment.api.PaymentService;
+import com.ning.billing.payment.glue.PaymentModule;
import com.ning.billing.payment.provider.MockPaymentProviderPluginModule;
-import com.ning.billing.payment.setup.PaymentModule;
import com.ning.billing.util.bus.BusService;
import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.clock.ClockMock;
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/PaymentTestModule.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/PaymentTestModule.java
index d444776..69fec1f 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/PaymentTestModule.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/PaymentTestModule.java
@@ -29,8 +29,8 @@ import com.ning.billing.junction.api.BillingApi;
import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.payment.dao.MockPaymentDao;
import com.ning.billing.payment.dao.PaymentDao;
+import com.ning.billing.payment.glue.PaymentModule;
import com.ning.billing.payment.provider.MockPaymentProviderPluginModule;
-import com.ning.billing.payment.setup.PaymentModule;
import com.ning.billing.util.bus.Bus;
import com.ning.billing.util.bus.InMemoryBus;
import com.ning.billing.util.notificationq.MockNotificationQueueService;
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentInvoiceIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentInvoiceIntegration.java
index ef7571e..ae7400b 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentInvoiceIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentInvoiceIntegration.java
@@ -52,7 +52,7 @@ import com.ning.billing.payment.api.PaymentApi;
import com.ning.billing.payment.api.PaymentAttempt;
import com.ning.billing.payment.api.PaymentErrorEvent;
import com.ning.billing.payment.api.PaymentInfoEvent;
-import com.ning.billing.payment.setup.PaymentTestModuleWithEmbeddedDb;
+import com.ning.billing.payment.glue.PaymentTestModuleWithEmbeddedDb;
import com.ning.billing.util.bus.Bus;
import com.ning.billing.util.bus.Bus.EventBusException;
import com.ning.billing.util.glue.CallContextModule;
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentProvider.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentProvider.java
index 44ba8f0..27f5988 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentProvider.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/payment/TestPaymentProvider.java
@@ -40,7 +40,7 @@ import com.ning.billing.mock.glue.MockJunctionModule;
import com.ning.billing.payment.RequestProcessor;
import com.ning.billing.payment.api.PaymentErrorEvent;
import com.ning.billing.payment.api.PaymentInfoEvent;
-import com.ning.billing.payment.setup.PaymentTestModuleWithMocks;
+import com.ning.billing.payment.glue.PaymentTestModuleWithMocks;
import com.ning.billing.util.bus.Bus;
import com.ning.billing.util.bus.Bus.EventBusException;
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
index 8bb7692..1e2c2f3 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
@@ -36,6 +36,7 @@ import com.ning.billing.invoice.api.InvoicePaymentApi;
import com.ning.billing.payment.api.PaymentAttempt.PaymentAttemptStatus;
import com.ning.billing.payment.dao.PaymentDao;
+import com.ning.billing.payment.plugin.api.PaymentInfoPlugin;
import com.ning.billing.payment.plugin.api.PaymentPluginApiException;
import com.ning.billing.payment.plugin.api.PaymentProviderPlugin;
import com.ning.billing.payment.provider.PaymentProviderPluginRegistry;
@@ -296,27 +297,26 @@ public class DefaultPaymentApi implements PaymentApi {
PaymentInfoEvent paymentInfo = null;
BusEvent event = null;
try {
- paymentInfo = new DefaultPaymentInfoEvent(plugin.processInvoice(account, invoice), account.getId(), invoice.getId());
-
- paymentDao.savePaymentInfo(paymentInfo, context);
+
+ PaymentInfoPlugin paymentPluginInfo = plugin.processInvoice(account, invoice);
+ final String paymentMethodId = paymentPluginInfo.getPaymentMethodId();
- final String paymentMethodId = paymentInfo.getPaymentMethodId();
log.debug("Fetching payment method info for payment method id " + ((paymentMethodId == null) ? "null" : paymentMethodId));
PaymentMethodInfo paymentMethodInfo = plugin.getPaymentMethodInfo(paymentMethodId);
if (paymentMethodInfo instanceof CreditCardPaymentMethodInfo) {
CreditCardPaymentMethodInfo ccPaymentMethod = (CreditCardPaymentMethodInfo)paymentMethodInfo;
- paymentDao.updatePaymentInfo(ccPaymentMethod.getType(), paymentInfo.getId(), ccPaymentMethod.getCardType(), ccPaymentMethod.getCardCountry(), context);
-
+ paymentInfo = new DefaultPaymentInfoEvent(paymentPluginInfo, ccPaymentMethod ,account.getId(), invoice.getId());
} else if (paymentMethodInfo instanceof PaypalPaymentMethodInfo) {
PaypalPaymentMethodInfo paypalPaymentMethodInfo = (PaypalPaymentMethodInfo)paymentMethodInfo;
- paymentDao.updatePaymentInfo(paypalPaymentMethodInfo.getType(), paymentInfo.getId(), null, null, context);
- }
- if (paymentInfo.getId() != null) {
- paymentDao.updatePaymentAttemptWithPaymentId(paymentAttempt.getId(), paymentInfo.getId(), context);
+ paymentInfo = new DefaultPaymentInfoEvent(paymentPluginInfo, paypalPaymentMethodInfo ,account.getId(), invoice.getId());
+ } else {
+ paymentInfo = new DefaultPaymentInfoEvent(paymentPluginInfo, account.getId(), invoice.getId());
}
+ paymentDao.insertPaymentInfoWithPaymentAttemptUpdate(paymentInfo, paymentAttempt.getId(), context);
+
invoicePaymentApi.notifyOfPaymentAttempt(invoice.getId(),
paymentInfo == null || paymentInfo.getStatus().equalsIgnoreCase("Error") ? null : paymentInfo.getAmount(),
/*paymentInfo.getRefundAmount(), */
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentInfoEvent.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentInfoEvent.java
index eb48f30..d10cc17 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentInfoEvent.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentInfoEvent.java
@@ -112,10 +112,68 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
}
+ public DefaultPaymentInfoEvent(PaymentInfoPlugin info, CreditCardPaymentMethodInfo methodInfo, UUID accountId, UUID invoiceId) {
+ this(UUID.randomUUID(),
+ accountId,
+ invoiceId,
+ info.getAmount(),
+ info.getRefundAmount(),
+ info.getBankIdentificationNumber(),
+ info.getPaymentNumber(),
+ info.getStatus(),
+ info.getType(),
+ info.getReferenceId(),
+ info.getPaymentMethodId(),
+ methodInfo.getType(),
+ methodInfo.getCardType(),
+ methodInfo.getCardCountry(),
+ null,
+ info.getEffectiveDate(),
+ info.getCreatedDate(),
+ info.getUpdatedDate());
+ }
+
+
+ public DefaultPaymentInfoEvent(PaymentInfoPlugin info, PaypalPaymentMethodInfo methodInfo, UUID accountId, UUID invoiceId) {
+ this(UUID.randomUUID(),
+ accountId,
+ invoiceId,
+ info.getAmount(),
+ info.getRefundAmount(),
+ info.getBankIdentificationNumber(),
+ info.getPaymentNumber(),
+ info.getStatus(),
+ info.getType(),
+ info.getReferenceId(),
+ info.getPaymentMethodId(),
+ methodInfo.getType(),
+ null,
+ null,
+ null,
+ info.getEffectiveDate(),
+ info.getCreatedDate(),
+ info.getUpdatedDate());
+ }
+
public DefaultPaymentInfoEvent(PaymentInfoPlugin info, UUID accountId, UUID invoiceId) {
- this(UUID.randomUUID(), accountId, invoiceId, info.getAmount(), info.getRefundAmount(), info.getBankIdentificationNumber(), info.getPaymentNumber(),
- info.getStatus(), info.getCardType(), info.getReferenceId(), info.getPaymentMethodId(), info.getPaymentMethod(), info.getCardType(), info.getCardCountry(),
- null, info.getEffectiveDate(), info.getCreatedDate(), info.getUpdatedDate());
+ this(UUID.randomUUID(),
+ accountId,
+ invoiceId,
+ info.getAmount(),
+ info.getRefundAmount(),
+ info.getBankIdentificationNumber(),
+ info.getPaymentNumber(),
+ info.getStatus(),
+ info.getType(),
+ info.getReferenceId(),
+ info.getPaymentMethodId(),
+ null,
+ null,
+ null,
+ null,
+ info.getEffectiveDate(),
+ info.getCreatedDate(),
+ info.getUpdatedDate());
}
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/AuditedPaymentDao.java b/payment/src/main/java/com/ning/billing/payment/dao/AuditedPaymentDao.java
index 27f5ba1..52595d3 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/AuditedPaymentDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/AuditedPaymentDao.java
@@ -104,67 +104,42 @@ public class AuditedPaymentDao implements PaymentDao {
}
});
}
-
+
@Override
- public void savePaymentInfo(final PaymentInfoEvent info, final CallContext context) {
+ public void insertPaymentInfoWithPaymentAttemptUpdate(final PaymentInfoEvent paymentInfo, final UUID paymentAttemptId, final CallContext context) {
+
paymentSqlDao.inTransaction(new Transaction<Void, PaymentSqlDao>() {
@Override
public Void inTransaction(PaymentSqlDao transactional, TransactionStatus status) throws Exception {
- transactional.insertPaymentInfo(info, context);
- Long recordId = transactional.getRecordId(info.getId().toString());
- EntityHistory<PaymentInfoEvent> history = new EntityHistory<PaymentInfoEvent>(info.getId(), recordId, info, ChangeType.INSERT);
+
+ transactional.insertPaymentInfo(paymentInfo, context);
+ Long recordId = transactional.getRecordId(paymentInfo.getId().toString());
+ EntityHistory<PaymentInfoEvent> history = new EntityHistory<PaymentInfoEvent>(paymentInfo.getId(), recordId, paymentInfo, ChangeType.INSERT);
transactional.insertHistoryFromTransaction(history, context);
Long historyRecordId = transactional.getHistoryRecordId(recordId);
EntityAudit audit = new EntityAudit(TableName.PAYMENTS, historyRecordId, ChangeType.INSERT);
transactional.insertAuditFromTransaction(audit, context);
- return null;
- }
- });
- }
- @Override
- public void updatePaymentAttemptWithPaymentId(final UUID paymentAttemptId, final UUID id, final CallContext context) {
- paymentAttemptSqlDao.inTransaction(new Transaction<Void, PaymentAttemptSqlDao>() {
- @Override
- public Void inTransaction(PaymentAttemptSqlDao transactional, TransactionStatus status) throws Exception {
- transactional.updatePaymentAttemptWithPaymentId(paymentAttemptId.toString(), id.toString(), context);
- PaymentAttempt paymentAttempt = transactional.getPaymentAttemptById(paymentAttemptId.toString());
- Long recordId = transactional.getRecordId(paymentAttemptId.toString());
- EntityHistory<PaymentAttempt> history = new EntityHistory<PaymentAttempt>(paymentAttemptId, recordId, paymentAttempt, ChangeType.UPDATE);
- transactional.insertHistoryFromTransaction(history, context);
+ if (paymentInfo.getId() != null && paymentAttemptId != null) {
+ PaymentAttemptSqlDao transAttemptSqlDao = transactional.become(PaymentAttemptSqlDao.class);
- Long historyRecordId = transactional.getHistoryRecordId(recordId);
- EntityAudit audit = new EntityAudit(TableName.PAYMENT_ATTEMPTS, historyRecordId, ChangeType.UPDATE);
- transactional.insertAuditFromTransaction(audit, context);
+ transAttemptSqlDao.updatePaymentAttemptWithPaymentId(paymentAttemptId.toString(), paymentInfo.getId().toString(), context);
+ PaymentAttempt paymentAttempt = transAttemptSqlDao.getPaymentAttemptById(paymentAttemptId.toString());
+ recordId = transAttemptSqlDao.getRecordId(paymentAttemptId.toString());
+ EntityHistory<PaymentAttempt> historyAttempt = new EntityHistory<PaymentAttempt>(paymentAttemptId, recordId, paymentAttempt, ChangeType.UPDATE);
+ transAttemptSqlDao.insertHistoryFromTransaction(historyAttempt, context);
+ historyRecordId = transAttemptSqlDao.getHistoryRecordId(recordId);
+ audit = new EntityAudit(TableName.PAYMENT_ATTEMPTS, historyRecordId, ChangeType.UPDATE);
+ transAttemptSqlDao.insertAuditFromTransaction(audit, context);
+ }
return null;
}
});
}
- @Override
- public void updatePaymentInfo(final String type, final UUID paymentId, final String cardType,
- final String cardCountry, final CallContext context) {
- paymentSqlDao.inTransaction(new Transaction<Void, PaymentSqlDao>() {
- @Override
- public Void inTransaction(PaymentSqlDao transactional, TransactionStatus status) throws Exception {
- transactional.updatePaymentInfo(type, paymentId.toString(), cardType, cardCountry, context);
- PaymentInfoEvent paymentInfo = transactional.getPaymentInfo(paymentId.toString());
-
- Long recordId = transactional.getRecordId(paymentId.toString());
- EntityHistory<PaymentInfoEvent> history = new EntityHistory<PaymentInfoEvent>(paymentInfo.getId(), recordId, paymentInfo, ChangeType.UPDATE);
- transactional.insertHistoryFromTransaction(history, context);
-
- Long historyRecordId = transactional.getHistoryRecordId(recordId);
- EntityAudit audit = new EntityAudit(TableName.PAYMENT_HISTORY, historyRecordId, ChangeType.UPDATE);
- transactional.insertAuditFromTransaction(audit, context);
-
- return null;
- }
- });
- }
@Override
public List<PaymentInfoEvent> getPaymentInfoList(List<UUID> invoiceIds) {
@@ -211,5 +186,4 @@ public class AuditedPaymentDao implements PaymentDao {
}
}));
}
-
}
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentDao.java
index 21abc8e..bceafd4 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentDao.java
@@ -30,17 +30,14 @@ public interface PaymentDao {
PaymentAttempt createPaymentAttempt(Invoice invoice, PaymentAttemptStatus status, CallContext context);
PaymentAttempt createPaymentAttempt(PaymentAttempt paymentAttempt, PaymentAttemptStatus status, CallContext context);
- void savePaymentInfo(PaymentInfoEvent right, CallContext context);
-
+ void insertPaymentInfoWithPaymentAttemptUpdate(PaymentInfoEvent paymentInfo, UUID paymentAttemptId, CallContext context);
+
+
PaymentAttempt getPaymentAttemptForPaymentId(UUID paymentId);
List<PaymentAttempt> getPaymentAttemptsForInvoiceIds(List<UUID> invoiceIds);
- void updatePaymentAttemptWithPaymentId(UUID paymentAttemptId, UUID paymentId, CallContext context);
-
List<PaymentAttempt> getPaymentAttemptsForInvoiceId(UUID invoiceId);
- void updatePaymentInfo(String paymentMethodType, UUID paymentId, String cardType, String cardCountry, CallContext context);
-
List<PaymentInfoEvent> getPaymentInfoList(List<UUID> invoiceIds);
PaymentInfoEvent getLastPaymentInfo(List<UUID> invoiceIds);
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
index 18ae0f4..f5a79af 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
@@ -38,6 +38,7 @@ import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import org.skife.jdbi.v2.sqlobject.mixins.CloseMe;
import org.skife.jdbi.v2.sqlobject.mixins.Transactional;
+import org.skife.jdbi.v2.sqlobject.mixins.Transmogrifier;
import org.skife.jdbi.v2.sqlobject.stringtemplate.ExternalizedSqlViaStringTemplate3;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.skife.jdbi.v2.unstable.BindIn;
@@ -48,7 +49,7 @@ import com.ning.billing.payment.api.PaymentInfoEvent;
@ExternalizedSqlViaStringTemplate3()
@RegisterMapper(PaymentSqlDao.PaymentInfoMapper.class)
-public interface PaymentSqlDao extends Transactional<PaymentSqlDao>, UpdatableEntitySqlDao<PaymentInfoEvent>, CloseMe {
+public interface PaymentSqlDao extends Transactional<PaymentSqlDao>, UpdatableEntitySqlDao<PaymentInfoEvent>, Transmogrifier, CloseMe {
@SqlQuery
PaymentInfoEvent getPaymentInfoForPaymentAttemptId(@Bind("payment_attempt_id") String paymentAttemptId);
diff --git a/payment/src/main/java/com/ning/billing/payment/provider/NoOpPaymentProviderPlugin.java b/payment/src/main/java/com/ning/billing/payment/provider/NoOpPaymentProviderPlugin.java
index 296731f..6a40b84 100644
--- a/payment/src/main/java/com/ning/billing/payment/provider/NoOpPaymentProviderPlugin.java
+++ b/payment/src/main/java/com/ning/billing/payment/provider/NoOpPaymentProviderPlugin.java
@@ -76,10 +76,6 @@ public class NoOpPaymentProviderPlugin implements PaymentProviderPlugin {
return null;
}
@Override
- public String getPaymentMethod() {
- return null;
- }
- @Override
public DateTime getEffectiveDate() {
return null;
}
@@ -88,14 +84,6 @@ public class NoOpPaymentProviderPlugin implements PaymentProviderPlugin {
return new DateTime(DateTimeZone.UTC);
}
@Override
- public String getCardType() {
- return null;
- }
- @Override
- public String getCardCountry() {
- return null;
- }
- @Override
public String getBankIdentificationNumber() {
return null;
}
diff --git a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
index e3335df..14afbc1 100644
--- a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
@@ -91,10 +91,6 @@ public class RequestProcessor {
Account account = null;
try {
account = accountUserApi.getAccountById(event.getAccountId());
- if (account == null) {
- log.error("Failed to process invoice, account {} does not exist!", event.getAccountId());
- return;
- }
if (isAccountAutoPayOff(account.getId())) {
return;
}
diff --git a/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java b/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java
index bda4a6f..7fb8d39 100644
--- a/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java
+++ b/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java
@@ -22,7 +22,7 @@ import org.testng.annotations.Test;
import com.google.inject.Inject;
import com.ning.billing.mock.glue.MockClockModule;
import com.ning.billing.mock.glue.MockJunctionModule;
-import com.ning.billing.payment.setup.PaymentTestModuleWithMocks;
+import com.ning.billing.payment.glue.PaymentTestModuleWithMocks;
import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.glue.CallContextModule;
diff --git a/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java b/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java
index ca341bd..d47f490 100644
--- a/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java
+++ b/payment/src/test/java/com/ning/billing/payment/dao/MockPaymentDao.java
@@ -74,43 +74,30 @@ public class MockPaymentDao implements PaymentDao {
}
@Override
- public void savePaymentInfo(PaymentInfoEvent paymentInfo, CallContext context) {
- payments.put(paymentInfo.getId(), paymentInfo);
- }
-
- @Override
- public void updatePaymentAttemptWithPaymentId(UUID paymentAttemptId, UUID paymentId, CallContext context) {
- PaymentAttempt existingPaymentAttempt = paymentAttempts.get(paymentAttemptId);
+ public void insertPaymentInfoWithPaymentAttemptUpdate(PaymentInfoEvent paymentInfo, UUID paymentAttemptId,
+ CallContext context) {
- if (existingPaymentAttempt != null) {
- paymentAttempts.put(existingPaymentAttempt.getId(),
- ((DefaultPaymentAttempt) existingPaymentAttempt).cloner().setPaymentId(paymentId).build());
+ payments.put(paymentInfo.getId(), paymentInfo);
+ if (paymentAttemptId != null) {
+ PaymentAttempt existingPaymentAttempt = paymentAttempts.get(paymentAttemptId);
+ if (existingPaymentAttempt != null) {
+ paymentAttempts.put(existingPaymentAttempt.getId(),
+ ((DefaultPaymentAttempt) existingPaymentAttempt).cloner().setPaymentId(paymentInfo.getId()).build());
+ }
}
}
@Override
public List<PaymentAttempt> getPaymentAttemptsForInvoiceId(final UUID invoiceId) {
Collection<PaymentAttempt> attempts = Collections2.filter(paymentAttempts.values(), new Predicate<PaymentAttempt>() {
- @Override
- public boolean apply(PaymentAttempt input) {
- return invoiceId.equals(input.getInvoiceId());
- }
- });
+ @Override
+ public boolean apply(PaymentAttempt input) {
+ return invoiceId.equals(input.getInvoiceId());
+ }
+ });
return new ArrayList<PaymentAttempt>(attempts);
}
- @Override
- public void updatePaymentInfo(String paymentMethodType, UUID paymentId, String cardType, String cardCountry, CallContext context) {
- DefaultPaymentInfoEvent existingPayment = (DefaultPaymentInfoEvent) payments.get(paymentId);
- if (existingPayment != null) {
- PaymentInfoEvent payment = existingPayment.cloner()
- .setPaymentMethod(paymentMethodType)
- .setCardType(cardType)
- .setCardCountry(cardCountry)
- .build();
- payments.put(paymentId, payment);
- }
- }
@Override
public List<PaymentInfoEvent> getPaymentInfoList(List<UUID> invoiceIds) {
@@ -165,4 +152,5 @@ public class MockPaymentDao implements PaymentDao {
return null;
}
+
}
diff --git a/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java b/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
index 9960ab7..7c74182 100644
--- a/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
+++ b/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
@@ -57,7 +57,7 @@ public abstract class TestPaymentDao {
.setEffectiveDate(new DefaultClock().getUTCNow())
.build();
- paymentDao.savePaymentInfo(paymentInfo, context);
+ paymentDao.insertPaymentInfoWithPaymentAttemptUpdate(paymentInfo, null, context);
}
@Test(groups={"slow"})
@@ -74,8 +74,7 @@ public abstract class TestPaymentDao {
.build();
CallContext context = new TestCallContext("PaymentTests");
- paymentDao.savePaymentInfo(paymentInfo, context);
- paymentDao.updatePaymentInfo("CreditCard", paymentInfo.getId(), "Visa", "US", context);
+ paymentDao.insertPaymentInfoWithPaymentAttemptUpdate(paymentInfo, null, context);
}
@Test(groups={"slow"})
@@ -132,16 +131,8 @@ public abstract class TestPaymentDao {
.setEffectiveDate(clock.getUTCNow())
.build();
- paymentDao.savePaymentInfo(originalPaymentInfo, thisContext);
- paymentDao.updatePaymentAttemptWithPaymentId(originalPaymentAttempt.getId(), originalPaymentInfo.getId(), thisContext);
+ paymentDao.insertPaymentInfoWithPaymentAttemptUpdate(originalPaymentInfo, originalPaymentAttempt.getId(), thisContext);
PaymentInfoEvent paymentInfo = paymentDao.getPaymentInfoList(Arrays.asList(invoiceId)).get(0);
Assert.assertEquals(paymentInfo, originalPaymentInfo);
-
- clock.setDeltaFromReality(60 * 60 * 1000); // move clock forward one hour
- paymentDao.updatePaymentInfo(originalPaymentInfo.getPaymentMethod(), originalPaymentInfo.getId(), originalPaymentInfo.getCardType(), originalPaymentInfo.getCardCountry(), thisContext);
- paymentInfo = paymentDao.getPaymentInfoList(Arrays.asList(invoiceId)).get(0);
- // TODO: replace these asserts
-// Assert.assertEquals(paymentInfo.getCreatedDate().compareTo(attempt.getCreatedDate()), 0);
-// Assert.assertTrue(paymentInfo.getUpdatedDate().isAfter(originalPaymentInfo.getUpdatedDate()));
}
}
diff --git a/payment/src/test/java/com/ning/billing/payment/plugin/api/MockPaymentInfoPlugin.java b/payment/src/test/java/com/ning/billing/payment/plugin/api/MockPaymentInfoPlugin.java
index 8d4428e..a65a66b 100644
--- a/payment/src/test/java/com/ning/billing/payment/plugin/api/MockPaymentInfoPlugin.java
+++ b/payment/src/test/java/com/ning/billing/payment/plugin/api/MockPaymentInfoPlugin.java
@@ -85,21 +85,6 @@ public class MockPaymentInfoPlugin implements PaymentInfoPlugin {
}
@Override
- public String getPaymentMethod() {
- return paymentMethod;
- }
-
- @Override
- public String getCardType() {
- return cardType;
- }
-
- @Override
- public String getCardCountry() {
- return cardCountry;
- }
-
- @Override
public String getReferenceId() {
return referenceId;
}
diff --git a/payment/src/test/java/com/ning/billing/payment/TestRetryService.java b/payment/src/test/java/com/ning/billing/payment/TestRetryService.java
index 47f16df..cceaccb 100644
--- a/payment/src/test/java/com/ning/billing/payment/TestRetryService.java
+++ b/payment/src/test/java/com/ning/billing/payment/TestRetryService.java
@@ -55,11 +55,11 @@ import com.ning.billing.payment.api.PaymentInfoEvent;
import com.ning.billing.payment.api.PaymentStatus;
import com.ning.billing.payment.api.PaymentAttempt.PaymentAttemptStatus;
import com.ning.billing.payment.dao.PaymentDao;
+import com.ning.billing.payment.glue.PaymentTestModuleWithMocks;
import com.ning.billing.payment.provider.MockPaymentProviderPlugin;
import com.ning.billing.payment.provider.DefaultPaymentProviderPluginRegistry;
import com.ning.billing.payment.provider.PaymentProviderPluginRegistry;
import com.ning.billing.payment.retry.FailedPaymentRetryService;
-import com.ning.billing.payment.setup.PaymentTestModuleWithMocks;
import com.ning.billing.util.bus.Bus;
import com.ning.billing.util.clock.Clock;
import com.ning.billing.util.clock.ClockMock;
diff --git a/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java b/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java
index ccd5b51..b21195f 100644
--- a/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java
+++ b/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java
@@ -37,7 +37,7 @@ import com.ning.billing.jaxrs.resources.TagResource;
import com.ning.billing.jaxrs.util.KillbillEventHandler;
import com.ning.billing.jaxrs.util.TagHelper;
import com.ning.billing.junction.glue.DefaultJunctionModule;
-import com.ning.billing.payment.setup.PaymentModule;
+import com.ning.billing.payment.glue.PaymentModule;
import com.ning.billing.util.glue.BusModule;
import com.ning.billing.util.glue.CallContextModule;
import com.ning.billing.util.glue.ClockModule;
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
index 46214e9..09641d2 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
@@ -67,8 +67,8 @@ import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
import com.ning.billing.jaxrs.json.SubscriptionJsonNoEvents;
import com.ning.billing.jaxrs.resources.BaseJaxrsResource;
import com.ning.billing.junction.glue.DefaultJunctionModule;
+import com.ning.billing.payment.glue.PaymentModule;
import com.ning.billing.payment.provider.MockPaymentProviderPluginModule;
-import com.ning.billing.payment.setup.PaymentModule;
import com.ning.billing.server.listeners.KillbillGuiceListener;
import com.ning.billing.server.modules.KillbillServerModule;
import com.ning.billing.util.clock.Clock;