killbill-uncached

Details

diff --git a/api/src/main/java/com/ning/billing/account/api/AccountUserApi.java b/api/src/main/java/com/ning/billing/account/api/AccountUserApi.java
index 05d8660..9ee1920 100644
--- a/api/src/main/java/com/ning/billing/account/api/AccountUserApi.java
+++ b/api/src/main/java/com/ning/billing/account/api/AccountUserApi.java
@@ -31,6 +31,7 @@ public interface AccountUserApi {
      *
      * Note: does not update the external key
      * @param account
+     * @throws AccountApiException
      */
     public void updateAccount(Account account) throws AccountApiException;
 
diff --git a/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java b/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
index 977d6f7..75337e3 100644
--- a/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
+++ b/api/src/main/java/com/ning/billing/invoice/api/InvoiceUserApi.java
@@ -32,8 +32,6 @@ public interface InvoiceUserApi {
 
     public BigDecimal getAccountBalance(UUID accountId);
 
-    public List<InvoiceItem> getInvoiceItemsByAccount(UUID accountId);
-
     public Invoice getInvoice(UUID invoiceId);
 
     public void notifyOfPaymentAttempt(InvoicePayment invoicePayment);
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
index b69e48e..b4a4019 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
@@ -22,6 +22,7 @@ import static org.testng.Assert.assertTrue;
 
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
@@ -217,7 +218,11 @@ public class TestIntegration {
                                   int totalInvoiceItemCount) {
         SubscriptionData subscription = (SubscriptionData) entitlementUserApi.getSubscriptionFromId(subscriptionId);
 
-        List<InvoiceItem> invoiceItems = invoiceUserApi.getInvoiceItemsByAccount(accountId);
+        List<Invoice> invoices = invoiceUserApi.getInvoicesByAccount(accountId);
+        List<InvoiceItem> invoiceItems = new ArrayList<InvoiceItem>();
+        for (Invoice invoice : invoices) {
+            invoiceItems.addAll(invoice.getInvoiceItems());
+        }
         assertEquals(invoiceItems.size(), totalInvoiceItemCount);
 
         boolean wasFound = false;
@@ -242,9 +247,6 @@ public class TestIntegration {
         assertTrue(ctd.compareTo(chargeThroughDate) == 0);
     }
 
-
-
-
     @Test(groups = "slow", enabled = true)
     public void testBasePlanCompleteWithBillingDayInPast() throws Exception {
         DateTime startDate = new DateTime(2012, 2, 1, 0, 3, 42, 0);
@@ -293,10 +295,6 @@ public class TestIntegration {
         }
     }
 
-
-
-    private static final long DELAY = 5000;
-
     @Test(groups = "slow", enabled = true)
     public void testWithRecreatePlan() throws Exception {
 
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java
index 0c6f82a..2a4d8ec 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/billing/DefaultBillingEvent.java
@@ -201,4 +201,47 @@ public class DefaultBillingEvent implements BillingEvent {
 
         return sb.toString();
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        DefaultBillingEvent that = (DefaultBillingEvent) o;
+
+        if (billCycleDay != that.billCycleDay) return false;
+        if (billingModeType != that.billingModeType) return false;
+        if (billingPeriod != that.billingPeriod) return false;
+        if (currency != that.currency) return false;
+        if (!description.equals(that.description)) return false;
+        if (!effectiveDate.equals(that.effectiveDate)) return false;
+        if (fixedPrice != null ? !fixedPrice.equals(that.fixedPrice) : that.fixedPrice != null) return false;
+        if (!plan.equals(that.plan)) return false;
+        if (!planPhase.equals(that.planPhase)) return false;
+        if (recurringPrice != null ? !recurringPrice.equals(that.recurringPrice) : that.recurringPrice != null)
+            return false;
+        if (!subscription.equals(that.subscription)) return false;
+        if (!totalOrdering.equals(that.totalOrdering)) return false;
+        if (type != that.type) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = billCycleDay;
+        result = 31 * result + subscription.hashCode();
+        result = 31 * result + effectiveDate.hashCode();
+        result = 31 * result + planPhase.hashCode();
+        result = 31 * result + plan.hashCode();
+        result = 31 * result + (fixedPrice != null ? fixedPrice.hashCode() : 0);
+        result = 31 * result + (recurringPrice != null ? recurringPrice.hashCode() : 0);
+        result = 31 * result + currency.hashCode();
+        result = 31 * result + description.hashCode();
+        result = 31 * result + billingModeType.hashCode();
+        result = 31 * result + billingPeriod.hashCode();
+        result = 31 * result + type.hashCode();
+        result = 31 * result + totalOrdering.hashCode();
+        return result;
+    }
 }
\ No newline at end of file
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
index 883155f..6321d35 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
@@ -39,7 +39,6 @@ import com.ning.billing.util.clock.Clock;
 import com.ning.billing.util.clock.DefaultClock;
 
 public class DefaultEntitlementUserApi implements EntitlementUserApi {
-
     private final Clock clock;
     private final EntitlementDao dao;
     private final CatalogService catalogService;
@@ -82,7 +81,6 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
         return dao.getSubscriptionsForKey(bundleKey);
     }
 
-
     @Override
     public List<Subscription> getSubscriptionsForBundle(UUID bundleId) {
         return dao.getSubscriptions(bundleId);
@@ -95,7 +93,6 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
         return dao.createSubscriptionBundle(bundle);
     }
 
-
     @Override
     public Subscription createSubscription(UUID bundleId, PlanPhaseSpecifier spec, DateTime requestedDate) throws EntitlementUserApiException {
         try {
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 d38773a..1800154 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
@@ -26,7 +26,6 @@ import com.google.inject.Inject;
 import com.ning.billing.invoice.InvoiceDispatcher;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoiceApiException;
-import com.ning.billing.invoice.api.InvoiceItem;
 import com.ning.billing.invoice.api.InvoicePayment;
 import com.ning.billing.invoice.api.InvoiceUserApi;
 import com.ning.billing.invoice.dao.InvoiceDao;
@@ -68,11 +67,6 @@ public class DefaultInvoiceUserApi implements InvoiceUserApi {
 	}
 
     @Override
-    public List<InvoiceItem> getInvoiceItemsByAccount(final UUID accountId) {
-        return dao.getInvoiceItemsByAccount(accountId);
-    }
-
-    @Override
     public Invoice getInvoice(final UUID invoiceId) {
         return dao.getById(invoiceId);
     }
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 9b475d1..f797ff5 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
@@ -100,14 +100,6 @@ public class DefaultInvoiceDao implements InvoiceDao {
     }
 
     @Override
-    public List<InvoiceItem> getInvoiceItemsByAccount(final UUID accountId) {
-        List<InvoiceItem> results = new ArrayList<InvoiceItem>();
-        results.addAll(recurringInvoiceItemSqlDao.getInvoiceItemsByAccount(accountId.toString()));
-        results.addAll(fixedPriceInvoiceItemSqlDao.getInvoiceItemsByAccount(accountId.toString()));
-        return results;
-    }
-
-    @Override
     public List<Invoice> get() {
         return invoiceSqlDao.inTransaction(new Transaction<List<Invoice>, InvoiceSqlDao>() {
              @Override
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 7a7c280..08f6e06 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
@@ -36,8 +36,6 @@ public interface InvoiceDao {
 
     List<Invoice> getInvoicesByAccount(final UUID accountId, final DateTime fromDate);
 
-    List<InvoiceItem> getInvoiceItemsByAccount(final UUID accountId);
-
     List<Invoice> getInvoicesBySubscription(final UUID subscriptionId);
 
     List<UUID> getInvoicesForPayment(final DateTime targetDate,
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
index 66c71bd..acb54ad 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
@@ -246,8 +246,7 @@ public class DefaultInvoiceGenerator implements InvoiceGenerator {
 
                 return new FixedPriceInvoiceItem(invoiceId, thisEvent.getSubscription().getId(),
                                                  thisEvent.getPlan().getName(), thisEvent.getPlanPhase().getName(),
-                                                 thisEvent.getEffectiveDate(), endDate, fixedPrice, currency,
-                                                 clock.getUTCNow());
+                                                 thisEvent.getEffectiveDate(), endDate, fixedPrice, currency);
             } else {
                 return null;
             }
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
index 4a1bc1d..2c01329 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
@@ -25,9 +25,8 @@ import java.util.UUID;
 
 public class FixedPriceInvoiceItem extends InvoiceItemBase {
     public FixedPriceInvoiceItem(UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
-                                 DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency,
-                                 DateTime createdDate) {
-        super(invoiceId, subscriptionId, planName, phaseName, startDate, endDate, amount, currency, createdDate);
+                                 DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency) {
+        super(invoiceId, subscriptionId, planName, phaseName, startDate, endDate, amount, currency);
     }
 
     public FixedPriceInvoiceItem(UUID id, UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
index 6f69e33..d855681 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
@@ -16,10 +16,13 @@
 
 package com.ning.billing.invoice.model;
 
+import com.google.inject.Inject;
 import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.invoice.api.InvoiceItem;
+import com.ning.billing.util.clock.Clock;
 import org.joda.time.DateTime;
 
+import javax.annotation.Nullable;
 import java.math.BigDecimal;
 import java.util.UUID;
 
@@ -35,16 +38,18 @@ public abstract class InvoiceItemBase implements InvoiceItem {
     protected final Currency currency;
     protected final DateTime createdDate;
 
+    @Inject
+    private Clock clock;
+
     public InvoiceItemBase(UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
-                           DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency,
-                           DateTime createdDate) {
+                           DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency) {
         this(UUID.randomUUID(), invoiceId, subscriptionId, planName, phaseName,
-                startDate, endDate, amount, currency, createdDate);
+                startDate, endDate, amount, currency, null);
     }
 
     public InvoiceItemBase(UUID id, UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
                            DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency,
-                           DateTime createdDate) {
+                           @Nullable DateTime createdDate) {
         this.id = id;
         this.invoiceId = invoiceId;
         this.subscriptionId = subscriptionId;
@@ -54,7 +59,7 @@ public abstract class InvoiceItemBase implements InvoiceItem {
         this.endDate = endDate;
         this.amount = amount;
         this.currency = currency;
-        this.createdDate = createdDate;
+        this.createdDate = (createdDate == null) ? clock.getUTCNow() : createdDate;
     }
 
     public DateTime getCreatedDate() {
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 cf6c112..893912f 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
@@ -101,21 +101,6 @@ public class MockInvoiceDao implements InvoiceDao {
     }
 
     @Override
-    public List<InvoiceItem> getInvoiceItemsByAccount(UUID accountId) {
-        List<InvoiceItem> invoiceItemsForAccount = new ArrayList<InvoiceItem>();
-
-        synchronized (monitor) {
-            for (Invoice invoice : get()) {
-                if (accountId.equals(invoice.getAccountId())) {
-                    invoiceItemsForAccount.addAll(invoice.getInvoiceItems());
-                }
-            }
-        }
-
-        return invoiceItemsForAccount;
-    }
-
-    @Override
     public List<Invoice> getInvoicesBySubscription(UUID subscriptionId) {
         List<Invoice> result = new ArrayList<Invoice>();