killbill-memoizeit
Changes
junction/src/main/java/org/killbill/billing/junction/plumbing/billing/BlockingCalculator.java 4(+2 -2)
junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEvent.java 68(+32 -36)
junction/src/test/java/org/killbill/billing/junction/plumbing/billing/TestBlockingCalculator.java 90(+41 -49)
Details
diff --git a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/BlockingCalculator.java b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/BlockingCalculator.java
index 8452ca2..391dbfe 100644
--- a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/BlockingCalculator.java
+++ b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/BlockingCalculator.java
@@ -254,7 +254,7 @@ public class BlockingCalculator {
final SubscriptionBaseTransitionType type = SubscriptionBaseTransitionType.START_BILLING_DISABLED;
final Long totalOrdering = globaltotalOrder.getAndIncrement();
- return new DefaultBillingEvent(((DefaultBillingEvent) previousEvent).getSubscription(), effectiveDate, true, plan, planPhase, fixedPrice, recurringPrice,
+ return new DefaultBillingEvent(((DefaultBillingEvent) previousEvent).getSubscription(), effectiveDate, plan, planPhase, fixedPrice, recurringPrice,
currency,
billingPeriod, billCycleDay,
description, totalOrdering, type, true);
@@ -274,7 +274,7 @@ public class BlockingCalculator {
final SubscriptionBaseTransitionType type = SubscriptionBaseTransitionType.END_BILLING_DISABLED;
final Long totalOrdering = globaltotalOrder.getAndIncrement();
- return new DefaultBillingEvent(((DefaultBillingEvent) previousEvent).getSubscription(), effectiveDate, true, plan, planPhase, fixedPrice, recurringPrice,
+ return new DefaultBillingEvent(((DefaultBillingEvent) previousEvent).getSubscription(), effectiveDate, plan, planPhase, fixedPrice, recurringPrice,
currency,
billingPeriod, billCycleDay,
description, totalOrdering, type, false);
diff --git a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEvent.java b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEvent.java
index 628ad61..bd977db 100644
--- a/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEvent.java
+++ b/junction/src/main/java/org/killbill/billing/junction/plumbing/billing/DefaultBillingEvent.java
@@ -22,8 +22,6 @@ import java.math.BigDecimal;
import java.util.List;
import java.util.UUID;
-import javax.annotation.Nullable;
-
import org.joda.time.DateTime;
import org.killbill.billing.catalog.api.BillingAlignment;
import org.killbill.billing.catalog.api.BillingPeriod;
@@ -38,6 +36,7 @@ import org.killbill.billing.subscription.api.SubscriptionBase;
import org.killbill.billing.subscription.api.SubscriptionBaseTransitionType;
import org.killbill.billing.subscription.api.user.SubscriptionBillingEvent;
+import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
@@ -64,7 +63,7 @@ public class DefaultBillingEvent implements BillingEvent {
private final List<Usage> usages;
- private final boolean isDisableEvent;
+ private final boolean isCancelledOrBlocked;
private final DateTime catalogEffectiveDate;
@@ -72,44 +71,41 @@ public class DefaultBillingEvent implements BillingEvent {
// TODO Ugly, can that go completely ?
private final SubscriptionBase subscription;
- public DefaultBillingEvent(final SubscriptionBillingEvent transition,
+ public DefaultBillingEvent(final SubscriptionBillingEvent inputEvent,
final SubscriptionBase subscription,
final int billCycleDayLocal,
final BillingAlignment billingAlignment,
final Currency currency,
final Catalog catalog) throws CatalogApiException {
- final boolean isActive = transition.getType() != SubscriptionBaseTransitionType.CANCEL;
this.subscription = subscription;
this.subscriptionId = subscription.getId();
this.bundleId = subscription.getBundleId();
- this.type = transition.getType();
- this.plan = transition.getPlanName() != null ? catalog.findPlan(transition.getPlanName(), transition.getEffectiveDate(), subscription.getStartDate()) : null;
- this.planPhase = transition.getPlanPhaseName() != null && this.plan != null ? this.plan.findPhase(transition.getPlanPhaseName()) : null;
- this.billingPeriod = getRecurringBillingPeriod(planPhase);
+ this.isCancelledOrBlocked = inputEvent.getType() == SubscriptionBaseTransitionType.CANCEL;
+
+ this.type = inputEvent.getType();
+ this.plan = catalog.findPlan(inputEvent.getPlanName(), inputEvent.getEffectiveDate(), subscription.getStartDate());
+ this.planPhase = this.plan.findPhase(inputEvent.getPlanPhaseName());
- this.catalogEffectiveDate = plan == null ? null : new DateTime(plan.getCatalog().getEffectiveDate());
+ this.catalogEffectiveDate = new DateTime(plan.getCatalog().getEffectiveDate());
+ this.currency = currency;
this.billCycleDayLocal = billCycleDayLocal;
this.billingAlignment = billingAlignment;
- this.currency = currency;
- this.description = transition.getType().toString();
- this.effectiveDate = transition.getEffectiveDate();
- this.isDisableEvent = false;
- this.totalOrdering = transition.getTotalOrdering();
- this.usages = initializeUsage(isActive);
+ this.description = inputEvent.getType().toString();
+ this.effectiveDate = inputEvent.getEffectiveDate();
+ this.totalOrdering = inputEvent.getTotalOrdering();
+ this.billingPeriod = computeRecurringBillingPeriod();
this.fixedPrice = computeFixedPrice();
this.recurringPrice = computeRecurringPrice();
-
-
+ this.usages = computeUsages();
}
public DefaultBillingEvent(final SubscriptionBase subscription,
final DateTime effectiveDate,
- final boolean isActive,
final Plan plan,
final PlanPhase planPhase,
final BigDecimal fixedPrice,
@@ -124,22 +120,25 @@ public class DefaultBillingEvent implements BillingEvent {
this.subscription = subscription;
+
this.subscriptionId = subscription.getId();
this.bundleId = subscription.getBundleId();
this.effectiveDate = effectiveDate;
+
+ this.isCancelledOrBlocked = isDisableEvent;
+
this.plan = plan;
this.planPhase = planPhase;
+ this.billingPeriod = billingPeriod;
this.fixedPrice = fixedPrice;
this.recurringPrice = recurringPrice;
this.currency = currency;
- this.billingPeriod = billingPeriod;
this.billCycleDayLocal = billCycleDayLocal;
this.description = description;
this.type = type;
this.totalOrdering = totalOrdering;
- this.usages = initializeUsage(isActive);
- this.isDisableEvent = isDisableEvent;
- this.catalogEffectiveDate = plan != null ? new DateTime(plan.getCatalog().getEffectiveDate()) : null;
+ this.usages = computeUsages();
+ this.catalogEffectiveDate = new DateTime(plan.getCatalog().getEffectiveDate());
this.billingAlignment = null;
}
@@ -353,33 +352,30 @@ public class DefaultBillingEvent implements BillingEvent {
}
private BigDecimal computeFixedPrice() throws CatalogApiException {
- if (type == SubscriptionBaseTransitionType.BCD_CHANGE || type == SubscriptionBaseTransitionType.CANCEL) {
+ if (isCancelledOrBlocked ||
+ type == SubscriptionBaseTransitionType.BCD_CHANGE /* We don't want to bill twice for the same fixed price */) {
return null;
}
- return (planPhase != null && planPhase.getFixed() != null && planPhase.getFixed().getPrice() != null) ? planPhase.getFixed().getPrice().getPrice(currency) : null;
+ return (planPhase.getFixed() != null && planPhase.getFixed().getPrice() != null) ? planPhase.getFixed().getPrice().getPrice(currency) : null;
}
private BigDecimal computeRecurringPrice() throws CatalogApiException {
- // TODO why is logic different than fixedPrice ?
- if (isDisableEvent || type == SubscriptionBaseTransitionType.CANCEL) {
+ if (isCancelledOrBlocked) {
return null;
}
- return (planPhase != null && planPhase.getRecurring() != null && planPhase.getRecurring().getRecurringPrice() != null) ? planPhase.getRecurring().getRecurringPrice().getPrice(currency) : null;
+ return (planPhase.getRecurring() != null && planPhase.getRecurring().getRecurringPrice() != null) ? planPhase.getRecurring().getRecurringPrice().getPrice(currency) : null;
}
- private BillingPeriod getRecurringBillingPeriod(@Nullable final PlanPhase nextPhase) {
- if (nextPhase == null) {
- return BillingPeriod.NO_BILLING_PERIOD;
- }
- return nextPhase.getRecurring() != null ? nextPhase.getRecurring().getBillingPeriod() : BillingPeriod.NO_BILLING_PERIOD;
+ private BillingPeriod computeRecurringBillingPeriod() {
+ return planPhase.getRecurring() != null ? planPhase.getRecurring().getBillingPeriod() : BillingPeriod.NO_BILLING_PERIOD;
}
- private List<Usage> initializeUsage(final boolean isActive) {
+ private List<Usage> computeUsages() {
List<Usage> result = ImmutableList.<Usage>of();
- if (!isActive) {
+ if (isCancelledOrBlocked) {
return result;
}
- if (planPhase != null && planPhase.getUsages().length > 0) {
+ if (planPhase.getUsages().length > 0) {
result = Lists.newArrayList();
for (Usage usage : planPhase.getUsages()) {
result.add(usage);
diff --git a/junction/src/test/java/org/killbill/billing/junction/plumbing/billing/TestBlockingCalculator.java b/junction/src/test/java/org/killbill/billing/junction/plumbing/billing/TestBlockingCalculator.java
index cbdd84f..a583d92 100644
--- a/junction/src/test/java/org/killbill/billing/junction/plumbing/billing/TestBlockingCalculator.java
+++ b/junction/src/test/java/org/killbill/billing/junction/plumbing/billing/TestBlockingCalculator.java
@@ -114,10 +114,10 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
public void testInsertBlockingEventsForBundle() throws CatalogApiException {
final DateTime now = clock.getUTCNow();
- final BillingEvent A = createRealEvent(now.minusDays(1).minusHours(1), subscription1);
- final BillingEvent B = createRealEvent(now.minusDays(1), subscription2);
- final BillingEvent C = createRealEvent(now.plusDays(1), subscription2);
- final BillingEvent D = createRealEvent(now.plusDays(3), subscription3);
+ final BillingEvent A = createRealEvent(subscription1, now.minusDays(1).minusHours(1));
+ final BillingEvent B = createRealEvent(subscription2, now.minusDays(1));
+ final BillingEvent C = createRealEvent(subscription2, now.plusDays(1));
+ final BillingEvent D = createRealEvent(subscription3, now.plusDays(3));
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
billingEvents.add(A);
billingEvents.add(B);
@@ -161,7 +161,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, null));
- billingEvents.add(createRealEvent(now.minusDays(1), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.minusDays(1)));
final SortedSet<BillingEvent> results = blockingCalculator.eventsToRemove(disabledDuration, billingEvents);
@@ -177,8 +177,8 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, null));
- final BillingEvent e1 = createRealEvent(now.minusDays(1), subscription1);
- final BillingEvent e2 = createRealEvent(now.plusDays(1), subscription1);
+ final BillingEvent e1 = createRealEvent(subscription1, now.minusDays(1));
+ final BillingEvent e2 = createRealEvent(subscription1, now.plusDays(1));
billingEvents.add(e1);
billingEvents.add(e2);
@@ -197,7 +197,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, null));
- final BillingEvent e1 = createRealEvent(now.plusDays(1), subscription1);
+ final BillingEvent e1 = createRealEvent(subscription1, now.plusDays(1));
billingEvents.add(e1);
final SortedSet<BillingEvent> results = blockingCalculator.eventsToRemove(disabledDuration, billingEvents);
@@ -215,7 +215,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, null));
- final BillingEvent e1 = createRealEvent(now, subscription1);
+ final BillingEvent e1 = createRealEvent(subscription1, now);
billingEvents.add(e1);
final SortedSet<BillingEvent> results = blockingCalculator.eventsToRemove(disabledDuration, billingEvents);
@@ -233,7 +233,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- final BillingEvent e1 = createRealEvent(now.minusDays(1), subscription1);
+ final BillingEvent e1 = createRealEvent(subscription1, now.minusDays(1));
billingEvents.add(e1);
final SortedSet<BillingEvent> results = blockingCalculator.eventsToRemove(disabledDuration, billingEvents);
@@ -250,8 +250,8 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- final BillingEvent e1 = createRealEvent(now.minusDays(1), subscription1);
- final BillingEvent e2 = createRealEvent(now.plusDays(1), subscription1);
+ final BillingEvent e1 = createRealEvent(subscription1, now.minusDays(1));
+ final BillingEvent e2 = createRealEvent(subscription1, now.plusDays(1));
billingEvents.add(e1);
billingEvents.add(e2);
@@ -270,9 +270,9 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- final BillingEvent e1 = createRealEvent(now.minusDays(1), subscription1);
- final BillingEvent e2 = createRealEvent(now.plusDays(1), subscription1);
- final BillingEvent e3 = createRealEvent(now.plusDays(3), subscription1);
+ final BillingEvent e1 = createRealEvent(subscription1, now.minusDays(1));
+ final BillingEvent e2 = createRealEvent(subscription1, now.plusDays(1));
+ final BillingEvent e3 = createRealEvent(subscription1, now.plusDays(3));
billingEvents.add(e1);
billingEvents.add(e2);
billingEvents.add(e3);
@@ -292,7 +292,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- final BillingEvent e2 = createRealEvent(now.plusDays(1), subscription1);
+ final BillingEvent e2 = createRealEvent(subscription1, now.plusDays(1));
billingEvents.add(e2);
final SortedSet<BillingEvent> results = blockingCalculator.eventsToRemove(disabledDuration, billingEvents);
@@ -311,8 +311,8 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- final BillingEvent e2 = createRealEvent(now.plusDays(1), subscription1);
- final BillingEvent e3 = createRealEvent(now.plusDays(3), subscription1);
+ final BillingEvent e2 = createRealEvent(subscription1, now.plusDays(1));
+ final BillingEvent e3 = createRealEvent(subscription1, now.plusDays(3));
billingEvents.add(e2);
billingEvents.add(e3);
@@ -332,7 +332,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- final BillingEvent e3 = createRealEvent(now.plusDays(3), subscription1);
+ final BillingEvent e3 = createRealEvent(subscription1, now.plusDays(3));
billingEvents.add(e3);
@@ -350,7 +350,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, null));
- billingEvents.add(createRealEvent(now.minusDays(1), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.minusDays(1)));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -371,8 +371,8 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, null));
- billingEvents.add(createRealEvent(now.minusDays(1), subscription1));
- billingEvents.add(createRealEvent(now.plusDays(1), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.minusDays(1)));
+ billingEvents.add(createRealEvent(subscription1, now.plusDays(1)));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -393,7 +393,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, null));
- billingEvents.add(createRealEvent(now.plusDays(1), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.plusDays(1)));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -409,7 +409,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, null));
- billingEvents.add(createRealEvent(now, subscription1));
+ billingEvents.add(createRealEvent(subscription1, now));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -425,7 +425,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- billingEvents.add(createRealEvent(now.minusDays(1), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.minusDays(1)));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -450,8 +450,8 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- billingEvents.add(createRealEvent(now.minusDays(1), subscription1));
- billingEvents.add(createRealEvent(now.plusDays(1), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.minusDays(1)));
+ billingEvents.add(createRealEvent(subscription1, now.plusDays(1)));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -475,9 +475,9 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- billingEvents.add(createRealEvent(now.minusDays(1), subscription1));
- billingEvents.add(createRealEvent(now.plusDays(1), subscription1));
- billingEvents.add(createRealEvent(now.plusDays(3), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.minusDays(1)));
+ billingEvents.add(createRealEvent(subscription1, now.plusDays(1)));
+ billingEvents.add(createRealEvent(subscription1, now.plusDays(3)));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -501,7 +501,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- billingEvents.add(createRealEvent(now.plusDays(1), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.plusDays(1)));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -520,7 +520,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- billingEvents.add(createRealEvent(now.plusDays(1), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.plusDays(1)));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -539,7 +539,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> billingEvents = new TreeSet<BillingEvent>();
disabledDuration.add(new DisabledDuration(now, now.plusDays(2)));
- billingEvents.add(createRealEvent(now.plusDays(3), subscription1));
+ billingEvents.add(createRealEvent(subscription1, now.plusDays(3)));
final SortedSet<BillingEvent> results = blockingCalculator.createNewEvents(disabledDuration, billingEvents, catalogInternalApi.getFullCatalog(true, true, internalCallContext), internalCallContext);
@@ -552,10 +552,10 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
final SortedSet<BillingEvent> events = new TreeSet<BillingEvent>();
- events.add(createRealEvent(now.minusDays(10), subscription1));
- events.add(createRealEvent(now.minusDays(6), subscription1));
- events.add(createRealEvent(now.minusDays(5), subscription1));
- events.add(createRealEvent(now.minusDays(1), subscription1));
+ events.add(createRealEvent(subscription1, now.minusDays(10)));
+ events.add(createRealEvent(subscription1, now.minusDays(6)));
+ events.add(createRealEvent(subscription1, now.minusDays(5)));
+ events.add(createRealEvent(subscription1, now.minusDays(1)));
final BillingEvent minus11 = blockingCalculator.precedingBillingEventForSubscription(now.minusDays(11), events);
assertNull(minus11);
@@ -590,7 +590,8 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
@Test(groups = "fast")
public void testCreateNewDisableEvent() throws CatalogApiException {
final DateTime now = clock.getUTCNow();
- final BillingEvent event = new MockBillingEvent();
+
+ final BillingEvent event = createRealEvent(subscription1, now);
final BillingEvent result = blockingCalculator.createNewDisableEvent(now, event, null);
assertEquals(result.getBillCycleDayLocal(), event.getBillCycleDayLocal());
@@ -610,7 +611,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
@Test(groups = "fast")
public void testCreateNewReenableEvent() throws CatalogApiException {
final DateTime now = clock.getUTCNow();
- final BillingEvent event = new MockBillingEvent();
+ final BillingEvent event = createRealEvent(subscription1, now);
final BillingEvent result = blockingCalculator.createNewReenableEvent(now, event, null, internalCallContext);
assertEquals(result.getBillCycleDayLocal(), event.getBillCycleDayLocal());
@@ -627,14 +628,6 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
assertEquals(result.getTotalOrdering(), (Long) (BlockingCalculator.getGlobalTotalOrder().get() - 1));
}
- private class MockBillingEvent extends DefaultBillingEvent {
-
- public MockBillingEvent() throws CatalogApiException {
- super(subscription1, clock.getUTCNow(), true, null, null, BigDecimal.ZERO, BigDecimal.ZERO, Currency.USD, BillingPeriod.ANNUAL,
- 4, "", 3L, SubscriptionBaseTransitionType.CREATE, false);
- }
- }
-
@Test(groups = "fast")
public void testCreateBundleSubscriptionMap() {
final SortedSet<BillingEvent> events = new TreeSet<BillingEvent>();
@@ -828,7 +821,7 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
return createRealEvent( subscription, new DateTime(), SubscriptionBaseTransitionType.CREATE, totalOrdering);
}
- protected BillingEvent createRealEvent(final DateTime effectiveDate, final SubscriptionBase subscription) {
+ protected BillingEvent createRealEvent(final SubscriptionBase subscription, final DateTime effectiveDate) {
return createRealEvent(subscription, effectiveDate, SubscriptionBaseTransitionType.CHANGE);
}
@@ -859,7 +852,6 @@ public class TestBlockingCalculator extends JunctionTestSuiteNoDB {
return new DefaultBillingEvent(subscription,
effectiveDate,
- true,
plan,
planPhase,
fixedPrice,
diff --git a/junction/src/test/java/org/killbill/billing/junction/plumbing/billing/TestDefaultBillingEvent.java b/junction/src/test/java/org/killbill/billing/junction/plumbing/billing/TestDefaultBillingEvent.java
index 8aeab7e..9ae56ef 100644
--- a/junction/src/test/java/org/killbill/billing/junction/plumbing/billing/TestDefaultBillingEvent.java
+++ b/junction/src/test/java/org/killbill/billing/junction/plumbing/billing/TestDefaultBillingEvent.java
@@ -184,7 +184,7 @@ public class TestDefaultBillingEvent extends JunctionTestSuiteNoDB {
final Plan shotgun = new MockPlan();
final PlanPhase shotgunMonthly = createMockMonthlyPlanPhase(null, BigDecimal.ZERO, PhaseType.TRIAL);
- return new DefaultBillingEvent(sub, effectiveDate, true,
+ return new DefaultBillingEvent(sub, effectiveDate,
shotgun, shotgunMonthly, BigDecimal.ZERO, BigDecimal.ZERO,
Currency.USD, BillingPeriod.NO_BILLING_PERIOD, billCycleDay,
"Test Event 1", totalOrdering, type, false);
diff --git a/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBillingEvent.java b/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBillingEvent.java
index 6ae9725..51f271a 100644
--- a/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBillingEvent.java
+++ b/subscription/src/main/java/org/killbill/billing/subscription/api/user/DefaultSubscriptionBillingEvent.java
@@ -74,4 +74,17 @@ public class DefaultSubscriptionBillingEvent implements SubscriptionBillingEvent
public Integer getBcdLocal() {
return bcdLocal;
}
+
+ @Override
+ public String toString() {
+ return "DefaultSubscriptionBillingEvent{" +
+ "type=" + type +
+ ", planName='" + planName + '\'' +
+ ", planPhaseName='" + planPhaseName + '\'' +
+ ", effectiveDate=" + effectiveDate +
+ ", totalOrdering=" + totalOrdering +
+ ", lastChangePlanDate=" + lastChangePlanDate +
+ ", bcdLocal=" + bcdLocal +
+ '}';
+ }
}