Details
diff --git a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
index ba7a707..5fae248 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
@@ -36,9 +36,12 @@ public class AnalyticsListener
public void handleSubscriptionTransitionChange(final SubscriptionTransition event)
{
switch (event.getTransitionType()) {
+ case MIGRATE_ENTITLEMENT:
+ // TODO do nothing for now
+ break;
case CREATE:
bstRecorder.subscriptionCreated(event);
- break;
+ break;
case CANCEL:
bstRecorder.subscriptionCancelled(event);
break;
diff --git a/analytics/src/test/java/com/ning/billing/analytics/MockIEntitlementUserApi.java b/analytics/src/test/java/com/ning/billing/analytics/MockIEntitlementUserApi.java
index b0ab9e8..f624c34 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockIEntitlementUserApi.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockIEntitlementUserApi.java
@@ -106,6 +106,11 @@ public class MockIEntitlementUserApi implements EntitlementUserApi
@Override
public Subscription createSubscription(UUID bundleId, PlanPhaseSpecifier spec,
DateTime requestedDate) throws EntitlementUserApiException {
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException();
}
+
+ @Override
+ public SubscriptionBundle getBundleForKey(String bundleKey) {
+ throw new UnsupportedOperationException();
+ }
}
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 e6c2dfa..8a48080 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/MockSubscription.java
@@ -128,4 +128,9 @@ public class MockSubscription implements Subscription
public List<SubscriptionTransition> getActiveTransitions() {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public SubscriptionTransition getPendingTransition() {
+ throw new UnsupportedOperationException();
+ }
}
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java b/api/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java
index ebea02d..a8d280e 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java
@@ -31,6 +31,8 @@ public interface EntitlementUserApi {
public Subscription getSubscriptionFromId(UUID id);
+ public SubscriptionBundle getBundleForKey(String bundleKey);
+
public List<SubscriptionBundle> getBundlesForAccount(UUID accountId);
public List<Subscription> getSubscriptionsForBundle(UUID bundleId);
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 c94fc9d..0411faa 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
@@ -68,4 +68,6 @@ public interface Subscription {
public List<SubscriptionTransition> getActiveTransitions();
+ public SubscriptionTransition getPendingTransition();
+
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
index 0864112..57b1c22 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java
@@ -66,6 +66,11 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
}
@Override
+ public SubscriptionBundle getBundleForKey(String bundleKey) {
+ return dao.getSubscriptionBundleFromKey(bundleKey);
+ }
+
+ @Override
public List<SubscriptionBundle> getBundlesForAccount(UUID accountId) {
return dao.getSubscriptionBundleForAccount(accountId);
}
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 8ae9cec..422a2d8 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
@@ -183,6 +183,18 @@ public class SubscriptionData implements Subscription {
return activeTransitions;
}
+ @Override
+ public SubscriptionTransition getPendingTransition() {
+ if (transitions == null) {
+ return null;
+ }
+ for (SubscriptionTransition cur : transitions) {
+ if (cur.getEffectiveTransitionTime().isAfter(clock.getUTCNow())) {
+ return cur;
+ }
+ }
+ return null;
+ }
public SubscriptionTransition getLatestTranstion() {
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementDao.java
index dbcc46d..4998379 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementDao.java
@@ -33,6 +33,8 @@ public interface EntitlementDao {
// Bundle apis
public List<SubscriptionBundle> getSubscriptionBundleForAccount(UUID accountId);
+ public SubscriptionBundle getSubscriptionBundleFromKey(String bundleKey);
+
public SubscriptionBundle getSubscriptionBundleFromId(UUID bundleId);
public SubscriptionBundle createSubscriptionBundle(SubscriptionBundleData bundle);
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
index f16eb61..aa31964 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/EntitlementSqlDao.java
@@ -73,6 +73,11 @@ public class EntitlementSqlDao implements EntitlementDao {
}
@Override
+ public SubscriptionBundle getSubscriptionBundleFromKey(String bundleKey) {
+ return bundlesDao.getBundleFromKey(bundleKey);
+ }
+
+ @Override
public List<SubscriptionBundle> getSubscriptionBundleForAccount(
UUID accountId) {
return bundlesDao.getBundleFromAccount(accountId.toString());
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java
index 1a9b328..4c2ee17 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java
@@ -105,6 +105,17 @@ public class MockEntitlementDaoMemory implements EntitlementDao, MockEntitlement
}
@Override
+ public SubscriptionBundle getSubscriptionBundleFromKey(String bundleKey) {
+ for (SubscriptionBundle cur : bundles) {
+ if (cur.getKey().equals(bundleKey)) {
+ return cur;
+ }
+ }
+ return null;
+ }
+
+
+ @Override
public SubscriptionBundle createSubscriptionBundle(SubscriptionBundleData bundle) {
bundles.add(bundle);
return getSubscriptionBundleFromId(bundle.getId());