killbill-uncached

Cleanup; Fix for account dao test

1/17/2012 8:10:28 PM

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();