Details
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java b/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
index 4eaadff..9c280fe 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
@@ -79,6 +79,14 @@ public interface Subscription extends Entity, Blockable {
public PlanPhase getCurrentPhase();
+ public String getLastActiveProductName();
+
+ public String getLastActivePriceListName();
+
+ public String getLastActiveCategoryName();
+
+ public String getLastActiveBillingPeriod();
+
public DateTime getChargedThroughDate();
public DateTime getPaidThroughDate();
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 fe7d666..cb234a7 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
@@ -243,6 +243,46 @@ public class SubscriptionData extends EntityBase implements Subscription {
return new DefaultEffectiveSubscriptionEvent(data, alignStartDate);
}
+ @Override
+ public String getLastActiveProductName() {
+ if (getState() == SubscriptionState.CANCELLED) {
+ final SubscriptionTransitionData data = getPreviousTransitionData();
+ return data.getPreviousPlan().getName();
+ } else {
+ return getCurrentPlan().getName();
+ }
+ }
+
+ @Override
+ public String getLastActivePriceListName() {
+ if (getState() == SubscriptionState.CANCELLED) {
+ final SubscriptionTransitionData data = getPreviousTransitionData();
+ return data.getPreviousPriceList().getName();
+ } else {
+ return getCurrentPriceList().getName();
+ }
+ }
+
+ @Override
+ public String getLastActiveCategoryName() {
+ if (getState() == SubscriptionState.CANCELLED) {
+ final SubscriptionTransitionData data = getPreviousTransitionData();
+ return data.getPreviousPlan().getProduct().getCategory().name();
+ } else {
+ return getCurrentPlan().getProduct().getCategory().name();
+ }
+ }
+
+ @Override
+ public String getLastActiveBillingPeriod() {
+ if (getState() == SubscriptionState.CANCELLED) {
+ final SubscriptionTransitionData data = getPreviousTransitionData();
+ return data.getPreviousPlan().getBillingPeriod().name();
+ } else {
+ return getCurrentPlan().getBillingPeriod().name();
+ }
+ }
+
protected SubscriptionTransitionData getPreviousTransitionData() {
if (transitions == null) {
return null;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java
index d7df43b..291eec4 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java
@@ -22,6 +22,7 @@ import javax.annotation.Nullable;
import org.joda.time.DateTime;
+import com.ning.billing.catalog.api.Plan;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.util.audit.AuditLog;
@@ -67,10 +68,10 @@ public class SubscriptionJsonNoEvents extends SubscriptionJsonSimple {
this(data.getId().toString(),
data.getBundleId().toString(),
data.getStartDate(),
- data.getCurrentPlan() != null ? data.getCurrentPlan().getProduct().getName() : null,
- data.getCurrentPlan() != null ? data.getCurrentPlan().getProduct().getCategory().toString() : null,
- data.getCurrentPlan() != null ? data.getCurrentPlan().getBillingPeriod().toString() : null,
- data.getCurrentPriceList() != null ? data.getCurrentPriceList().getName() : null,
+ data.getLastActiveProductName(),
+ data.getLastActiveCategoryName(),
+ data.getLastActiveBillingPeriod(),
+ data.getLastActivePriceListName(),
data.getChargedThroughDate(),
data.getEndDate() != null ? data.getEndDate() : data.getFutureEndDate(),
toAuditLogJson(auditLogs));
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
index 81429b4..6ab3239 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
@@ -117,8 +117,8 @@ public class BundleResource extends JaxRsResourceBase {
if (bundle == null) {
return Response.status(Status.NO_CONTENT).build();
}
- final List<Subscription> bundles = entitlementApi.getSubscriptionsForBundle(uuid);
- final Collection<SubscriptionJsonNoEvents> result = Collections2.transform(bundles, new Function<Subscription, SubscriptionJsonNoEvents>() {
+ final List<Subscription> subscriptions = entitlementApi.getSubscriptionsForBundle(uuid);
+ final Collection<SubscriptionJsonNoEvents> result = Collections2.transform(subscriptions, new Function<Subscription, SubscriptionJsonNoEvents>() {
@Override
public SubscriptionJsonNoEvents apply(final Subscription input) {
return new SubscriptionJsonNoEvents(input, null);
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscription.java b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscription.java
index 41a9015..ddc67e8 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscription.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingSubscription.java
@@ -181,6 +181,26 @@ public class BlockingSubscription implements Subscription {
return blockingState;
}
+ @Override
+ public String getLastActiveProductName() {
+ return subscription.getLastActiveProductName();
+ }
+
+ @Override
+ public String getLastActivePriceListName() {
+ return subscription.getLastActivePriceListName();
+ }
+
+ @Override
+ public String getLastActiveCategoryName() {
+ return subscription.getLastActiveCategoryName();
+ }
+
+ @Override
+ public String getLastActiveBillingPeriod() {
+ return subscription.getLastActiveBillingPeriod();
+ }
+
public Subscription getDelegateSubscription() {
return subscription;
}
diff --git a/util/src/test/java/com/ning/billing/mock/MockSubscription.java b/util/src/test/java/com/ning/billing/mock/MockSubscription.java
index 57775aa..fee4237 100644
--- a/util/src/test/java/com/ning/billing/mock/MockSubscription.java
+++ b/util/src/test/java/com/ning/billing/mock/MockSubscription.java
@@ -186,4 +186,28 @@ public class MockSubscription implements Subscription {
public SubscriptionSourceType getSourceType() {
return null;
}
+
+ @Override
+ public String getLastActiveProductName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getLastActivePriceListName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getLastActiveCategoryName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getLastActiveBillingPeriod() {
+ // TODO Auto-generated method stub
+ return null;
+ }
}