killbill-memoizeit
Changes
account/pom.xml 2(+1 -1)
api/pom.xml 2(+1 -1)
beatrix/pom.xml 2(+1 -1)
catalog/pom.xml 2(+1 -1)
currency/pom.xml 2(+1 -1)
entitlement/pom.xml 2(+1 -1)
invoice/pom.xml 2(+1 -1)
invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java 44(+28 -16)
invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalUsageInArrear.java 80(+80 -0)
jaxrs/pom.xml 2(+1 -1)
junction/pom.xml 2(+1 -1)
NEWS 3(+3 -0)
overdue/pom.xml 2(+1 -1)
payment/pom.xml 2(+1 -1)
pom.xml 2(+1 -1)
profiles/killbill/pom.xml 2(+1 -1)
profiles/killbill/src/main/resources/update-checker/killbill-server-update-list.properties 118(+75 -43)
profiles/killpay/pom.xml 2(+1 -1)
profiles/killpay/src/main/resources/update-checker/killbill-server-update-list.properties 118(+75 -43)
profiles/pom.xml 2(+1 -1)
subscription/pom.xml 2(+1 -1)
tenant/pom.xml 2(+1 -1)
usage/pom.xml 2(+1 -1)
util/pom.xml 2(+1 -1)
Details
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 3e1dd16..1eb38a9 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -16,15 +16,12 @@
<option name="REPORT_VARIABLES" value="true" />
<option name="REPORT_PARAMETERS" value="true" />
</inspection_tool>
- <inspection_tool class="LoggerInitializedWithForeignClass" enabled="false" level="WARNING" enabled_by_default="false">
- <option name="loggerClassName" value="org.apache.log4j.Logger,org.slf4j.LoggerFactory,org.apache.commons.logging.LogFactory,java.util.logging.Logger" />
- <option name="loggerFactoryMethodName" value="getLogger,getLogger,getLog,getLogger" />
- </inspection_tool>
<inspection_tool class="MissortedModifiers" enabled="true" level="WARNING" enabled_by_default="true">
<option name="m_requireAnnotationsFirst" value="true" />
</inspection_tool>
<inspection_tool class="RedundantTypeArguments" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SizeReplaceableByIsEmpty" enabled="true" level="WARNING" enabled_by_default="true" />
+ <inspection_tool class="StaticPseudoFunctionalStyleMethod" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="TryWithIdenticalCatches" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="TypeMayBeWeakened" enabled="true" level="WARNING" enabled_by_default="true">
<option name="useRighthandTypeAsWeakestTypeInAssignments" value="true" />
account/pom.xml 2(+1 -1)
diff --git a/account/pom.xml b/account/pom.xml
index 9939f94..322704d 100644
--- a/account/pom.xml
+++ b/account/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-account</artifactId>
api/pom.xml 2(+1 -1)
diff --git a/api/pom.xml b/api/pom.xml
index 4d207d8..9b5c838 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-internal-api</artifactId>
beatrix/pom.xml 2(+1 -1)
diff --git a/beatrix/pom.xml b/beatrix/pom.xml
index 6f6cf8f..467ba89 100644
--- a/beatrix/pom.xml
+++ b/beatrix/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-beatrix</artifactId>
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithBCDUpdate.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithBCDUpdate.java
index 52efaf9..e557041 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithBCDUpdate.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithBCDUpdate.java
@@ -27,6 +27,7 @@ import javax.inject.Inject;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
import org.killbill.billing.account.api.Account;
+import org.killbill.billing.account.api.AccountData;
import org.killbill.billing.api.TestApiListener.NextEvent;
import org.killbill.billing.beatrix.util.InvoiceChecker.ExpectedInvoiceItemCheck;
import org.killbill.billing.catalog.DefaultPlanPhasePriceOverride;
@@ -54,13 +55,13 @@ import com.google.common.collect.ImmutableList;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
public class TestWithBCDUpdate extends TestIntegrationBase {
@Inject
protected SubscriptionBaseInternalApi subscriptionBaseInternalApi;
-
@Test(groups = "slow")
public void testBCDChangeInTrial() throws Exception {
@@ -123,7 +124,6 @@ public class TestWithBCDUpdate extends TestIntegrationBase {
assertEquals(subscription.getBillingEndDate().compareTo(new LocalDate(2016, 5, 15)), 0);
}
-
@Test(groups = "slow")
public void testBCDChangeAfterTrialFollowOtherBCDChange() throws Exception {
@@ -203,7 +203,6 @@ public class TestWithBCDUpdate extends TestIntegrationBase {
}
-
@Test(groups = "slow")
public void testBCDChangeBeforeChangePlan() throws Exception {
@@ -250,7 +249,6 @@ public class TestWithBCDUpdate extends TestIntegrationBase {
}
-
@Test(groups = "slow")
public void testBCDChangeAfterChangePlan() throws Exception {
@@ -347,7 +345,6 @@ public class TestWithBCDUpdate extends TestIntegrationBase {
}
-
@Test(groups = "slow")
public void testBCDChangeForAO() throws Exception {
@@ -494,7 +491,6 @@ public class TestWithBCDUpdate extends TestIntegrationBase {
expectedInvoices.clear();
}
-
@Test(groups = "slow")
public void testBCDChangeWithEffectiveDateFromInTheFuture() throws Exception {
@@ -741,8 +737,6 @@ public class TestWithBCDUpdate extends TestIntegrationBase {
new ExpectedInvoiceItemCheck(new LocalDate(2016, 6, 15), new LocalDate(2016, 7, 15), InvoiceItemType.RECURRING, new BigDecimal("29.95")));
}
-
-
@Test(groups = "slow")
public void testWithBCDOnOperations() throws Exception {
@@ -793,4 +787,72 @@ public class TestWithBCDUpdate extends TestIntegrationBase {
}
+
+ @Test(groups = "slow")
+ public void testBCDChangeForConsumableInArrearPlan() throws Exception {
+ // We take april as it has 30 days (easier to play with BCD)
+ // Set clock to the initial start date - we implicitly assume here that the account timezone is UTC
+ clock.setDay(new LocalDate(2012, 4, 1));
+
+ final AccountData accountData = getAccountData(1);
+ final Account account = createAccountWithNonOsgiPaymentMethod(accountData);
+ accountChecker.checkAccount(account.getId(), accountData, callContext);
+
+ // Create BASE subscription
+ final DefaultEntitlement bpSubscription = createBaseEntitlementAndCheckForCompletion(account.getId(), "bundleKey", "Shotgun", ProductCategory.BASE, BillingPeriod.ANNUAL, NextEvent.CREATE, NextEvent.BLOCK, NextEvent.INVOICE);
+ // Check bundle after BP got created otherwise we get an error from auditApi.
+ subscriptionChecker.checkSubscriptionCreated(bpSubscription.getId(), internalCallContext);
+ invoiceChecker.checkInvoice(account.getId(), 1, callContext, new ExpectedInvoiceItemCheck(new LocalDate(2012, 4, 1), null, InvoiceItemType.FIXED, new BigDecimal("0")));
+ assertListenerStatus();
+
+ // Add ADD_ON on the same day
+ final DefaultEntitlement aoSubscription = addAOEntitlementAndCheckForCompletion(bpSubscription.getBundleId(), "Bullets", ProductCategory.ADD_ON, BillingPeriod.NO_BILLING_PERIOD, NextEvent.CREATE, NextEvent.BLOCK, NextEvent.NULL_INVOICE);
+ assertListenerStatus();
+ assertNull(bpSubscription.getSubscriptionBase().getChargedThroughDate());
+
+ // Record usage for first month
+ recordUsageData(aoSubscription.getId(), "bullets", new LocalDate(2012, 4, 5), 100L, callContext);
+ recordUsageData(aoSubscription.getId(), "bullets", new LocalDate(2012, 4, 15), 100L, callContext);
+
+ // 2012-05-01
+ busHandler.pushExpectedEvents(NextEvent.PHASE, NextEvent.NULL_INVOICE, NextEvent.INVOICE, NextEvent.PAYMENT, NextEvent.INVOICE_PAYMENT);
+ clock.addMonths(1);
+ assertListenerStatus();
+
+ invoiceChecker.checkInvoice(account.getId(), 2, callContext,
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 1), new LocalDate(2013, 5, 1), InvoiceItemType.RECURRING, new BigDecimal("2399.95")),
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 4, 1), new LocalDate(2012, 5, 1), InvoiceItemType.USAGE, new BigDecimal("5.90")));
+
+ final DateTime bpExpectedCTD = new DateTime("2013-05-01T00:00:00.000Z");
+ assertEquals(subscriptionBaseInternalApiApi.getSubscriptionFromId(bpSubscription.getId(), internalCallContext).getChargedThroughDate().compareTo(bpExpectedCTD), 0);
+ DateTime aoExpectedCTD = new DateTime("2012-05-01T00:00:00.000Z");
+ assertEquals(subscriptionBaseInternalApiApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext).getChargedThroughDate().compareTo(aoExpectedCTD), 0);
+
+ // 2012-05-05
+ clock.addDays(4);
+ assertListenerStatus();
+
+ // Set BCD to be the 5
+ busHandler.pushExpectedEvents(NextEvent.BCD_CHANGE, NextEvent.INVOICE);
+ subscriptionBaseInternalApi.updateBCD(aoSubscription.getId(), 5, null, internalCallContext);
+ assertListenerStatus();
+
+ invoiceChecker.checkInvoice(account.getId(), 3, callContext,
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 1), new LocalDate(2012, 5, 5), InvoiceItemType.USAGE, BigDecimal.ZERO));
+
+ // Record usage for second month
+ recordUsageData(aoSubscription.getId(), "bullets", new LocalDate(2012, 5, 5), 100L, callContext);
+ recordUsageData(aoSubscription.getId(), "bullets", new LocalDate(2012, 6, 4), 100L, callContext);
+
+ // 2012-06-05
+ busHandler.pushExpectedEvents(NextEvent.NULL_INVOICE, NextEvent.INVOICE, NextEvent.PAYMENT, NextEvent.INVOICE_PAYMENT);
+ clock.addMonths(1);
+ assertListenerStatus();
+
+ invoiceChecker.checkInvoice(account.getId(), 4, callContext,
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 5, 5), new LocalDate(2012, 6, 5), InvoiceItemType.USAGE, new BigDecimal("5.90")));
+
+ aoExpectedCTD = new DateTime("2012-06-05T00:00:00.000Z");
+ assertEquals(subscriptionBaseInternalApiApi.getSubscriptionFromId(aoSubscription.getId(), internalCallContext).getChargedThroughDate().compareTo(aoExpectedCTD), 0);
+ }
}
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithTaxItems.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithTaxItems.java
index 2710710..0a14679 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithTaxItems.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithTaxItems.java
@@ -251,6 +251,102 @@ public class TestWithTaxItems extends TestIntegrationBase {
}
@Test(groups = "slow")
+ public void testTaxRateStartAndEndDate() throws Exception {
+ // Set clock to the initial start date - we implicitly assume here that the account timezone is UTC
+ clock.setDay(new LocalDate(2017, 11, 15));
+
+ final AccountData accountData = getAccountData(null);
+ final Account account = createAccountWithNonOsgiPaymentMethod(accountData);
+ accountChecker.checkAccount(account.getId(), accountData, callContext);
+
+ // Create original subscription (Trial PHASE) -> $0 invoice.
+ final DefaultEntitlement bpSubscription = createBaseEntitlementAndCheckForCompletion(
+ account.getId(),
+ "bundleKey",
+ "Pistol",
+ ProductCategory.BASE,
+ BillingPeriod.MONTHLY,
+ NextEvent.CREATE,
+ NextEvent.BLOCK,
+ NextEvent.INVOICE
+ );
+ invoiceChecker.checkInvoice(account.getId(), 1, callContext, new ExpectedInvoiceItemCheck(new LocalDate(2017, 11, 15), null, InvoiceItemType.FIXED, new BigDecimal("0")));
+ subscriptionChecker.checkSubscriptionCreated(bpSubscription.getId(), internalCallContext);
+
+ busHandler.pushExpectedEvents(NextEvent.INVOICE);
+ invoiceUserApi.insertCredit(account.getId(), new BigDecimal("100"), clock.getUTCToday(), account.getCurrency(), true, "VIP", null, null, callContext);
+ assertListenerStatus();
+
+ invoiceChecker.checkInvoice(account.getId(), 2, callContext,
+ new ExpectedInvoiceItemCheck(new LocalDate(2017, 11, 15), new LocalDate(2017, 11, 15), InvoiceItemType.CBA_ADJ, new BigDecimal("100")),
+ new ExpectedInvoiceItemCheck(new LocalDate(2017, 11, 15), new LocalDate(2017, 11, 15), InvoiceItemType.CREDIT_ADJ, new BigDecimal("-100")));
+
+
+ // Make sure TestInvoicePluginApi will return an additional TAX item
+ testInvoicePluginApi.addTaxItem(
+ new TaxInvoiceItem(
+ UUID.randomUUID(),
+ null,
+ null,
+ account.getId(),
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ new LocalDate(2017, 12, 15),
+ new LocalDate(2017, 12, 31),
+ "Tax Item 2017",
+ BigDecimal.ONE,
+ account.getCurrency(),
+ null,
+ null
+ )
+ );
+ testInvoicePluginApi.addTaxItem(
+ new TaxInvoiceItem(
+ UUID.randomUUID(),
+ null,
+ null,
+ account.getId(),
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ new LocalDate(2018, 1, 1),
+ new LocalDate(2018, 1, 15),
+ "Tax Item 2018",
+ BigDecimal.TEN,
+ account.getCurrency(),
+ null,
+ null
+ )
+ );
+
+ // Move to Evergreen PHASE to verify non-dry-run scenario
+ busHandler.pushExpectedEvents(NextEvent.PHASE, NextEvent.INVOICE);
+ clock.addDays(30);
+ assertListenerStatus();
+
+ invoiceChecker.checkInvoice(account.getId(), 3, callContext,
+ new ExpectedInvoiceItemCheck(new LocalDate(2017, 12, 15), new LocalDate(2018, 1, 15), InvoiceItemType.RECURRING, new BigDecimal("29.95")),
+ new ExpectedInvoiceItemCheck(new LocalDate(2017, 12, 15), new LocalDate(2017, 12, 31), InvoiceItemType.TAX, new BigDecimal("1.0")),
+ new ExpectedInvoiceItemCheck(new LocalDate(2018, 1, 1), new LocalDate(2018, 1, 15), InvoiceItemType.TAX, new BigDecimal("10.0")),
+ new ExpectedInvoiceItemCheck(new LocalDate(2017, 12, 15), new LocalDate(2017, 12, 15), InvoiceItemType.CBA_ADJ, new BigDecimal("-40.95")));
+ }
+
+ @Test(groups = "slow")
public void testUpdateTaxItems() throws Exception {
clock.setDay(new LocalDate(2012, 4, 1));
@@ -315,7 +411,37 @@ public class TestWithTaxItems extends TestIntegrationBase {
public List<InvoiceItem> getAdditionalInvoiceItems(final Invoice invoice, final boolean isDryRun, final Iterable<PluginProperty> pluginProperties, final CallContext callContext) {
final List<InvoiceItem> result = new ArrayList<InvoiceItem>();
for (final TaxInvoiceItem item : taxItems) {
- result.add(new TaxInvoiceItem(item.getId(), invoice.getId(), invoice.getAccountId(), item.getBundleId(), "Tax Item", item.getStartDate(), item.getAmount(), invoice.getCurrency()));
+ final String description;
+ if (item.getDescription() != null) {
+ description = item.getDescription();
+ } else {
+ description = "Tax Item";
+ }
+
+ result.add(
+ new TaxInvoiceItem(
+ item.getId(),
+ item.getCreatedDate(),
+ invoice.getId(),
+ invoice.getAccountId(),
+ item.getBundleId(),
+ item.getSubscriptionId(),
+ item.getProductName(),
+ item.getPlanName(),
+ item.getPhaseName(),
+ item.getUsageName(),
+ item.getPrettyProductName(),
+ item.getPrettyPlanName(),
+ item.getPrettyPhaseName(),
+ item.getPrettyUsageName(),
+ item.getStartDate(),
+ item.getEndDate(),
+ description,
+ item.getAmount(),
+ invoice.getCurrency(),
+ item.getLinkedItemId(),
+ item.getItemDetails())
+ );
}
return result;
}
catalog/pom.xml 2(+1 -1)
diff --git a/catalog/pom.xml b/catalog/pom.xml
index cba1319..f298df7 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-catalog</artifactId>
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultCatalogCache.java b/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultCatalogCache.java
index 02d5d9d..067bd95 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultCatalogCache.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/caching/DefaultCatalogCache.java
@@ -18,6 +18,7 @@
package org.killbill.billing.catalog.caching;
import java.util.List;
+import java.util.Set;
import javax.inject.Inject;
@@ -147,7 +148,8 @@ public class DefaultCatalogCache implements CatalogCache {
private DefaultVersionedCatalog getCatalogFromPlugins(final InternalTenantContext internalTenantContext) throws CatalogApiException {
final TenantContext tenantContext = internalCallContextFactory.createTenantContext(internalTenantContext);
- for (final String service : pluginRegistry.getAllServices()) {
+ final Set<String> allServices = pluginRegistry.getAllServices();
+ for (final String service : allServices) {
final CatalogPluginApi plugin = pluginRegistry.getServiceForName(service);
//
@@ -158,9 +160,9 @@ public class DefaultCatalogCache implements CatalogCache {
// (e.g deleted Plans...), then multiple versions must be returned.
//
final DateTime latestCatalogUpdatedDate = plugin.getLatestCatalogVersion(ImmutableList.<PluginProperty>of(), tenantContext);
- // A null latestCatalogUpdatedDate by passing caching, by fetching full catalog from plugin below (compatibility mode with 0.18.x or non optimized plugin api mode)
- //
- if (latestCatalogUpdatedDate != null) {
+ // A null latestCatalogUpdatedDate bypasses caching, by fetching full catalog from plugin below (compatibility mode with 0.18.x or non optimized plugin api mode)
+ final boolean cacheable = latestCatalogUpdatedDate != null;
+ if (cacheable) {
final DefaultVersionedCatalog tenantCatalog = cacheController.get(internalTenantContext.getTenantRecordId(), cacheLoaderArgument);
if (tenantCatalog != null) {
initializeCatalog(tenantCatalog);
@@ -174,10 +176,19 @@ public class DefaultCatalogCache implements CatalogCache {
final VersionedPluginCatalog pluginCatalog = plugin.getVersionedPluginCatalog(ImmutableList.<PluginProperty>of(), tenantContext);
// First plugin that gets something (for that tenant) returns it
if (pluginCatalog != null) {
- logger.info("Returning catalog from plugin {} on tenant {} ", service, internalTenantContext.getTenantRecordId());
+ // The log entry is only interesting if there are multiple plugins
+ if (allServices.size() > 1) {
+ logger.info("Returning catalog from plugin {} on tenant {} ", service, internalTenantContext.getTenantRecordId());
+ }
+
final DefaultVersionedCatalog resolvedPluginCatalog = versionedCatalogMapper.toVersionedCatalog(pluginCatalog, internalTenantContext);
+
+ // Always clear the cache for safety
cacheController.remove(internalTenantContext.getTenantRecordId());
- cacheController.putIfAbsent(internalTenantContext.getTenantRecordId(), resolvedPluginCatalog);
+ if (cacheable) {
+ cacheController.putIfAbsent(internalTenantContext.getTenantRecordId(), resolvedPluginCatalog);
+ }
+
return resolvedPluginCatalog;
}
}
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
index ad332e6..c898f14 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultPlan.java
@@ -247,7 +247,8 @@ public class DefaultPlan extends ValidatingConfig<StandaloneCatalog> implements
DefaultPlan.class, ""));
}
- if (recurringBillingMode == null) {
+ // Pure usage based plans would not have a recurringBillingMode
+ if (!BillingPeriod.NO_BILLING_PERIOD.equals(getRecurringBillingPeriod()) && recurringBillingMode == null) {
errors.add(new ValidationError(String.format("Invalid recurring billingMode for plan '%s'", name), DefaultPlan.class, ""));
}
diff --git a/catalog/src/main/java/org/killbill/billing/catalog/DefaultUnit.java b/catalog/src/main/java/org/killbill/billing/catalog/DefaultUnit.java
index 6bd7330..f2f7d67 100644
--- a/catalog/src/main/java/org/killbill/billing/catalog/DefaultUnit.java
+++ b/catalog/src/main/java/org/killbill/billing/catalog/DefaultUnit.java
@@ -106,12 +106,15 @@ public class DefaultUnit extends ValidatingConfig<StandaloneCatalog> implements
@Override
public void writeExternal(final ObjectOutput out) throws IOException {
out.writeUTF(name);
- out.writeUTF(prettyName);
+ out.writeBoolean(prettyName != null);
+ if (prettyName != null) {
+ out.writeUTF(prettyName);
+ }
}
@Override
public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
this.name = in.readUTF();
- this.prettyName = in.readUTF();
+ this.prettyName = in.readBoolean() ? in.readUTF() : null;
}
}
currency/pom.xml 2(+1 -1)
diff --git a/currency/pom.xml b/currency/pom.xml
index f4f35f6..8df8a92 100644
--- a/currency/pom.xml
+++ b/currency/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-currency</artifactId>
entitlement/pom.xml 2(+1 -1)
diff --git a/entitlement/pom.xml b/entitlement/pom.xml
index 9bb4d31..3477637 100644
--- a/entitlement/pom.xml
+++ b/entitlement/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-entitlement</artifactId>
invoice/pom.xml 2(+1 -1)
diff --git a/invoice/pom.xml b/invoice/pom.xml
index a272ad1..6bf9366 100644
--- a/invoice/pom.xml
+++ b/invoice/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-invoice</artifactId>
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemFactory.java b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemFactory.java
index ea0beae..bfda274 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemFactory.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/InvoiceItemFactory.java
@@ -110,7 +110,7 @@ public class InvoiceItemFactory {
item = new UsageInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, usageName, prettyProductName, prettyPlanName, prettyPlanPhaseName, prettyUsageName, startDate, endDate, description, amount, rate, currency, quantity, itemDetails);
break;
case TAX:
- item = new TaxInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, usageName, prettyProductName, prettyPlanName, prettyPlanPhaseName, prettyUsageName, startDate, description, amount, currency, linkedItemId, itemDetails);
+ item = new TaxInvoiceItem(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, productName, planName, phaseName, usageName, prettyProductName, prettyPlanName, prettyPlanPhaseName, prettyUsageName, startDate, endDate, description, amount, currency, linkedItemId, itemDetails);
break;
case PARENT_SUMMARY:
item = new ParentInvoiceItem(id, createdDate, invoiceId, accountId, childAccountId, amount, currency, description);
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/model/TaxInvoiceItem.java b/invoice/src/main/java/org/killbill/billing/invoice/model/TaxInvoiceItem.java
index 4d90d99..2757a30 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/model/TaxInvoiceItem.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/model/TaxInvoiceItem.java
@@ -37,14 +37,14 @@ public class TaxInvoiceItem extends InvoiceItemCatalogBase {
public TaxInvoiceItem(final UUID id, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final String description, final LocalDate date, final BigDecimal amount, final Currency currency) {
- this(id, null, invoiceId, accountId, bundleId, null, null, null, null, null, null, null, null, null, date, description, amount, currency, null, null);
+ this(id, null, invoiceId, accountId, bundleId, null, null, null, null, null, null, null, null, null, date, null, description, amount, currency, null, null);
}
public TaxInvoiceItem(final UUID id, @Nullable final DateTime createdDate, final UUID invoiceId, final UUID accountId, @Nullable final UUID bundleId,
@Nullable final UUID subscriptionId, @Nullable final String productName, @Nullable final String planName, @Nullable final String phaseName, @Nullable final String usageName,
@Nullable final String prettyProductName, @Nullable final String prettyPlanName, @Nullable final String prettyPhaseName, @Nullable final String prettyUsageName,
- final LocalDate date, @Nullable final String description, final BigDecimal amount, final Currency currency, @Nullable final UUID linkedItemId, @Nullable final String itemDetails) {
- super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, productName, planName, phaseName, usageName, prettyProductName, prettyPlanName, prettyPhaseName, prettyUsageName, date, null, amount, null, currency, linkedItemId, null, itemDetails, InvoiceItemType.TAX);
+ final LocalDate startDate, @Nullable final LocalDate endDate, @Nullable final String description, final BigDecimal amount, final Currency currency, @Nullable final UUID linkedItemId, @Nullable final String itemDetails) {
+ super(id, createdDate, invoiceId, accountId, bundleId, subscriptionId, description, productName, planName, phaseName, usageName, prettyProductName, prettyPlanName, prettyPhaseName, prettyUsageName, startDate, endDate, amount, null, currency, linkedItemId, null, itemDetails, InvoiceItemType.TAX);
}
@Override
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java b/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java
index b568323..47ea11f 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/usage/ContiguousIntervalUsageInArrear.java
@@ -135,23 +135,22 @@ public abstract class ContiguousIntervalUsageInArrear {
}
final LocalDate endDate = closedInterval ? internalTenantContext.toLocalDate(billingEvents.get(billingEvents.size() - 1).getEffectiveDate()) : targetDate;
- final BillingIntervalDetail bid = new BillingIntervalDetail(startDate, endDate, targetDate, getBCD(), usage.getBillingPeriod(), usage.getBillingMode());
-
- int numberOfPeriod = 0;
- // First billingCycleDate prior startDate
- LocalDate nextBillCycleDate = bid.getFutureBillingDateFor(numberOfPeriod);
if (startDate.compareTo(rawUsageStartDate) >= 0) {
transitionTimes.add(startDate);
}
- while (!nextBillCycleDate.isAfter(endDate)) {
- if (nextBillCycleDate.isAfter(startDate)) {
- if (nextBillCycleDate.compareTo(rawUsageStartDate) >= 0) {
- transitionTimes.add(nextBillCycleDate);
- }
+
+ for (int i = 0; i < billingEvents.size(); i++) {
+ final BillingEvent billingEvent = billingEvents.get(i);
+ final LocalDate transitionStartDate = internalTenantContext.toLocalDate(billingEvent.getEffectiveDate());
+ if (i == billingEvents.size() - 1) {
+ addTransitionTimesForBillingEvent(transitionStartDate, endDate, billingEvent.getBillCycleDayLocal());
+ } else {
+ final BillingEvent nextBillingEvent = billingEvents.get(i + 1);
+ final LocalDate nextEndDate = internalTenantContext.toLocalDate(nextBillingEvent.getEffectiveDate());
+ addTransitionTimesForBillingEvent(transitionStartDate, nextEndDate, billingEvent.getBillCycleDayLocal());
}
- numberOfPeriod++;
- nextBillCycleDate = bid.getFutureBillingDateFor(numberOfPeriod);
}
+
if (closedInterval &&
transitionTimes.size() > 0 &&
endDate.isAfter(transitionTimes.get(transitionTimes.size() - 1))) {
@@ -161,6 +160,23 @@ public abstract class ContiguousIntervalUsageInArrear {
return this;
}
+ private void addTransitionTimesForBillingEvent(final LocalDate startDate, final LocalDate endDate, final int bcd) {
+ final BillingIntervalDetail bid = new BillingIntervalDetail(startDate, endDate, targetDate, bcd, usage.getBillingPeriod(), usage.getBillingMode());
+
+ int numberOfPeriod = 0;
+ // First billingCycleDate prior startDate
+ LocalDate nextBillCycleDate = bid.getFutureBillingDateFor(numberOfPeriod);
+ while (!nextBillCycleDate.isAfter(endDate)) {
+ if (transitionTimes.isEmpty() || nextBillCycleDate.isAfter(transitionTimes.get(transitionTimes.size() - 1))) {
+ if (nextBillCycleDate.compareTo(rawUsageStartDate) >= 0) {
+ transitionTimes.add(nextBillCycleDate);
+ }
+ }
+ numberOfPeriod++;
+ nextBillCycleDate = bid.getFutureBillingDateFor(numberOfPeriod);
+ }
+ }
+
/**
* Compute the missing usage invoice items based on what should be billed and what has been billed ($ amount comparison).
*
@@ -440,10 +456,6 @@ public abstract class ContiguousIntervalUsageInArrear {
return usage;
}
- public int getBCD() {
- return billingEvents.get(0).getBillCycleDayLocal();
- }
-
public UUID getBundleId() {
return billingEvents.get(0).getSubscription().getBundleId();
}
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/usage/SubscriptionUsageInArrear.java b/invoice/src/main/java/org/killbill/billing/invoice/usage/SubscriptionUsageInArrear.java
index b006668..a9b11f3 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/usage/SubscriptionUsageInArrear.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/usage/SubscriptionUsageInArrear.java
@@ -140,9 +140,6 @@ public class SubscriptionUsageInArrear {
final Set<UsageKey> allSeenUsage = new HashSet<UsageKey>();
for (final BillingEvent event : subscriptionBillingEvents) {
-
-
-
// Extract all in arrear /consumable usage section for that billing event.
final List<Usage> usages = findUsageInArrearUsages(event);
allSeenUsage.addAll(Collections2.transform(usages, new Function<Usage, UsageKey>() {
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/dao/TestInvoiceItemDao.java b/invoice/src/test/java/org/killbill/billing/invoice/dao/TestInvoiceItemDao.java
index 9dff772..4174435 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/dao/TestInvoiceItemDao.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/dao/TestInvoiceItemDao.java
@@ -23,6 +23,7 @@ import java.util.List;
import java.util.UUID;
import org.joda.time.LocalDate;
+import org.killbill.billing.invoice.model.TaxInvoiceItem;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -199,6 +200,22 @@ public class TestInvoiceItemDao extends InvoiceTestSuiteWithEmbeddedDB {
}
@Test(groups = "slow")
+ public void testTaxInvoiceSqlDao() throws Exception {
+ final UUID invoiceId = UUID.randomUUID();
+ final UUID accountId = account.getId();
+ final UUID bundleId = UUID.randomUUID();
+ final UUID linkedItemId = UUID.randomUUID();
+ final String description = UUID.randomUUID().toString();
+ final LocalDate startDate = new LocalDate(2012, 4, 1);
+ final LocalDate endDate = new LocalDate(2012, 5, 1);
+ final InvoiceItem taxInvoiceItem = new TaxInvoiceItem(UUID.randomUUID(), null, invoiceId, accountId, bundleId, null, null, null, null, null, null, null, null, null, startDate, endDate, description, TEN, Currency.USD, linkedItemId, null);
+ invoiceUtil.createInvoiceItem(taxInvoiceItem, context);
+
+ final InvoiceItemModelDao savedItem = invoiceUtil.getInvoiceItemById(taxInvoiceItem.getId(), context);
+ assertSameInvoiceItem(taxInvoiceItem, savedItem);
+ }
+
+ @Test(groups = "slow")
public void testExternalChargeForVariousCurrenciesInvoiceSqlDao() throws Exception {
// 0 decimal place
createAndVerifyExternalCharge(new BigDecimal("10"), Currency.VND);
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalUsageInArrear.java b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalUsageInArrear.java
new file mode 100644
index 0000000..326e3c6
--- /dev/null
+++ b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestContiguousIntervalUsageInArrear.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2014-2018 Groupon, Inc
+ * Copyright 2014-2018 The Billing Project, LLC
+ *
+ * The Billing Project licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.killbill.billing.invoice.usage;
+
+import java.math.BigDecimal;
+import java.util.Collections;
+
+import org.joda.time.DateTimeZone;
+import org.joda.time.LocalDate;
+import org.killbill.billing.catalog.DefaultTier;
+import org.killbill.billing.catalog.DefaultTieredBlock;
+import org.killbill.billing.catalog.DefaultUsage;
+import org.killbill.billing.catalog.api.BillingPeriod;
+import org.killbill.billing.catalog.api.TierBlockPolicy;
+import org.killbill.billing.catalog.api.Usage;
+import org.killbill.billing.junction.BillingEvent;
+import org.killbill.billing.usage.RawUsage;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+
+public class TestContiguousIntervalUsageInArrear extends TestUsageInArrearBase {
+
+ @Test(groups = "fast")
+ public void testVerifyTransitionTimes() {
+ final DefaultTieredBlock block = createDefaultTieredBlock("unit", 100, 1000, BigDecimal.ONE);
+ final DefaultTier tier = createDefaultTierWithBlocks(block);
+ final DefaultUsage usage = createConsumableInArrearUsage(usageName, BillingPeriod.MONTHLY, TierBlockPolicy.ALL_TIERS, tier);
+
+ final LocalDate targetDate = new LocalDate(2019, 3, 10);
+
+ final BillingEvent billingEvent1 = createMockBillingEvent(1,
+ new LocalDate(2019, 1, 1).toDateTimeAtStartOfDay(DateTimeZone.UTC),
+ BillingPeriod.MONTHLY,
+ Collections.<Usage>emptyList());
+ final BillingEvent billingEvent2 = createMockBillingEvent(1,
+ new LocalDate(2019, 1, 31).toDateTimeAtStartOfDay(DateTimeZone.UTC),
+ BillingPeriod.MONTHLY,
+ Collections.<Usage>emptyList());
+ final BillingEvent billingEvent3 = createMockBillingEvent(5,
+ new LocalDate(2019, 2, 5).toDateTimeAtStartOfDay(DateTimeZone.UTC),
+ BillingPeriod.MONTHLY,
+ Collections.<Usage>emptyList());
+ final BillingEvent billingEvent4 = createMockBillingEvent(10,
+ new LocalDate(2019, 3, 10).toDateTimeAtStartOfDay(DateTimeZone.UTC),
+ BillingPeriod.MONTHLY,
+ Collections.<Usage>emptyList());
+ final ContiguousIntervalConsumableUsageInArrear intervalConsumableInArrear = createContiguousIntervalConsumableInArrear(usage,
+ ImmutableList.<RawUsage>of(),
+ targetDate,
+ false,
+ billingEvent1,
+ billingEvent2,
+ billingEvent3,
+ billingEvent4);
+
+ Assert.assertEquals(intervalConsumableInArrear.getTransitionTimes().size(), 5);
+ Assert.assertEquals(intervalConsumableInArrear.getTransitionTimes().get(0), new LocalDate(2019, 1, 1));
+ Assert.assertEquals(intervalConsumableInArrear.getTransitionTimes().get(1), new LocalDate(2019, 2, 1));
+ Assert.assertEquals(intervalConsumableInArrear.getTransitionTimes().get(2), new LocalDate(2019, 2, 5));
+ Assert.assertEquals(intervalConsumableInArrear.getTransitionTimes().get(3), new LocalDate(2019, 3, 5));
+ Assert.assertEquals(intervalConsumableInArrear.getTransitionTimes().get(4), new LocalDate(2019, 3, 10));
+ }
+}
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestUsageInArrearBase.java b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestUsageInArrearBase.java
index 3bccb32..5daaec1 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/usage/TestUsageInArrearBase.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/usage/TestUsageInArrearBase.java
@@ -1,6 +1,6 @@
/*
- * Copyright 2014-2017 Groupon, Inc
- * Copyright 2014-2017 The Billing Project, LLC
+ * Copyright 2014-2018 Groupon, Inc
+ * Copyright 2014-2018 The Billing Project, LLC
*
* The Billing Project licenses this file to you under the Apache License, version 2.0
* (the "License"); you may not use this file except in compliance with the
@@ -178,9 +178,13 @@ public abstract class TestUsageInArrearBase extends InvoiceTestSuiteNoDB {
}
protected BillingEvent createMockBillingEvent(final DateTime effectiveDate, final BillingPeriod billingPeriod, final List<Usage> usages) {
+ return createMockBillingEvent(BCD, effectiveDate, billingPeriod, usages);
+ }
+
+ protected BillingEvent createMockBillingEvent(final int bcd, final DateTime effectiveDate, final BillingPeriod billingPeriod, final List<Usage> usages) {
final BillingEvent result = Mockito.mock(BillingEvent.class);
Mockito.when(result.getCurrency()).thenReturn(Currency.BTC);
- Mockito.when(result.getBillCycleDayLocal()).thenReturn(BCD);
+ Mockito.when(result.getBillCycleDayLocal()).thenReturn(bcd);
Mockito.when(result.getEffectiveDate()).thenReturn(effectiveDate);
Mockito.when(result.getBillingPeriod()).thenReturn(billingPeriod);
jaxrs/pom.xml 2(+1 -1)
diff --git a/jaxrs/pom.xml b/jaxrs/pom.xml
index 96f978b..bdf9cf5 100644
--- a/jaxrs/pom.xml
+++ b/jaxrs/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-jaxrs</artifactId>
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/mappers/RuntimeExceptionMapper.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/mappers/RuntimeExceptionMapper.java
index 5117e1f..f8cbbaa 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/mappers/RuntimeExceptionMapper.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/mappers/RuntimeExceptionMapper.java
@@ -1,7 +1,9 @@
/*
* Copyright 2010-2013 Ning, Inc.
+ * Copyright 2014-2018 Groupon, Inc
+ * Copyright 2014-2018 The Billing Project, LLC
*
- * Ning licenses this file to you under the Apache License, version 2.0
+ * The Billing Project licenses this file to you under the Apache License, version 2.0
* (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
*
@@ -42,9 +44,7 @@ public class RuntimeExceptionMapper extends ExceptionMapperBase implements Excep
@Override
public Response toResponse(final RuntimeException exception) {
if (exception instanceof NullPointerException) {
- // Assume bad payload
- exception.printStackTrace();
- log.warn("Exception : " + exception.getMessage());
+ log.warn("Unexpected NullPointerException", exception);
return buildBadRequestResponse(exception, uriInfo);
} else if (exception instanceof WebApplicationException) {
// e.g. com.sun.jersey.api.NotFoundException
junction/pom.xml 2(+1 -1)
diff --git a/junction/pom.xml b/junction/pom.xml
index 9a7b41b..913338f 100644
--- a/junction/pom.xml
+++ b/junction/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-junction</artifactId>
NEWS 3(+3 -0)
diff --git a/NEWS b/NEWS
index 4415ad7..17bb229 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,6 @@
+0.20.4
+ https://github.com/killbill/killbill/releases/tag/killbill-0.20.4
+
0.20.3
https://github.com/killbill/killbill/releases/tag/killbill-0.20.3
overdue/pom.xml 2(+1 -1)
diff --git a/overdue/pom.xml b/overdue/pom.xml
index a8f7184..7e33fa3 100644
--- a/overdue/pom.xml
+++ b/overdue/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-overdue</artifactId>
payment/pom.xml 2(+1 -1)
diff --git a/payment/pom.xml b/payment/pom.xml
index 9b357bb..89df62a 100644
--- a/payment/pom.xml
+++ b/payment/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-payment</artifactId>
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index b6630de..85f9cc4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
<version>0.142.7</version>
</parent>
<artifactId>killbill</artifactId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<packaging>pom</packaging>
<name>killbill</name>
<description>Library for managing recurring subscriptions and the associated billing</description>
profiles/killbill/pom.xml 2(+1 -1)
diff --git a/profiles/killbill/pom.xml b/profiles/killbill/pom.xml
index 5d9bd60..bbb20e0 100644
--- a/profiles/killbill/pom.xml
+++ b/profiles/killbill/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>killbill-profiles</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-profiles-killbill</artifactId>
diff --git a/profiles/killbill/src/main/resources/update-checker/killbill-server-update-list.properties b/profiles/killbill/src/main/resources/update-checker/killbill-server-update-list.properties
index abbeecd..305593d 100644
--- a/profiles/killbill/src/main/resources/update-checker/killbill-server-update-list.properties
+++ b/profiles/killbill/src/main/resources/update-checker/killbill-server-update-list.properties
@@ -1,128 +1,160 @@
## Top level keys
# general.notice = This notice should rarely, if ever, be used as everyone will see it
+### 0.20.x series ###
+
+# 0.20.4
+0.20.4.updates =
+0.20.4.notices = This is the latest GA release.
+0.20.4.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.4
+
+# 0.20.3
+0.20.3.updates = 0.20.4
+0.20.3.notices = We recommend upgrading to 0.20.4, our latest GA release.
+0.20.3.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.3
+
+# 0.20.2
+0.20.2.updates = 0.20.4
+0.20.2.notices = We recommend upgrading to 0.20.4, our latest GA release.
+0.20.2.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.2
+
+# 0.20.1
+0.20.1.updates = 0.20.4
+0.20.1.notices = We recommend upgrading to 0.20.4, our latest GA release.
+0.20.1.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.1
+
+# 0.20.0
+0.20.0.updates = 0.20.4
+0.20.0.notices = We recommend upgrading to 0.20.4, our latest GA release.
+0.20.0.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.0
+
### 0.19.x series ###
+# 0.19.19
+0.19.19.updates =
+0.19.19.notices = This is the latest dev release.
+0.19.19.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.19
+
# 0.19.18
-0.19.18.updates =
-0.19.18.notices = This is the latest dev release.
+0.19.18.updates = 0.19.19
+0.19.18.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.18.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.18
# 0.19.17
-0.19.17.updates = 0.19.18
-0.19.17.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.17.updates = 0.19.19
+0.19.17.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.17.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.17
# 0.19.16
-0.19.16.updates = 0.19.18
-0.19.16.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.16.updates = 0.19.19
+0.19.16.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.16.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.16
# 0.19.15
-0.19.15.updates = 0.19.18
-0.19.15.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.15.updates = 0.19.19
+0.19.15.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.15.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.15
# 0.19.14
-0.19.14.updates = 0.19.18
-0.19.14.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.14.updates = 0.19.19
+0.19.14.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.14.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.14
# 0.19.13
-0.19.13.updates = 0.19.18
-0.19.13.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.13.updates = 0.19.19
+0.19.13.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.13.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.13
# 0.19.12
-0.19.12.updates = 0.19.18
-0.19.12.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.12.updates = 0.19.19
+0.19.12.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.12.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.12
# 0.19.11
-0.19.11.updates = 0.19.18
-0.19.11.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.11.updates = 0.19.19
+0.19.11.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.11.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.11
# 0.19.10
-0.19.10.updates = 0.19.18
-0.19.10.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.10.updates = 0.19.19
+0.19.10.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.10.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.10
# 0.19.9
-0.19.9.updates = 0.19.18
-0.19.9.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.9.updates = 0.19.19
+0.19.9.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.9.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.9
# 0.19.8
-0.19.8.updates = 0.19.18
-0.19.8.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.8.updates = 0.19.19
+0.19.8.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.8.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.8
# 0.19.7
-0.19.7.updates = 0.19.18
-0.19.7.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.7.updates = 0.19.19
+0.19.7.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.7.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.7
# 0.19.6
-0.19.6.updates = 0.19.18
-0.19.6.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.6.updates = 0.19.19
+0.19.6.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.6.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.6
# 0.19.5
-0.19.5.updates = 0.19.18
-0.19.5.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.5.updates = 0.19.19
+0.19.5.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.5.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.5
# 0.19.4
-0.19.4.updates = 0.19.18
-0.19.4.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.4.updates = 0.19.19
+0.19.4.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.4.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.4
# 0.19.3
-0.19.3.updates = 0.19.18
-0.19.3.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.3.updates = 0.19.19
+0.19.3.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.3.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.3
# 0.19.2
-0.19.2.updates = 0.19.18
-0.19.2.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.2.updates = 0.19.19
+0.19.2.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.2.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.2
# 0.19.1
-0.19.1.updates = 0.19.18
-0.19.1.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.1.updates = 0.19.19
+0.19.1.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.1.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.1
# 0.19.0
-0.19.0.updates = 0.19.18
-0.19.0.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.0.updates = 0.19.19
+0.19.0.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.0.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.0
### 0.18.x series ###
# 0.18.22
0.18.22.updates =
-0.18.22.notices = This is the latest GA release.
+0.18.22.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.22.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.22
# 0.18.21
0.18.21.updates = 0.18.22
-0.18.21.notices = We recommend upgrading to 0.18.22, our latest GA release.
+0.18.21.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.21.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.21
# 0.18.20
0.18.20.updates = 0.18.22
-0.18.20.notices = We recommend upgrading to 0.18.22, our latest GA release.
+0.18.20.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.20.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.20
# 0.18.19
0.18.19.updates = 0.18.22
-0.18.19.notices = We recommend upgrading to 0.18.22, our latest GA release.
+0.18.19.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.19.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.19
# 0.18.18
0.18.18.updates = 0.18.22
-0.18.18.notices = We recommend upgrading to 0.18.22, our latest GA release.
+0.18.18.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.18.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.18
# 0.18.17
profiles/killpay/pom.xml 2(+1 -1)
diff --git a/profiles/killpay/pom.xml b/profiles/killpay/pom.xml
index ff07543..d4359cd 100644
--- a/profiles/killpay/pom.xml
+++ b/profiles/killpay/pom.xml
@@ -20,7 +20,7 @@
<parent>
<artifactId>killbill-profiles</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-profiles-killpay</artifactId>
diff --git a/profiles/killpay/src/main/resources/update-checker/killbill-server-update-list.properties b/profiles/killpay/src/main/resources/update-checker/killbill-server-update-list.properties
index abbeecd..305593d 100644
--- a/profiles/killpay/src/main/resources/update-checker/killbill-server-update-list.properties
+++ b/profiles/killpay/src/main/resources/update-checker/killbill-server-update-list.properties
@@ -1,128 +1,160 @@
## Top level keys
# general.notice = This notice should rarely, if ever, be used as everyone will see it
+### 0.20.x series ###
+
+# 0.20.4
+0.20.4.updates =
+0.20.4.notices = This is the latest GA release.
+0.20.4.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.4
+
+# 0.20.3
+0.20.3.updates = 0.20.4
+0.20.3.notices = We recommend upgrading to 0.20.4, our latest GA release.
+0.20.3.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.3
+
+# 0.20.2
+0.20.2.updates = 0.20.4
+0.20.2.notices = We recommend upgrading to 0.20.4, our latest GA release.
+0.20.2.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.2
+
+# 0.20.1
+0.20.1.updates = 0.20.4
+0.20.1.notices = We recommend upgrading to 0.20.4, our latest GA release.
+0.20.1.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.1
+
+# 0.20.0
+0.20.0.updates = 0.20.4
+0.20.0.notices = We recommend upgrading to 0.20.4, our latest GA release.
+0.20.0.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.20.0
+
### 0.19.x series ###
+# 0.19.19
+0.19.19.updates =
+0.19.19.notices = This is the latest dev release.
+0.19.19.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.19
+
# 0.19.18
-0.19.18.updates =
-0.19.18.notices = This is the latest dev release.
+0.19.18.updates = 0.19.19
+0.19.18.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.18.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.18
# 0.19.17
-0.19.17.updates = 0.19.18
-0.19.17.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.17.updates = 0.19.19
+0.19.17.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.17.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.17
# 0.19.16
-0.19.16.updates = 0.19.18
-0.19.16.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.16.updates = 0.19.19
+0.19.16.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.16.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.16
# 0.19.15
-0.19.15.updates = 0.19.18
-0.19.15.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.15.updates = 0.19.19
+0.19.15.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.15.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.15
# 0.19.14
-0.19.14.updates = 0.19.18
-0.19.14.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.14.updates = 0.19.19
+0.19.14.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.14.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.14
# 0.19.13
-0.19.13.updates = 0.19.18
-0.19.13.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.13.updates = 0.19.19
+0.19.13.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.13.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.13
# 0.19.12
-0.19.12.updates = 0.19.18
-0.19.12.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.12.updates = 0.19.19
+0.19.12.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.12.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.12
# 0.19.11
-0.19.11.updates = 0.19.18
-0.19.11.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.11.updates = 0.19.19
+0.19.11.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.11.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.11
# 0.19.10
-0.19.10.updates = 0.19.18
-0.19.10.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.10.updates = 0.19.19
+0.19.10.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.10.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.10
# 0.19.9
-0.19.9.updates = 0.19.18
-0.19.9.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.9.updates = 0.19.19
+0.19.9.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.9.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.9
# 0.19.8
-0.19.8.updates = 0.19.18
-0.19.8.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.8.updates = 0.19.19
+0.19.8.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.8.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.8
# 0.19.7
-0.19.7.updates = 0.19.18
-0.19.7.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.7.updates = 0.19.19
+0.19.7.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.7.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.7
# 0.19.6
-0.19.6.updates = 0.19.18
-0.19.6.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.6.updates = 0.19.19
+0.19.6.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.6.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.6
# 0.19.5
-0.19.5.updates = 0.19.18
-0.19.5.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.5.updates = 0.19.19
+0.19.5.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.5.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.5
# 0.19.4
-0.19.4.updates = 0.19.18
-0.19.4.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.4.updates = 0.19.19
+0.19.4.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.4.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.4
# 0.19.3
-0.19.3.updates = 0.19.18
-0.19.3.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.3.updates = 0.19.19
+0.19.3.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.3.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.3
# 0.19.2
-0.19.2.updates = 0.19.18
-0.19.2.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.2.updates = 0.19.19
+0.19.2.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.2.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.2
# 0.19.1
-0.19.1.updates = 0.19.18
-0.19.1.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.1.updates = 0.19.19
+0.19.1.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.1.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.1
# 0.19.0
-0.19.0.updates = 0.19.18
-0.19.0.notices = We recommend upgrading to 0.19.18, our latest dev release.
+0.19.0.updates = 0.19.19
+0.19.0.notices = We recommend upgrading to 0.19.19, our latest dev release.
0.19.0.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.19.0
### 0.18.x series ###
# 0.18.22
0.18.22.updates =
-0.18.22.notices = This is the latest GA release.
+0.18.22.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.22.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.22
# 0.18.21
0.18.21.updates = 0.18.22
-0.18.21.notices = We recommend upgrading to 0.18.22, our latest GA release.
+0.18.21.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.21.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.21
# 0.18.20
0.18.20.updates = 0.18.22
-0.18.20.notices = We recommend upgrading to 0.18.22, our latest GA release.
+0.18.20.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.20.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.20
# 0.18.19
0.18.19.updates = 0.18.22
-0.18.19.notices = We recommend upgrading to 0.18.22, our latest GA release.
+0.18.19.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.19.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.19
# 0.18.18
0.18.18.updates = 0.18.22
-0.18.18.notices = We recommend upgrading to 0.18.22, our latest GA release.
+0.18.18.notices = We recommend upgrading to 0.20.4, our latest GA release.
0.18.18.release-notes = https://github.com/killbill/killbill/releases/tag/killbill-0.18.18
# 0.18.17
profiles/pom.xml 2(+1 -1)
diff --git a/profiles/pom.xml b/profiles/pom.xml
index 1854566..26f2978 100644
--- a/profiles/pom.xml
+++ b/profiles/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-profiles</artifactId>
subscription/pom.xml 2(+1 -1)
diff --git a/subscription/pom.xml b/subscription/pom.xml
index ea53923..b51df5b 100644
--- a/subscription/pom.xml
+++ b/subscription/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-subscription</artifactId>
tenant/pom.xml 2(+1 -1)
diff --git a/tenant/pom.xml b/tenant/pom.xml
index 84ed3fc..e116e14 100644
--- a/tenant/pom.xml
+++ b/tenant/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-tenant</artifactId>
usage/pom.xml 2(+1 -1)
diff --git a/usage/pom.xml b/usage/pom.xml
index 92a7c90..8be45eb 100644
--- a/usage/pom.xml
+++ b/usage/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-usage</artifactId>
util/pom.xml 2(+1 -1)
diff --git a/util/pom.xml b/util/pom.xml
index c8b819c..10bfcd7 100644
--- a/util/pom.xml
+++ b/util/pom.xml
@@ -21,7 +21,7 @@
<parent>
<artifactId>killbill</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.20.4-SNAPSHOT</version>
+ <version>0.20.5-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>killbill-util</artifactId>
diff --git a/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcherProvider.java b/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcherProvider.java
index ce32de0..a99d0be 100644
--- a/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcherProvider.java
+++ b/util/src/main/java/org/killbill/billing/util/cache/CacheControllerDispatcherProvider.java
@@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
-// Build the abstraction layer between EhCache and Kill Bill
+// Build the abstraction layer between JCache and Kill Bill
public class CacheControllerDispatcherProvider implements Provider<CacheControllerDispatcher> {
private static final Logger logger = LoggerFactory.getLogger(CacheControllerDispatcherProvider.class);
@@ -56,13 +56,13 @@ public class CacheControllerDispatcherProvider implements Provider<CacheControll
final Cache cache = cacheManager.getCache(cacheType.getCacheName(), cacheType.getKeyType(), cacheType.getValueType());
if (cache == null) {
- logger.warn("Cache for cacheName='{}' not configured - check your ehcache.xml", cacheLoader.getCacheType().getCacheName());
+ logger.warn("Cache for cacheName='{}' not configured", cacheLoader.getCacheType().getCacheName());
continue;
}
Preconditions.checkState(!cache.isClosed(), "Cache '%s' should not be closed", cacheType.getCacheName());
- final CacheController<Object, Object> ehCacheBasedCacheController = new KillBillCacheController<Object, Object>(cache, cacheLoader);
- cacheControllers.put(cacheType, ehCacheBasedCacheController);
+ final CacheController<Object, Object> killBillCacheController = new KillBillCacheController<Object, Object>(cache, cacheLoader);
+ cacheControllers.put(cacheType, killBillCacheController);
}
return new CacheControllerDispatcher(cacheControllers);