killbill-memoizeit

Details

diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
index cb234a7..db4f78f 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionData.java
@@ -247,9 +247,9 @@ public class SubscriptionData extends EntityBase implements Subscription {
     public String getLastActiveProductName() {
         if (getState() == SubscriptionState.CANCELLED) {
             final SubscriptionTransitionData data = getPreviousTransitionData();
-            return data.getPreviousPlan().getName();
+            return data.getPreviousPlan().getProduct().getName();
         } else {
-            return getCurrentPlan().getName();
+            return getCurrentPlan().getProduct().getName();
         }
     }
 
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
index af1b2f4..9eee156 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiCancel.java
@@ -57,11 +57,23 @@ public abstract class TestUserApiCancel extends TestApiBase {
             final DateTime future = clock.getUTCNow();
             testListener.pushExpectedEvent(NextEvent.CANCEL);
 
+            assertEquals(subscription.getLastActiveProductName(), prod);
+            assertEquals(subscription.getLastActivePriceListName(), planSet);
+            assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+            assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
+
             // CANCEL in trial period to get IMM policy
             subscription.cancel(clock.getUTCNow(), false, context);
             currentPhase = subscription.getCurrentPhase();
             testListener.isCompleted(3000);
 
+            assertEquals(subscription.getLastActiveProductName(), prod);
+            assertEquals(subscription.getLastActivePriceListName(), planSet);
+            assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+            assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
+
             assertNull(currentPhase);
             checkNextPhaseChange(subscription, 0, null);
 
@@ -101,6 +113,11 @@ public abstract class TestUserApiCancel extends TestApiBase {
             billingApi.setChargedThroughDate(subscription.getId(), newChargedThroughDate, context);
             subscription = (SubscriptionData) entitlementApi.getSubscriptionFromId(subscription.getId());
 
+            assertEquals(subscription.getLastActiveProductName(), prod);
+            assertEquals(subscription.getLastActivePriceListName(), planSet);
+            assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+            assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
             // CANCEL
             testListener.setNonExpectedMode();
             testListener.pushExpectedEvent(NextEvent.CANCEL);
@@ -108,6 +125,12 @@ public abstract class TestUserApiCancel extends TestApiBase {
             assertFalse(testListener.isCompleted(3000));
             testListener.reset();
 
+
+            assertEquals(subscription.getLastActiveProductName(), prod);
+            assertEquals(subscription.getLastActivePriceListName(), planSet);
+            assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+            assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
             DateTime futureEndDate = subscription.getFutureEndDate();
             Assert.assertNotNull(futureEndDate);
 
@@ -124,6 +147,12 @@ public abstract class TestUserApiCancel extends TestApiBase {
             assertNull(currentPhase);
             checkNextPhaseChange(subscription, 0, null);
 
+            assertEquals(subscription.getLastActiveProductName(), prod);
+            assertEquals(subscription.getLastActivePriceListName(), planSet);
+            assertEquals(subscription.getLastActiveBillingPeriod(), term.toString());
+            assertEquals(subscription.getLastActiveCategoryName(), "BASE");
+
+
             assertListenerStatus();
         } catch (EntitlementUserApiException e) {
             Assert.fail(e.getMessage());