killbill-memoizeit
Changes
analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java 3(+1 -2)
analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java 5(+1 -4)
Details
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscription.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscription.java
index c102d35..0d68bec 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscription.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscription.java
@@ -29,8 +29,6 @@ import com.ning.billing.analytics.MockDuration;
import com.ning.billing.analytics.MockPhase;
import com.ning.billing.analytics.MockPlan;
import com.ning.billing.analytics.MockProduct;
-import com.ning.billing.analytics.MockSubscription;
-import com.ning.billing.analytics.model.BusinessSubscription;
import com.ning.billing.catalog.api.Catalog;
import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.api.Duration;
@@ -40,6 +38,7 @@ import com.ning.billing.catalog.api.PlanPhase;
import com.ning.billing.catalog.api.Product;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.user.Subscription;
+import com.ning.billing.mock.MockSubscription;
import static com.ning.billing.catalog.api.Currency.USD;
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java
index 11c6215..5509662 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionEvent.java
@@ -27,8 +27,6 @@ import com.ning.billing.analytics.MockDuration;
import com.ning.billing.analytics.MockPhase;
import com.ning.billing.analytics.MockPlan;
import com.ning.billing.analytics.MockProduct;
-import com.ning.billing.analytics.MockSubscription;
-import com.ning.billing.analytics.model.BusinessSubscriptionEvent;
import com.ning.billing.catalog.api.Catalog;
import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.api.PhaseType;
@@ -37,6 +35,7 @@ import com.ning.billing.catalog.api.PlanPhase;
import com.ning.billing.catalog.api.Product;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.user.Subscription;
+import com.ning.billing.mock.MockSubscription;
public class TestBusinessSubscriptionEvent extends AnalyticsTestSuite {
private Product product;
diff --git a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java
index 4c401a6..da54e4b 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/model/TestBusinessSubscriptionTransition.java
@@ -28,10 +28,6 @@ import com.ning.billing.analytics.MockDuration;
import com.ning.billing.analytics.MockPhase;
import com.ning.billing.analytics.MockPlan;
import com.ning.billing.analytics.MockProduct;
-import com.ning.billing.analytics.MockSubscription;
-import com.ning.billing.analytics.model.BusinessSubscription;
-import com.ning.billing.analytics.model.BusinessSubscriptionEvent;
-import com.ning.billing.analytics.model.BusinessSubscriptionTransition;
import com.ning.billing.catalog.api.Catalog;
import com.ning.billing.catalog.api.CatalogService;
import com.ning.billing.catalog.api.PhaseType;
@@ -40,6 +36,7 @@ import com.ning.billing.catalog.api.PlanPhase;
import com.ning.billing.catalog.api.Product;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.user.Subscription;
+import com.ning.billing.mock.MockSubscription;
import static com.ning.billing.catalog.api.Currency.USD;
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 df39528..e75ea1b 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
@@ -31,7 +31,6 @@ import com.ning.billing.junction.api.Blockable;
import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.entity.Entity;
-
public interface Subscription extends Entity, Blockable {
public boolean cancel(DateTime requestedDate, boolean eot, CallContext context)
@@ -76,4 +75,6 @@ public interface Subscription extends Entity, Blockable {
public EffectiveSubscriptionEvent getPreviousTransition();
public List<EffectiveSubscriptionEvent> getBillingTransitions();
+
+ public List<EffectiveSubscriptionEvent> getAllTransitions();
}
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 368dbb5..220c2ad 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
@@ -37,6 +37,7 @@ import com.ning.billing.entitlement.api.SubscriptionFactory;
import com.ning.billing.entitlement.api.SubscriptionTransitionType;
import com.ning.billing.entitlement.api.timeline.SubscriptionTimeline.NewEvent;
import com.ning.billing.entitlement.api.user.DefaultSubscriptionFactory.SubscriptionBuilder;
+import com.ning.billing.entitlement.api.user.EffectiveSubscriptionEvent;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionBundleData;
@@ -323,7 +324,7 @@ public class DefaultEntitlementTimelineApi implements EntitlementTimelineApi {
if (nbDeleted != deletedEvents.size()) {
for (final SubscriptionTimeline.DeletedEvent d : deletedEvents) {
boolean found = false;
- for (final SubscriptionTransitionData cur : data.getAllTransitions()) {
+ for (final EffectiveSubscriptionEvent cur : data.getAllTransitions()) {
if (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 409bc8d..d5586e9 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
@@ -303,8 +303,19 @@ public class SubscriptionData extends EntityBase implements Subscription {
return activeVersion;
}
- public List<SubscriptionTransitionData> getAllTransitions() {
- return transitions;
+ @Override
+ public List<EffectiveSubscriptionEvent> getAllTransitions() {
+ if (transitions == null) {
+ return Collections.emptyList();
+ }
+
+ final List<EffectiveSubscriptionEvent> result = new ArrayList<EffectiveSubscriptionEvent>();
+ final SubscriptionTransitionDataIterator it = new SubscriptionTransitionDataIterator(clock, transitions, Order.ASC_FROM_PAST, Kind.ALL, Visibility.ALL, TimeLimit.ALL);
+ while (it.hasNext()) {
+ result.add(new DefaultEffectiveSubscriptionEvent(it.next(), startDate));
+ }
+
+ return result;
}
public SubscriptionTransitionData getInitialTransitionForCurrentPlan() {
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 571630f..9df1b92 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
@@ -36,6 +36,7 @@ import com.ning.billing.catalog.api.PriceListSet;
import com.ning.billing.catalog.io.VersionedCatalogLoader;
import com.ning.billing.config.CatalogConfig;
import com.ning.billing.entitlement.api.user.DefaultSubscriptionFactory;
+import com.ning.billing.entitlement.api.user.EffectiveSubscriptionEvent;
import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
import com.ning.billing.entitlement.api.user.SubscriptionData;
import com.ning.billing.entitlement.api.user.SubscriptionTransitionData;
@@ -201,7 +202,7 @@ public class TestPlanAligner {
subscriptionData.rebuildTransitions(ImmutableList.<EntitlementEvent>of(previousEvent, event), catalogService.getFullCatalog());
- final List<SubscriptionTransitionData> newTransitions = subscriptionData.getAllTransitions();
+ final List<EffectiveSubscriptionEvent> 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/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 154ff3c..fb41a88 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
@@ -128,6 +128,11 @@ public class BlockingSubscription implements Subscription {
return subscription.getBillingTransitions();
}
+ @Override
+ public List<EffectiveSubscriptionEvent> getAllTransitions() {
+ return subscription.getAllTransitions();
+ }
+
public BlockingState getBlockingState() {
if (blockingState == null) {
blockingState = blockingApi.getBlockingStateFor(this);
diff --git a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java
index 29ca9f5..fb5d6ea 100644
--- a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java
+++ b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/TestBillingApi.java
@@ -177,6 +177,11 @@ public class TestBillingApi {
}
@Override
+ public List<EffectiveSubscriptionEvent> getAllTransitions() {
+ return effectiveSubscriptionTransitions;
+ }
+
+ @Override
public Plan getCurrentPlan() {
return subscriptionPlan;
}
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 cf80d68..2e7234e 100644
--- a/util/src/test/java/com/ning/billing/mock/MockSubscription.java
+++ b/util/src/test/java/com/ning/billing/mock/MockSubscription.java
@@ -20,6 +20,7 @@ import java.util.List;
import java.util.UUID;
import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.catalog.api.Plan;
@@ -35,12 +36,22 @@ import com.ning.billing.mock.BrainDeadProxyFactory;
import com.ning.billing.util.callcontext.CallContext;
public class MockSubscription implements Subscription {
- Subscription sub = BrainDeadProxyFactory.createBrainDeadProxyFor(Subscription.class);
+ private static final UUID ID = UUID.randomUUID();
+ private static final UUID BUNDLE_ID = UUID.randomUUID();
+ private static final DateTime START_DATE = new DateTime(DateTimeZone.UTC);
- public UUID getId() {
- return sub.getId();
+ private final SubscriptionState state;
+ private final Plan plan;
+ private final PlanPhase phase;
+
+ public MockSubscription(final SubscriptionState state, final Plan plan, final PlanPhase phase) {
+ this.state = state;
+ this.plan = plan;
+ this.phase = phase;
}
+ Subscription sub = BrainDeadProxyFactory.createBrainDeadProxyFor(Subscription.class);
+
public boolean cancel(final DateTime requestedDate, final boolean eot, final CallContext context) throws EntitlementUserApiException {
return sub.cancel(requestedDate, eot, context);
}
@@ -59,16 +70,20 @@ public class MockSubscription implements Subscription {
return sub.recreate(spec, requestedDate, context);
}
+ public UUID getId() {
+ return ID;
+ }
+
public UUID getBundleId() {
- return sub.getBundleId();
+ return BUNDLE_ID;
}
public SubscriptionState getState() {
- return sub.getState();
+ return state;
}
public DateTime getStartDate() {
- return sub.getStartDate();
+ return START_DATE;
}
public DateTime getEndDate() {
@@ -76,7 +91,7 @@ public class MockSubscription implements Subscription {
}
public Plan getCurrentPlan() {
- return sub.getCurrentPlan();
+ return plan;
}
public BlockingState getBlockingState() {
@@ -88,7 +103,7 @@ public class MockSubscription implements Subscription {
}
public PlanPhase getCurrentPhase() {
- return sub.getCurrentPhase();
+ return phase;
}
public DateTime getChargedThroughDate() {
@@ -114,4 +129,9 @@ public class MockSubscription implements Subscription {
public List<EffectiveSubscriptionEvent> getBillingTransitions() {
return sub.getBillingTransitions();
}
+
+ @Override
+ public List<EffectiveSubscriptionEvent> getAllTransitions() {
+ return sub.getAllTransitions();
+ }
}