killbill-memoizeit
Changes
entitlement/src/main/java/com/ning/billing/entitlement/api/migration/AccountMigrationData.java 11(+6 -5)
entitlement/src/main/java/com/ning/billing/entitlement/api/migration/DefaultEntitlementMigrationApi.java 10(+7 -3)
Details
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/migration/AccountMigrationData.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/migration/AccountMigrationData.java
index 560516e..4949d4b 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/migration/AccountMigrationData.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/migration/AccountMigrationData.java
@@ -18,6 +18,8 @@ package com.ning.billing.entitlement.api.migration;
import java.util.List;
+import org.joda.time.DateTime;
+
import com.ning.billing.entitlement.api.user.DefaultSubscriptionFactory.SubscriptionBuilder;
import com.ning.billing.entitlement.api.user.SubscriptionBundleData;
import com.ning.billing.entitlement.api.user.SubscriptionData;
@@ -64,14 +66,13 @@ public class AccountMigrationData {
private final List<EntitlementEvent> initialEvents;
public SubscriptionMigrationData(final SubscriptionData data,
- final List<EntitlementEvent> initialEvents) {
+ final List<EntitlementEvent> initialEvents,
+ final DateTime ctd) {
super();
// Set CTD to subscription object from MIGRATION_BILLING event
final SubscriptionBuilder builder = new SubscriptionBuilder(data);
- for (final EntitlementEvent cur : initialEvents) {
- if (cur instanceof ApiEventMigrateBilling) {
- builder.setChargedThroughDate(cur.getEffectiveDate());
- }
+ if (ctd != null) {
+ builder.setChargedThroughDate(ctd);
}
this.data = new SubscriptionData(builder);
this.initialEvents = initialEvents;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/migration/DefaultEntitlementMigrationApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/migration/DefaultEntitlementMigrationApi.java
index 21f7e7a..1ea22b7 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/migration/DefaultEntitlementMigrationApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/migration/DefaultEntitlementMigrationApi.java
@@ -142,7 +142,7 @@ public class DefaultEntitlementMigrationApi implements EntitlementMigrationApi {
.setBundleStartDate(migrationStartDate)
.setAlignStartDate(migrationStartDate),
emptyEvents);
- return new SubscriptionMigrationData(subscriptionData, toEvents(subscriptionData, now, ctd, events, context));
+ return new SubscriptionMigrationData(subscriptionData, toEvents(subscriptionData, now, ctd, events, context), ctd);
}
private SubscriptionMigrationData createSubscriptionMigrationDataWithBundleDate(final UUID bundleId, final ProductCategory productCategory,
@@ -158,12 +158,13 @@ public class DefaultEntitlementMigrationApi implements EntitlementMigrationApi {
.setBundleStartDate(bundleStartDate)
.setAlignStartDate(migrationStartDate),
emptyEvents);
- return new SubscriptionMigrationData(subscriptionData, toEvents(subscriptionData, now, ctd, events, context));
+ return new SubscriptionMigrationData(subscriptionData, toEvents(subscriptionData, now, ctd, events, context), ctd);
}
private List<EntitlementEvent> toEvents(final SubscriptionData subscriptionData, final DateTime now, final DateTime ctd, final TimedMigration[] migrationEvents, final CallContext context) {
ApiEventMigrateEntitlement creationEvent = null;
final List<EntitlementEvent> events = new ArrayList<EntitlementEvent>(migrationEvents.length);
+ DateTime subsciptionCancelledDate = null;
for (final TimedMigration cur : migrationEvents) {
if (cur.getEventType() == EventType.PHASE) {
@@ -194,6 +195,7 @@ public class DefaultEntitlementMigrationApi implements EntitlementMigrationApi {
events.add(new ApiEventChange(builder));
break;
case CANCEL:
+ subsciptionCancelledDate = cur.getEventTime();
events.add(new ApiEventCancel(builder));
break;
default:
@@ -206,7 +208,9 @@ public class DefaultEntitlementMigrationApi implements EntitlementMigrationApi {
if (creationEvent == null || ctd == null) {
throw new EntitlementError(String.format("Could not create migration billing event ctd = %s", ctd));
}
- events.add(new ApiEventMigrateBilling(creationEvent, ctd));
+ if (subsciptionCancelledDate == null || subsciptionCancelledDate.isAfter(ctd)) {
+ events.add(new ApiEventMigrateBilling(creationEvent, ctd));
+ }
Collections.sort(events, new Comparator<EntitlementEvent>() {
int compForApiType(final EntitlementEvent o1, final EntitlementEvent o2, final ApiEventType type) {
ApiEventType apiO1 = null;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/transfer/DefaultEntitlementTransferApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/transfer/DefaultEntitlementTransferApi.java
index b3f5277..bacb6f6 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/transfer/DefaultEntitlementTransferApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/transfer/DefaultEntitlementTransferApi.java
@@ -253,7 +253,7 @@ public class DefaultEntitlementTransferApi implements EntitlementTransferApi {
ImmutableList.<EntitlementEvent>of());
final List<EntitlementEvent> events = toEvents(existingEvents, subscriptionData, effectiveTransferDate, context);
- final SubscriptionMigrationData curData = new SubscriptionMigrationData(subscriptionData, events);
+ final SubscriptionMigrationData curData = new SubscriptionMigrationData(subscriptionData, events, null);
subscriptionMigrationDataList.add(curData);
}
BundleMigrationData bundleMigrationData = new BundleMigrationData(subscriptionBundleData, subscriptionMigrationDataList);
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/migration/TestMigration.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/migration/TestMigration.java
index 2d2a451..0e6bfe2 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/migration/TestMigration.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/migration/TestMigration.java
@@ -153,7 +153,8 @@ public abstract class TestMigration extends TestApiBase {
assertEquals(subscription.getCurrentPlan().getName(), "assault-rifle-annual");
assertEquals(subscription.getChargedThroughDate(), startDate.plusYears(1));
- testListener.pushExpectedEvent(NextEvent.MIGRATE_BILLING);
+ // The MIGRATE_BILLING will not be there because the subscription is cancelled at the same date so no BILLING should occur
+ //testListener.pushExpectedEvent(NextEvent.MIGRATE_BILLING);
testListener.pushExpectedEvent(NextEvent.CANCEL);
final Interval it = new Interval(clock.getUTCNow(), clock.getUTCNow().plusYears(1));