killbill-memoizeit
Changes
entitlement/src/main/java/com/ning/billing/entitlement/api/svcs/DefaultEntitlementInternalApi.java 13(+7 -6)
entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultEntitlementTimelineApi.java 5(+3 -2)
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 289a7b9..b4eeaba 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
@@ -16,6 +16,7 @@
package com.ning.billing.entitlement.api.user;
+import java.util.List;
import java.util.UUID;
import org.joda.time.DateTime;
@@ -100,4 +101,6 @@ public interface Subscription extends Entity, Blockable {
public SubscriptionTransition getPendingTransition();
public SubscriptionTransition getPreviousTransition();
+
+ public List<SubscriptionTransition> getAllTransitions();
}
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/util/EntitlementChecker.java b/beatrix/src/test/java/com/ning/billing/beatrix/util/EntitlementChecker.java
index 593fc8c..bdf75f8 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/util/EntitlementChecker.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/util/EntitlementChecker.java
@@ -31,6 +31,7 @@ import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionData;
+import com.ning.billing.entitlement.api.user.SubscriptionTransition;
import com.ning.billing.entitlement.api.user.SubscriptionTransitionData;
import com.ning.billing.junction.plumbing.api.BlockingSubscription;
import com.ning.billing.util.callcontext.CallContext;
@@ -68,15 +69,15 @@ public class EntitlementChecker {
Assert.assertNotNull(subscription);
auditChecker.checkSubscriptionCreated(subscription.getBundleId(), subscriptionId, context);
- List<SubscriptionTransitionData> subscriptionEvents = getSubscriptionEvents(subscription);
+ List<SubscriptionTransition> subscriptionEvents = getSubscriptionEvents(subscription);
Assert.assertTrue(subscriptionEvents.size() >= 1);
- auditChecker.checkSubscriptionEventCreated(subscription.getBundleId(), subscriptionEvents.get(0).getId(), context);
+ auditChecker.checkSubscriptionEventCreated(subscription.getBundleId(), ((SubscriptionTransitionData) subscriptionEvents.get(0)).getId(), context);
auditChecker.checkBundleCreated(subscription.getBundleId(), context);
return subscription;
}
- private List<SubscriptionTransitionData> getSubscriptionEvents(final Subscription subscription) {
+ private List<SubscriptionTransition> getSubscriptionEvents(final Subscription subscription) {
return ((SubscriptionData) ((BlockingSubscription) subscription).getDelegateSubscription()).getAllTransitions();
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/svcs/DefaultEntitlementInternalApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/svcs/DefaultEntitlementInternalApi.java
index 4eba14f..08dceae 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/svcs/DefaultEntitlementInternalApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/svcs/DefaultEntitlementInternalApi.java
@@ -38,6 +38,7 @@ import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBuilder;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionData;
+import com.ning.billing.entitlement.api.user.SubscriptionTransition;
import com.ning.billing.entitlement.api.user.SubscriptionTransitionData;
import com.ning.billing.entitlement.engine.dao.EntitlementDao;
import com.ning.billing.util.callcontext.InternalCallContext;
@@ -124,23 +125,23 @@ public class DefaultEntitlementInternalApi extends EntitlementApiBase implements
@Override
public List<EffectiveSubscriptionInternalEvent> getAllTransitions(final Subscription subscription, final InternalTenantContext context) {
- final List<SubscriptionTransitionData> transitions = ((SubscriptionData) subscription).getAllTransitions();
+ final List<SubscriptionTransition> transitions = ((SubscriptionData) subscription).getAllTransitions();
return convertEffectiveSubscriptionInternalEventFromSubscriptionTransitions(subscription, context, transitions);
}
@Override
public List<EffectiveSubscriptionInternalEvent> getBillingTransitions(final Subscription subscription, final InternalTenantContext context) {
- final List<SubscriptionTransitionData> transitions = ((SubscriptionData) subscription).getBillingTransitions();
+ final List<SubscriptionTransition> transitions = ((SubscriptionData) subscription).getBillingTransitions();
return convertEffectiveSubscriptionInternalEventFromSubscriptionTransitions(subscription, context, transitions);
}
private List<EffectiveSubscriptionInternalEvent> convertEffectiveSubscriptionInternalEventFromSubscriptionTransitions(final Subscription subscription,
- final InternalTenantContext context, final List<SubscriptionTransitionData> transitions) {
- return ImmutableList.<EffectiveSubscriptionInternalEvent>copyOf(Collections2.transform(transitions, new Function<SubscriptionTransitionData, EffectiveSubscriptionInternalEvent>() {
+ final InternalTenantContext context, final List<SubscriptionTransition> transitions) {
+ return ImmutableList.<EffectiveSubscriptionInternalEvent>copyOf(Collections2.transform(transitions, new Function<SubscriptionTransition, EffectiveSubscriptionInternalEvent>() {
@Override
@Nullable
- public EffectiveSubscriptionInternalEvent apply(@Nullable SubscriptionTransitionData input) {
- return new DefaultEffectiveSubscriptionEvent(input, ((SubscriptionData) subscription).getAlignStartDate(), null, context.getAccountRecordId(), context.getTenantRecordId());
+ public EffectiveSubscriptionInternalEvent apply(@Nullable SubscriptionTransition input) {
+ return new DefaultEffectiveSubscriptionEvent((SubscriptionTransitionData) input, ((SubscriptionData) subscription).getAlignStartDate(), null, context.getAccountRecordId(), context.getTenantRecordId());
}
}));
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultEntitlementTimelineApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultEntitlementTimelineApi.java
index fef4559..8855655 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultEntitlementTimelineApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultEntitlementTimelineApi.java
@@ -43,6 +43,7 @@ import com.ning.billing.entitlement.api.user.SubscriptionBuilder;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionBundleData;
import com.ning.billing.entitlement.api.user.SubscriptionData;
+import com.ning.billing.entitlement.api.user.SubscriptionTransition;
import com.ning.billing.entitlement.api.user.SubscriptionTransitionData;
import com.ning.billing.entitlement.engine.addon.AddonUtils;
import com.ning.billing.entitlement.engine.dao.EntitlementDao;
@@ -374,8 +375,8 @@ public class DefaultEntitlementTimelineApi extends EntitlementApiBase implements
if (nbDeleted != deletedEvents.size()) {
for (final SubscriptionTimeline.DeletedEvent d : deletedEvents) {
boolean found = false;
- for (final SubscriptionTransitionData cur : data.getAllTransitions()) {
- if (cur.getId().equals(d.getEventId())) {
+ for (final SubscriptionTransition cur : data.getAllTransitions()) {
+ if (((SubscriptionTransitionData) cur).getId().equals(d.getEventId())) {
found = true;
}
}
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 3b632d7..47aa41e 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
@@ -83,7 +83,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
// so the user holding that subscription object get the correct state when
// the call completes
//
- private LinkedList<SubscriptionTransitionData> transitions;
+ private LinkedList<SubscriptionTransition> transitions;
// Low level events are ONLY used for Repair APIs
protected List<EntitlementEvent> events;
@@ -123,7 +123,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
this.activeVersion = internalSubscription.getActiveVersion();
this.chargedThroughDate = internalSubscription.getChargedThroughDate();
this.paidThroughDate = internalSubscription.getPaidThroughDate();
- this.transitions = new LinkedList<SubscriptionTransitionData>(internalSubscription.getAllTransitions());
+ this.transitions = new LinkedList<SubscriptionTransition>(internalSubscription.getAllTransitions());
this.events = internalSubscription.getEvents();
}
@@ -148,7 +148,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
if (transitions == null) {
return null;
}
- final SubscriptionTransitionData initialTransition = transitions.get(0);
+ final SubscriptionTransitionData initialTransition = (SubscriptionTransitionData) transitions.get(0);
switch (initialTransition.getApiEventType()) {
case MIGRATE_BILLING:
case MIGRATE_ENTITLEMENT:
@@ -197,7 +197,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
clock, transitions, Order.ASC_FROM_PAST, Kind.ENTITLEMENT,
Visibility.ALL, TimeLimit.FUTURE_ONLY);
while (it.hasNext()) {
- final SubscriptionTransitionData cur = it.next();
+ final SubscriptionTransition cur = it.next();
if (cur.getTransitionType() == SubscriptionTransitionType.CANCEL) {
return cur.getEffectiveTransitionTime();
}
@@ -336,6 +336,19 @@ public class SubscriptionData extends EntityBase implements Subscription {
}
@Override
+ public List<SubscriptionTransition> getAllTransitions() {
+ if (transitions == null) {
+ return Collections.emptyList();
+ }
+ final List<SubscriptionTransition> result = new ArrayList<SubscriptionTransition>();
+ final SubscriptionTransitionDataIterator it = new SubscriptionTransitionDataIterator(clock, transitions, Order.ASC_FROM_PAST, Kind.ALL, Visibility.ALL, TimeLimit.ALL);
+ while (it.hasNext()) {
+ result.add(it.next());
+ }
+ return result;
+ }
+
+ @Override
public int hashCode() {
final int prime = 31;
int result = 1;
@@ -371,9 +384,9 @@ public class SubscriptionData extends EntityBase implements Subscription {
if (transitions == null || event == null) {
return null;
}
- for (final SubscriptionTransitionData cur : transitions) {
- if (cur.getId().equals(event.getId())) {
- final SubscriptionTransitionData withSeq = new SubscriptionTransitionData(cur, seqId);
+ for (final SubscriptionTransition cur : transitions) {
+ if (((SubscriptionTransitionData) cur).getId().equals(event.getId())) {
+ final SubscriptionTransitionData withSeq = new SubscriptionTransitionData((SubscriptionTransitionData)cur, seqId);
return withSeq;
}
}
@@ -388,26 +401,26 @@ public class SubscriptionData extends EntityBase implements Subscription {
final SubscriptionTransitionDataIterator it = new SubscriptionTransitionDataIterator(
clock, transitions, Order.DESC_FROM_FUTURE, Kind.ENTITLEMENT,
Visibility.FROM_DISK_ONLY, TimeLimit.ALL);
- return it.hasNext() ? it.next().getTotalOrdering() : -1L;
+ return it.hasNext() ? ((SubscriptionTransitionData)it.next()).getTotalOrdering() : -1L;
}
public long getActiveVersion() {
return activeVersion;
}
- public List<SubscriptionTransitionData> getBillingTransitions() {
+ public List<SubscriptionTransition> getBillingTransitions() {
if (transitions == null) {
return Collections.emptyList();
}
- final List<SubscriptionTransitionData> result = new ArrayList<SubscriptionTransitionData>();
+ final List<SubscriptionTransition> result = new ArrayList<SubscriptionTransition>();
final SubscriptionTransitionDataIterator it = new SubscriptionTransitionDataIterator(
clock, transitions, Order.ASC_FROM_PAST, Kind.BILLING,
Visibility.ALL, TimeLimit.ALL);
// Remove anything prior to first CREATE or MIGRATE_BILLING
boolean foundInitialEvent = false;
while (it.hasNext()) {
- final SubscriptionTransitionData curTransition = it.next();
+ final SubscriptionTransitionData curTransition = (SubscriptionTransitionData) it.next();
if (!foundInitialEvent) {
foundInitialEvent = curTransition.getEventType() == EventType.API_USER &&
(curTransition.getApiEventType() == ApiEventType.CREATE ||
@@ -422,18 +435,6 @@ public class SubscriptionData extends EntityBase implements Subscription {
}
- public List<SubscriptionTransitionData> getAllTransitions() {
- if (transitions == null) {
- return Collections.emptyList();
- }
- final List<SubscriptionTransitionData> result = new ArrayList<SubscriptionTransitionData>();
- final SubscriptionTransitionDataIterator it = new SubscriptionTransitionDataIterator(clock, transitions, Order.ASC_FROM_PAST, Kind.ALL, Visibility.ALL, TimeLimit.ALL);
- while (it.hasNext()) {
- result.add(it.next());
- }
- return result;
- }
-
public SubscriptionTransitionData getInitialTransitionForCurrentPlan() {
if (transitions == null) {
throw new EntitlementError(String.format("No transitions for subscription %s", getId()));
@@ -447,7 +448,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
TimeLimit.PAST_OR_PRESENT_ONLY);
while (it.hasNext()) {
- final SubscriptionTransitionData cur = it.next();
+ final SubscriptionTransitionData cur = (SubscriptionTransitionData) it.next();
if (cur.getTransitionType() == SubscriptionTransitionType.CREATE
|| cur.getTransitionType() == SubscriptionTransitionType.RE_CREATE
|| cur.getTransitionType() == SubscriptionTransitionType.TRANSFER
@@ -493,7 +494,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
clock, transitions, Order.DESC_FROM_FUTURE, Kind.ENTITLEMENT,
Visibility.ALL, TimeLimit.PAST_OR_PRESENT_ONLY);
while (it.hasNext()) {
- final SubscriptionTransitionData cur = it.next();
+ final SubscriptionTransitionData cur = (SubscriptionTransitionData) it.next();
if (cur.getTransitionType() == SubscriptionTransitionType.PHASE
|| cur.getTransitionType() == SubscriptionTransitionType.TRANSFER
@@ -525,7 +526,7 @@ public class SubscriptionData extends EntityBase implements Subscription {
SubscriptionState previousState = null;
PriceList previousPriceList = null;
- transitions = new LinkedList<SubscriptionTransitionData>();
+ transitions = new LinkedList<SubscriptionTransition>();
Plan previousPlan = null;
PlanPhase previousPhase = null;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionDataIterator.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionDataIterator.java
index 8de654f..9da28ea 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionDataIterator.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionDataIterator.java
@@ -23,15 +23,15 @@ import com.ning.billing.entitlement.api.SubscriptionTransitionType;
import com.ning.billing.entitlement.exceptions.EntitlementError;
import com.ning.billing.util.clock.Clock;
-public class SubscriptionTransitionDataIterator implements Iterator<SubscriptionTransitionData> {
+public class SubscriptionTransitionDataIterator implements Iterator<SubscriptionTransition> {
private final Clock clock;
- private final Iterator<SubscriptionTransitionData> it;
+ private final Iterator<SubscriptionTransition> it;
private final Kind kind;
private final TimeLimit timeLimit;
private final Visibility visibility;
- private SubscriptionTransitionData next;
+ private SubscriptionTransition next;
public enum Order {
ASC_FROM_PAST,
@@ -55,7 +55,7 @@ public class SubscriptionTransitionDataIterator implements Iterator<Subscription
ALL
}
- public SubscriptionTransitionDataIterator(final Clock clock, final LinkedList<SubscriptionTransitionData> transitions,
+ public SubscriptionTransitionDataIterator(final Clock clock, final LinkedList<SubscriptionTransition> transitions,
final Order order, final Kind kind, final Visibility visibility, final TimeLimit timeLimit) {
this.it = (order == Order.DESC_FROM_FUTURE) ? transitions.descendingIterator() : transitions.iterator();
this.clock = clock;
@@ -77,12 +77,12 @@ public class SubscriptionTransitionDataIterator implements Iterator<Subscription
return true;
}
- private boolean shouldSkip(final SubscriptionTransitionData input) {
- if (visibility == Visibility.FROM_DISK_ONLY && !input.isFromDisk()) {
+ private boolean shouldSkip(final SubscriptionTransition input) {
+ if (visibility == Visibility.FROM_DISK_ONLY && ! ((SubscriptionTransitionData) input).isFromDisk()) {
return true;
}
- if ((kind == Kind.ENTITLEMENT && shouldSkipForEntitlementEvents(input)) ||
- (kind == Kind.BILLING && shouldSkipForBillingEvents(input))) {
+ if ((kind == Kind.ENTITLEMENT && shouldSkipForEntitlementEvents((SubscriptionTransitionData)input)) ||
+ (kind == Kind.BILLING && shouldSkipForBillingEvents((SubscriptionTransitionData) input))) {
return true;
}
if ((timeLimit == TimeLimit.FUTURE_ONLY && !input.getEffectiveTransitionTime().isAfter(clock.getUTCNow())) ||
@@ -106,7 +106,7 @@ public class SubscriptionTransitionDataIterator implements Iterator<Subscription
@Override
- public SubscriptionTransitionData next() {
+ public SubscriptionTransition next() {
return next;
}
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/alignment/TestPlanAligner.java b/entitlement/src/test/java/com/ning/billing/entitlement/alignment/TestPlanAligner.java
index 16deb9d..282ffb6 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/alignment/TestPlanAligner.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/alignment/TestPlanAligner.java
@@ -35,6 +35,7 @@ import com.ning.billing.catalog.api.PriceListSet;
import com.ning.billing.catalog.io.VersionedCatalogLoader;
import com.ning.billing.entitlement.EntitlementTestSuiteNoDB;
import com.ning.billing.entitlement.api.user.SubscriptionBuilder;
+import com.ning.billing.entitlement.api.user.SubscriptionTransition;
import com.ning.billing.util.config.CatalogConfig;
import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.SubscriptionData;
@@ -206,7 +207,7 @@ public class TestPlanAligner extends EntitlementTestSuiteNoDB {
subscriptionData.rebuildTransitions(ImmutableList.<EntitlementEvent>of(previousEvent, event), catalogService.getFullCatalog());
- final List<SubscriptionTransitionData> newTransitions = subscriptionData.getAllTransitions();
+ final List<SubscriptionTransition> newTransitions = subscriptionData.getAllTransitions();
Assert.assertEquals(newTransitions.size(), 2);
Assert.assertNull(newTransitions.get(0).getPreviousPhase());
Assert.assertEquals(newTransitions.get(0).getNextPhase(), newTransitions.get(1).getPreviousPhase());
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 c5af7fe..17cede0 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
@@ -39,6 +39,7 @@ import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.Subscription.SubscriptionState;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionData;
+import com.ning.billing.entitlement.api.user.SubscriptionTransition;
import com.ning.billing.entitlement.api.user.SubscriptionTransitionData;
import com.ning.billing.entitlement.events.user.ApiEventType;
@@ -291,28 +292,28 @@ public class TestMigration extends EntitlementTestSuiteWithEmbeddedDB {
assertEquals(subscriptions.size(), 1);
final SubscriptionData subscription = (SubscriptionData) subscriptions.get(0);
- final List<SubscriptionTransitionData> transitions = subscription.getAllTransitions();
+ final List<SubscriptionTransition> transitions = subscription.getAllTransitions();
assertEquals(transitions.size(), 2);
- final SubscriptionTransitionData initialMigrateBilling = transitions.get(1);
+ final SubscriptionTransitionData initialMigrateBilling = (SubscriptionTransitionData) transitions.get(1);
assertEquals(initialMigrateBilling.getApiEventType(), ApiEventType.MIGRATE_BILLING);
assertTrue(initialMigrateBilling.getEffectiveTransitionTime().compareTo(subscription.getChargedThroughDate()) == 0);
assertEquals(initialMigrateBilling.getNextPlan().getName(), "shotgun-annual");
assertEquals(initialMigrateBilling.getNextPhase().getName(), "shotgun-annual-evergreen");
- final List<SubscriptionTransitionData> billingTransitions = subscription.getBillingTransitions();
+ final List<SubscriptionTransition> billingTransitions = subscription.getBillingTransitions();
assertEquals(billingTransitions.size(), 1);
assertEquals(billingTransitions.get(0), initialMigrateBilling);
// Now make an IMMEDIATE change of plan
subscription.changePlan("Assault-Rifle", BillingPeriod.MONTHLY, PriceListSet.DEFAULT_PRICELIST_NAME, clock.getUTCNow(), callContext);
- final List<SubscriptionTransitionData> newTransitions = subscription.getAllTransitions();
+ final List<SubscriptionTransition> newTransitions = subscription.getAllTransitions();
assertEquals(newTransitions.size(), 3);
- final SubscriptionTransitionData changeTransition = newTransitions.get(1);
+ final SubscriptionTransitionData changeTransition = (SubscriptionTransitionData) newTransitions.get(1);
assertEquals(changeTransition.getApiEventType(), ApiEventType.CHANGE);
- final SubscriptionTransitionData newMigrateBilling = newTransitions.get(2);
+ final SubscriptionTransitionData newMigrateBilling = (SubscriptionTransitionData) newTransitions.get(2);
assertEquals(newMigrateBilling.getApiEventType(), ApiEventType.MIGRATE_BILLING);
assertTrue(newMigrateBilling.getEffectiveTransitionTime().compareTo(subscription.getChargedThroughDate()) == 0);
assertTrue(newMigrateBilling.getEffectiveTransitionTime().compareTo(initialMigrateBilling.getEffectiveTransitionTime()) == 0);
@@ -320,7 +321,7 @@ public class TestMigration extends EntitlementTestSuiteWithEmbeddedDB {
assertEquals(newMigrateBilling.getNextPhase().getName(), "assault-rifle-monthly-evergreen");
- final List<SubscriptionTransitionData> newBillingTransitions = subscription.getBillingTransitions();
+ final List<SubscriptionTransition> newBillingTransitions = subscription.getBillingTransitions();
assertEquals(newBillingTransitions.size(), 1);
assertEquals(newBillingTransitions.get(0), newMigrateBilling);
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 249f976..9bd4d4b 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
@@ -16,6 +16,7 @@
package com.ning.billing.junction.plumbing.api;
+import java.util.List;
import java.util.UUID;
import org.joda.time.DateTime;
@@ -220,6 +221,11 @@ public class BlockingSubscription implements Subscription {
return subscription.getPreviousTransition();
}
+ @Override
+ public List<SubscriptionTransition> getAllTransitions() {
+ return subscription.getAllTransitions();
+ }
+
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 c1127cd..307d4a0 100644
--- a/util/src/test/java/com/ning/billing/mock/MockSubscription.java
+++ b/util/src/test/java/com/ning/billing/mock/MockSubscription.java
@@ -226,4 +226,9 @@ public class MockSubscription implements Subscription {
// TODO Auto-generated method stub
return null;
}
+
+ @Override
+ public List<SubscriptionTransition> getAllTransitions() {
+ return null;
+ }
}