Details
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
index 4a6d004..a02f2f4 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/dao/DefaultInvoiceDao.java
@@ -223,7 +223,6 @@ public class DefaultInvoiceDao extends EntityDaoBase<InvoiceModelDao, Invoice, I
transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<Void>() {
@Override
public Void inTransaction(final EntitySqlDaoWrapperFactory entitySqlDaoWrapperFactory) throws Exception {
- final InvoiceSqlDao transactional = entitySqlDaoWrapperFactory.become(InvoiceSqlDao.class);
notifyOfFutureBillingEvents(entitySqlDaoWrapperFactory, accountId, callbackDateTimePerSubscriptions, context);
return null;
}
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/usage/RawUsageOptimizer.java b/invoice/src/main/java/org/killbill/billing/invoice/usage/RawUsageOptimizer.java
index 7ef5bff..7e09cf7 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/usage/RawUsageOptimizer.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/usage/RawUsageOptimizer.java
@@ -40,6 +40,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
+import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
@@ -96,7 +97,9 @@ public class RawUsageOptimizer {
final List<InvoiceItem> sortedUsageItems = USAGE_ITEM_ORDERING.sortedCopy(existingUsageItems);
// Compute an array with one date per BillingPeriod:
- // If BillingPeriod is never defined in the catalog (no need to look for items), we initialize its value such that
+ // If BillingPeriod is never defined in the catalog (no need to look for items), we initialize its value
+ // such that it cannot be chosen
+ //
final LocalDate[] perBillingPeriodMostRecentConsumableInArrearItemEndDate = new LocalDate[BillingPeriod.values().length];
int idx = 0;
for (BillingPeriod bp : BillingPeriod.values()) {
@@ -106,8 +109,9 @@ public class RawUsageOptimizer {
final ListIterator<InvoiceItem> iterator = sortedUsageItems.listIterator(sortedUsageItems.size());
while (iterator.hasPrevious()) {
-
- final UsageInvoiceItem item = (UsageInvoiceItem) iterator.previous();
+ final InvoiceItem previous = iterator.previous();
+ Preconditions.checkState(previous instanceof UsageInvoiceItem);
+ final UsageInvoiceItem item = (UsageInvoiceItem) previous;
final Usage usage = knownUsage.get(item.getUsageName());
if (perBillingPeriodMostRecentConsumableInArrearItemEndDate[usage.getBillingPeriod().ordinal()] == null) {
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalConsumableInArrear.java b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalConsumableInArrear.java
index 38915b6..f425c34 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalConsumableInArrear.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalConsumableInArrear.java
@@ -114,9 +114,6 @@ public class TestContiguousIntervalConsumableInArrear extends TestUsageInArrearB
final LocalDate targetDate = new LocalDate(2014, 03, 20);
-// createContiguousIntervalConsumableInArrear(final DefaultUsage usage, List<RawUsage> rawUsages, final LocalDate targetDate, final boolean closedInterval, final BillingEvent... events) {
-
-
final ContiguousIntervalConsumableInArrear intervalConsumableInArrear = createContiguousIntervalConsumableInArrear(usage, ImmutableList.<RawUsage>of(), targetDate, false,
createMockBillingEvent(targetDate.toDateTimeAtStartOfDay(DateTimeZone.UTC),
Collections.<Usage>emptyList())
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestRawUsageOptimizer.java b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestRawUsageOptimizer.java
index 0b20533..eac8b46 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestRawUsageOptimizer.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestRawUsageOptimizer.java
@@ -33,23 +33,10 @@ import org.killbill.billing.catalog.api.Usage;
import org.killbill.billing.invoice.api.InvoiceItem;
import org.killbill.billing.invoice.model.UsageInvoiceItem;
import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class TestRawUsageOptimizer extends TestUsageInArrearBase {
- @BeforeClass(groups = "fast")
- protected void beforeClass() throws Exception {
- super.beforeClass();
- }
-
- @BeforeMethod(groups = "fast")
- public void beforeMethod() {
- super.beforeMethod();
- }
-
-
@Test(groups = "fast")
public void testWithNoItems() {
@@ -67,16 +54,13 @@ public class TestRawUsageOptimizer extends TestUsageInArrearBase {
Assert.assertEquals(result.compareTo(firstEventStartDate), 0);
}
-
@Test(groups = "fast")
public void testWithOneMonthlyUsageSectionTooFewItems() {
final LocalDate firstEventStartDate = new LocalDate(2014, 03, 15);
final List<InvoiceItem> invoiceItems = new ArrayList<InvoiceItem>();
- for (int i = 0; i < 1; i++) {
- invoiceItems.add(createUsageItem(firstEventStartDate.plusMonths(i)));
- }
+ invoiceItems.add(createUsageItem(firstEventStartDate));
final LocalDate targetDate = invoiceItems.get(invoiceItems.size() - 1).getEndDate();
final Map<String, Usage> knownUsage = new HashMap<String, Usage>();
@@ -113,7 +97,6 @@ public class TestRawUsageOptimizer extends TestUsageInArrearBase {
Assert.assertEquals(result.compareTo(new LocalDate(2014, 06, 15)), 0, "112 got " + result);
}
-
@Test(groups = "fast")
public void testWithOneMonthlyAndOneNonActiveAnnualUsageSectionAndEnoughUsageItems() {
@@ -136,14 +119,12 @@ public class TestRawUsageOptimizer extends TestUsageInArrearBase {
final DefaultUsage usage2 = createDefaultUsage("usageName2", BillingPeriod.ANNUAL, tier2);
knownUsage.put("usageName2", usage2);
-
final LocalDate result = rawUsageOptimizer.getOptimizedRawUsageStartDate(firstEventStartDate, targetDate, invoiceItems, knownUsage);
// The same reasoning applies as previously because there is no usage items against the annual and
// so, the largest endDate for ii is 2014-08-15, and by default org.killbill.invoice.readMaxRawUsagePreviousPeriod == 2 => targetDate => 2014-06-15
Assert.assertEquals(result.compareTo(new LocalDate(2014, 06, 15)), 0, "142 got " + result);
}
-
private InvoiceItem createUsageItem(final LocalDate startDate) {
return new UsageInvoiceItem(invoiceId, accountId, bundleId, subscriptionId, planName, phaseName, usageName, startDate, startDate.plusMonths(1), BigDecimal.TEN, Currency.USD);
}
diff --git a/util/src/main/java/org/killbill/billing/util/config/InvoiceConfig.java b/util/src/main/java/org/killbill/billing/util/config/InvoiceConfig.java
index 8143de4..c3fd9b7 100644
--- a/util/src/main/java/org/killbill/billing/util/config/InvoiceConfig.java
+++ b/util/src/main/java/org/killbill/billing/util/config/InvoiceConfig.java
@@ -41,7 +41,7 @@ public interface InvoiceConfig extends KillbillConfig {
@Config("org.killbill.invoice.readMaxRawUsagePreviousPeriod")
@Default("2")
- @Description("Maximum number of billingPeriod we read when retrieve raw usage data")
+ @Description("Maximum number of billingPeriod we read when retrieving raw usage data")
public int getMaxRawUsagePreviousPeriod();
}