Details
diff --git a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
index 6d56436..0a1c642 100644
--- a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
+++ b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
@@ -16,20 +16,21 @@
package com.ning.billing.account.dao;
+import static org.testng.Assert.fail;
+
+import java.io.IOException;
+
+import org.apache.commons.io.IOUtils;
+import org.skife.jdbi.v2.IDBI;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
import com.ning.billing.account.glue.AccountModuleWithEmbeddedDb;
import com.ning.billing.util.eventbus.DefaultEventBusService;
import com.ning.billing.util.eventbus.EventBusService;
-import org.apache.commons.io.IOUtils;
-import org.skife.jdbi.v2.IDBI;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-
-import java.io.IOException;
-
-import static org.testng.Assert.fail;
public abstract class AccountDaoTestBase {
protected AccountModuleWithEmbeddedDb module;
@@ -42,12 +43,10 @@ public abstract class AccountDaoTestBase {
try {
module = new AccountModuleWithEmbeddedDb();
final String accountDdl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/account/ddl.sql"));
- final String invoiceDdl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
final String utilDdl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/util/ddl.sql"));
module.startDb();
module.initDb(accountDdl);
- module.initDb(invoiceDdl);
module.initDb(utilDdl);
final Injector injector = Guice.createInjector(Stage.DEVELOPMENT, module);
diff --git a/api/src/main/java/com/ning/billing/invoice/api/InvoiceCreationNotification.java b/api/src/main/java/com/ning/billing/invoice/api/InvoiceCreationNotification.java
index 89c0d87..5ecd311 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/InvoiceCreationNotification.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/InvoiceCreationNotification.java
@@ -16,17 +16,19 @@
package com.ning.billing.invoice.api;
-import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.util.eventbus.EventBusNotification;
-import org.joda.time.DateTime;
-
import java.math.BigDecimal;
import java.util.UUID;
+import org.joda.time.DateTime;
+
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.util.eventbus.EventBusNotification;
+
public interface InvoiceCreationNotification extends EventBusNotification {
public UUID getInvoiceId();
public UUID getAccountId();
public BigDecimal getAmountOwed();
public Currency getCurrency();
public DateTime getInvoiceCreationDate();
+
}
\ No newline at end of file
diff --git a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
index 739868a..ed66ec7 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceUserApi.java
@@ -55,13 +55,4 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
dao.notifyOfPaymentAttempt(invoicePayment);
}
-// @Override
-// public void paymentAttemptFailed(UUID invoiceId, UUID paymentId, DateTime paymentAttemptDate) {
-// dao.notifyFailedPayment(invoiceId.toString(), paymentId.toString(), paymentAttemptDate.toDate());
-// }
-//
-// @Override
-// public void paymentAttemptSuccessful(UUID invoiceId, BigDecimal amount, Currency currency, UUID paymentId, DateTime paymentDate) {
-// dao.notifySuccessfulPayment(invoiceId.toString(), amount, currency.toString(), paymentId.toString(), paymentDate.toDate());
-// }
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
index b9ed8fa..d5d4ce9 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/DefaultInvoiceDao.java
@@ -136,16 +136,6 @@ public class DefaultInvoiceDao implements InvoiceDao {
return invoiceDao.getInvoicesForPayment(targetDate, numberOfDays);
}
-// @Override
-// public void notifySuccessfulPayment(String invoiceId, BigDecimal paymentAmount, String currency, String paymentId, Date paymentDate) {
-// invoiceDao.notifySuccessfulPayment(invoiceId, paymentAmount, currency, paymentId, paymentDate);
-// }
-//
-// @Override
-// public void notifyFailedPayment(String invoiceId, String paymentId, Date paymentAttemptDate) {
-// invoiceDao.notifyFailedPayment(invoiceId, paymentId, paymentAttemptDate);
-// }
-
@Override
public void notifyOfPaymentAttempt(InvoicePayment invoicePayment) {
invoiceDao.notifyOfPaymentAttempt(invoicePayment);
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
index 7deac54..e90d22c 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceDao.java
@@ -37,16 +37,6 @@ public interface InvoiceDao {
List<UUID> getInvoicesForPayment(final Date targetDate,
final int numberOfDays);
-// void notifySuccessfulPayment(final String invoiceId,
-// final BigDecimal paymentAmount,
-// final String currency,
-// final String paymentId,
-// final Date paymentDate);
-//
-// void notifyFailedPayment(final String invoiceId,
-// final String paymentId,
-// final Date paymentAttemptDate);
-
String getInvoiceIdByPaymentAttemptId(UUID paymentAttemptId);
void test();
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java
index ee4491d..bb03e8b 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java
@@ -82,10 +82,6 @@ public interface InvoiceSqlDao extends EntityDao<Invoice>, Transactional<Invoice
@SqlQuery
InvoicePayment getInvoicePayment(@Bind("paymentAttemptId") UUID paymentAttemptId);
-// void notifySuccessfulPayment(@Bind(binder = InvoicePaymentBinder.class) InvoicePayment invoicePayment);
-
-// void notifySuccessfulPayment(String invoiceId, BigDecimal paymentAmount, String currency, String paymentId, Date paymentDate);
-
@SqlUpdate
void notifyOfPaymentAttempt(@Bind(binder = InvoicePaymentBinder.class) InvoicePayment invoicePayment);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java b/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
index bdbee77..446cc2b 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
@@ -164,25 +164,6 @@ public class MockInvoiceDao implements InvoiceDao {
return new ArrayList<UUID>(result);
}
-// @Override
-// public void notifySuccessfulPayment(String invoiceId, BigDecimal paymentAmount, String currency, String paymentAttemptId, Date paymentAttemptDate) {
-// synchronized (monitor) {
-// invoicePayments.put(UUID.fromString(paymentAttemptId),
-// new InvoicePayment(UUID.fromString(invoiceId), paymentAmount, Currency.valueOf(currency), UUID.fromString(paymentAttemptId), new DateTime(paymentAttemptDate)));
-// }
-// }
-//
-// @Override
-// public void notifyFailedPayment(String invoiceId,
-// String paymentAttemptId,
-// Date paymentAttemptDate) {
-// synchronized (monitor) {
-// invoicePayments.put(UUID.fromString(paymentAttemptId),
-// new InvoicePayment(UUID.fromString(invoiceId), null, null, UUID.fromString(paymentAttemptId), new DateTime(paymentAttemptDate)));
-//
-// }
-// }
-
@Override
public void test() {
}
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 06b2834..5674972 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
@@ -23,6 +23,9 @@ import java.util.UUID;
import javax.annotation.Nullable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import com.google.inject.Inject;
import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountUserApi;
@@ -38,6 +41,8 @@ public class DefaultPaymentApi implements PaymentApi {
private final InvoicePaymentApi invoicePaymentApi;
private final PaymentDao paymentDao;
+ private static final Logger log = LoggerFactory.getLogger(DefaultPaymentApi.class);
+
@Inject
public DefaultPaymentApi(PaymentProviderPluginRegistry pluginRegistry,
AccountUserApi accountUserApi,
@@ -128,10 +133,12 @@ public class DefaultPaymentApi implements PaymentApi {
Invoice invoice = invoicePaymentApi.getInvoice(UUID.fromString(invoiceId));
if (invoice.getAmountOutstanding().compareTo(BigDecimal.ZERO) == 0 ) {
- // TODO: send a notification that invoice was ignored ?
+ // TODO: send a notification that invoice was ignored?
+ log.info("Received invoice for payment with outstanding amount of 0 {} ", invoice);
}
else if (invoiceId.equals(paymentDao.getPaymentAttemptForInvoiceId(invoiceId))) {
//TODO: do equals on invoice instead and only reject when invoice is exactly the same?
+ log.info("Duplicate invoice payment event, already received invoice {} ", invoice);
}
else {
PaymentAttempt paymentAttempt = paymentDao.createPaymentAttempt(invoice);
@@ -152,7 +159,7 @@ public class DefaultPaymentApi implements PaymentApi {
invoicePaymentApi.notifyOfPaymentAttempt(new InvoicePayment(invoice.getId(),
paymentInfo == null ? null : paymentInfo.getAmount(),
-// info.getRefundAmount(), TODO
+// paymentInfo.getRefundAmount(), TODO
paymentInfo == null ? null : invoice.getCurrency(),
paymentAttempt.getPaymentAttemptId(),
paymentAttempt.getPaymentAttemptDate()));
@@ -171,8 +178,8 @@ public class DefaultPaymentApi implements PaymentApi {
@Override
public Either<PaymentError, PaymentProviderAccount> updatePaymentProviderAccount(PaymentProviderAccount account) {
- // TODO Auto-generated method stub
- return null;
+ //TODO
+ throw new UnsupportedOperationException();
}
@Override
@@ -182,8 +189,8 @@ public class DefaultPaymentApi implements PaymentApi {
@Override
public List<Either<PaymentError, PaymentInfo>> createRefund(Account account, List<String> invoiceIds) {
- // TODO Auto-generated method stub
- return null;
+ //TODO
+ throw new UnsupportedOperationException();
}
}
diff --git a/payment/src/main/java/com/ning/billing/payment/PaymentInfoRequest.java b/payment/src/main/java/com/ning/billing/payment/PaymentInfoRequest.java
index d719829..22098ed 100644
--- a/payment/src/main/java/com/ning/billing/payment/PaymentInfoRequest.java
+++ b/payment/src/main/java/com/ning/billing/payment/PaymentInfoRequest.java
@@ -36,4 +36,10 @@ public class PaymentInfoRequest implements EventBusNotification {
public String getPaymentId() {
return paymentId;
}
+
+ @Override
+ public String toString() {
+ return "PaymentInfoRequest [accountId=" + accountId + ", paymentId=" + paymentId + "]";
+ }
+
}
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 af001a3..466f297 100644
--- a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
@@ -63,7 +63,7 @@ public class RequestProcessor {
final Account account = accountUserApi.getAccountById(event.getAccountId());
if (account == null) {
- // TODO: log a warning
+ log.info("could not process invoice payment: could not find a valid account for event {}", event);
}
else {
List<Either<PaymentError, PaymentInfo>> results = paymentApi.createPayment(account, Arrays.asList(event.getInvoiceId().toString()));
@@ -78,7 +78,7 @@ public class RequestProcessor {
}
}
catch (EventBusException ex) {
- // TODO: log
+ throw new RuntimeException(ex);
}
}
@@ -86,7 +86,7 @@ public class RequestProcessor {
public void receivePaymentInfoRequest(PaymentInfoRequest paymentInfoRequest) throws EventBusException {
final Account account = accountUserApi.getAccountById(paymentInfoRequest.getAccountId());
if (account == null) {
- // TODO: log a warning ?
+ log.info("could not process payment info request: could not find a valid account for event {}", paymentInfoRequest);
}
else {
final String paymentProviderName = account.getFieldValue(PAYMENT_PROVIDER_KEY);
diff --git a/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java b/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
index c71857a..b98e0c2 100644
--- a/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
+++ b/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
@@ -57,6 +57,7 @@ public abstract class TestPaymentApi {
eventBus.stop();
}
+// @Test(groups = "fast")
@Test
public void testCreatePayment() {
final DateTime now = new DateTime();