killbill-uncached

Details

diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java b/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
index 1a17c2d..a756447 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
@@ -126,4 +126,9 @@ public class MockSubscription implements ISubscription
     {
         return null;
     }
+
+    @Override
+    public DateTime getEndDate() {
+        return null;
+    }
 }
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/ISubscription.java b/api/src/main/java/com/ning/billing/entitlement/api/user/ISubscription.java
index 574de30..922e8f1 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/ISubscription.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/ISubscription.java
@@ -59,6 +59,8 @@ public interface ISubscription extends IPrivateFields {
 
     public DateTime getStartDate();
 
+    public DateTime getEndDate();
+
     public IPlan getCurrentPlan();
 
     public String getCurrentPriceList();
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
index c266f61..b1c0b82 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/Subscription.java
@@ -211,6 +211,16 @@ public class Subscription extends PrivateFields  implements ISubscription {
 
 
     @Override
+    public DateTime getEndDate() {
+        ISubscriptionTransition latestTransition = getLatestTranstion();
+        if (latestTransition.getNextState() == SubscriptionState.CANCELLED) {
+            return latestTransition.getEffectiveTransitionTime();
+        }
+        return null;
+    }
+
+
+    @Override
     public void cancel(DateTime requestedDate, boolean eot) throws EntitlementUserApiException  {
 
         SubscriptionState currentState = getState();