killbill-memoizeit
Changes
entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java 6(+6 -0)
entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/AuditedEntitlementDao.java 8(+6 -2)
entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/RepairEntitlementDao.java 6(+6 -0)
entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/BundleSqlDao.sql.stg 8(+8 -0)
entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoMemory.java 12(+12 -0)
Details
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 b487ba5..2a78f6c 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
@@ -29,28 +29,30 @@ import com.ning.billing.util.callcontext.CallContext;
public interface EntitlementUserApi {
- public SubscriptionBundle getBundleFromId(UUID id) throws EntitlementUserApiException;
+ public SubscriptionBundle getBundleFromId(final UUID id) throws EntitlementUserApiException;
- public Subscription getSubscriptionFromId(UUID id) throws EntitlementUserApiException;
+ public Subscription getSubscriptionFromId(final UUID id) throws EntitlementUserApiException;
- public SubscriptionBundle getBundleForAccountAndKey(UUID accountId, String bundleKey) throws EntitlementUserApiException;
+ public List<SubscriptionBundle> getBundlesForKey(final String bundleKey) throws EntitlementUserApiException;
- public List<SubscriptionBundle> getBundlesForAccount(UUID accountId);
+ public SubscriptionBundle getBundleForAccountAndKey(final UUID accountId, final String bundleKey) throws EntitlementUserApiException;
- public List<Subscription> getSubscriptionsForBundle(UUID bundleId);
+ public List<SubscriptionBundle> getBundlesForAccount(final UUID accountId);
- public List<Subscription> getSubscriptionsForAccountAndKey(UUID accountId, String bundleKey);
+ public List<Subscription> getSubscriptionsForBundle(final UUID bundleId);
- public Subscription getBaseSubscription(UUID bundleId) throws EntitlementUserApiException;
+ public List<Subscription> getSubscriptionsForAccountAndKey(final UUID accountId, final String bundleKey);
- public SubscriptionBundle createBundleForAccount(UUID accountId, String bundleKey, CallContext context)
+ public Subscription getBaseSubscription(final UUID bundleId) throws EntitlementUserApiException;
+
+ public SubscriptionBundle createBundleForAccount(final UUID accountId, final String bundleKey, final CallContext context)
throws EntitlementUserApiException;
- public Subscription createSubscription(UUID bundleId, PlanPhaseSpecifier spec, DateTime requestedDate, CallContext context)
+ public Subscription createSubscription(final UUID bundleId, final PlanPhaseSpecifier spec, final DateTime requestedDate, final CallContext context)
throws EntitlementUserApiException;
- public List<SubscriptionStatusDryRun> getDryRunChangePlanStatus(UUID subscriptionId, @Nullable String productName, DateTime requestedDate)
+ public List<SubscriptionStatusDryRun> getDryRunChangePlanStatus(final UUID subscriptionId, @Nullable final String productName, final DateTime requestedDate)
throws EntitlementUserApiException;
- public DateTime getNextBillingDate(UUID account);
+ public DateTime getNextBillingDate(final UUID account);
}
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 1e61a99..4eaadff 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
@@ -34,6 +34,17 @@ import com.ning.billing.util.entity.Entity;
public interface Subscription extends Entity, Blockable {
+ public enum SubscriptionState {
+ ACTIVE,
+ CANCELLED
+ }
+
+ public enum SubscriptionSourceType {
+ NATIVE,
+ MIGRATED,
+ TRANSFERED
+ }
+
public boolean cancel(DateTime requestedDate, boolean eot, CallContext context)
throws EntitlementUserApiException;
@@ -50,15 +61,12 @@ public interface Subscription extends Entity, Blockable {
public boolean recreate(PlanPhaseSpecifier spec, DateTime requestedDate, CallContext context)
throws EntitlementUserApiException;
- public enum SubscriptionState {
- ACTIVE,
- CANCELLED
- }
-
public UUID getBundleId();
public SubscriptionState getState();
+ public SubscriptionSourceType getSourceType();
+
public DateTime getStartDate();
public DateTime getEndDate();
@@ -84,4 +92,5 @@ public interface Subscription extends Entity, Blockable {
public List<EffectiveSubscriptionEvent> getBillingTransitions();
public List<EffectiveSubscriptionEvent> getAllTransitions();
+
}
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 c7e27f1..e8ea3f7 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
@@ -92,6 +92,12 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
}
@Override
+ public List<SubscriptionBundle> getBundlesForKey(final String bundleKey)
+ throws EntitlementUserApiException {
+ return dao.getSubscriptionBundlesForKey(bundleKey);
+ }
+
+ @Override
public List<SubscriptionBundle> getBundlesForAccount(final 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 c54c947..7c10fba 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
@@ -118,6 +118,23 @@ public class SubscriptionData extends EntityBase implements Subscription {
}
@Override
+ public SubscriptionSourceType getSourceType() {
+ if (transitions == null) {
+ return null;
+ }
+ final SubscriptionTransitionData initialTransition = transitions.get(0);
+ switch (initialTransition.getApiEventType()) {
+ case MIGRATE_BILLING:
+ case MIGRATE_ENTITLEMENT:
+ return SubscriptionSourceType.MIGRATED;
+ case TRANSFER:
+ return SubscriptionSourceType.TRANSFERED;
+ default:
+ return SubscriptionSourceType.NATIVE;
+ }
+ }
+
+ @Override
public PlanPhase getCurrentPhase() {
return (getPreviousTransitionData() == null) ? null
: getPreviousTransitionData().getNextPhase();
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/AuditedEntitlementDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/AuditedEntitlementDao.java
index ff37c70..03ebd04 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/AuditedEntitlementDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/AuditedEntitlementDao.java
@@ -90,7 +90,6 @@ public class AuditedEntitlementDao implements EntitlementDao {
private final NotificationQueueService notificationQueueService;
private final AddonUtils addonUtils;
private final Bus eventBus;
- private final CatalogService catalogService;
@Inject
public AuditedEntitlementDao(final IDBI dbi, final Clock clock, final AddonUtils addonUtils,
@@ -102,7 +101,6 @@ public class AuditedEntitlementDao implements EntitlementDao {
this.notificationQueueService = notificationQueueService;
this.addonUtils = addonUtils;
this.eventBus = eventBus;
- this.catalogService = catalogService;
}
@Override
@@ -121,6 +119,12 @@ public class AuditedEntitlementDao implements EntitlementDao {
}
@Override
+ public List<SubscriptionBundle> getSubscriptionBundlesForKey(final String bundleKey) {
+ return bundlesDao.getBundlesForKey(bundleKey);
+ }
+
+
+ @Override
public SubscriptionBundle createSubscriptionBundle(final SubscriptionBundleData bundle, final CallContext context) {
return bundlesDao.inTransaction(new Transaction<SubscriptionBundle, BundleSqlDao>() {
@Override
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java
index 2fde696..c48a5f2 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/BundleSqlDao.java
@@ -65,6 +65,9 @@ public interface BundleSqlDao extends Transactional<BundleSqlDao>, EntitySqlDao<
@SqlQuery
public List<SubscriptionBundle> getBundleFromAccount(@Bind("accountId") String accountId);
+ @SqlQuery
+ public List<SubscriptionBundle> getBundlesForKey(@Bind("externalKey") String externalKey);
+
public static class SubscriptionBundleBinder extends BinderBase implements Binder<Bind, SubscriptionBundleData> {
@Override
public void bind(@SuppressWarnings("rawtypes") final SQLStatement stmt, final Bind bind, final SubscriptionBundleData bundle) {
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 491d66e..0544d1f 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
@@ -36,6 +36,8 @@ public interface EntitlementDao {
// Bundle apis
public List<SubscriptionBundle> getSubscriptionBundleForAccount(final UUID accountId);
+ public List<SubscriptionBundle> getSubscriptionBundlesForKey(final String bundleKey);
+
public SubscriptionBundle getSubscriptionBundleFromAccountAndKey(final UUID accountId, final String bundleKey);
public SubscriptionBundle getSubscriptionBundleFromId(final UUID bundleId);
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/RepairEntitlementDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/RepairEntitlementDao.java
index 8654445..ad82bd5 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/RepairEntitlementDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/RepairEntitlementDao.java
@@ -304,4 +304,10 @@ public class RepairEntitlementDao implements EntitlementDao, RepairEntitlementLi
List<TransferCancelData> transferCancelData, CallContext context) {
throw new EntitlementError(NOT_IMPLEMENTED);
}
+
+ @Override
+ public List<SubscriptionBundle> getSubscriptionBundlesForKey(
+ String bundleKey) {
+ throw new EntitlementError(NOT_IMPLEMENTED);
+ }
}
diff --git a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/BundleSqlDao.sql.stg b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/BundleSqlDao.sql.stg
index 91c6276..e4d5a68 100644
--- a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/BundleSqlDao.sql.stg
+++ b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/BundleSqlDao.sql.stg
@@ -28,6 +28,14 @@ getBundleFromId() ::= <<
;
>>
+getBundlesForKey() ::= <<
+ select <fields()>
+ from bundles
+ where
+ external_key = :externalKey
+ ;
+>>
+
getBundleFromAccountAndKey() ::= <<
select <fields()>
from bundles
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 7ee174f..8463775 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
@@ -101,6 +101,18 @@ public class MockEntitlementDaoMemory implements EntitlementDao {
}
@Override
+ public List<SubscriptionBundle> getSubscriptionBundlesForKey(final String bundleKey) {
+ final List<SubscriptionBundle> results = new ArrayList<SubscriptionBundle>();
+ for (final SubscriptionBundle cur : bundles) {
+ if (cur.getKey().equals(bundleKey)) {
+ results.add(cur);
+ }
+ }
+ return results;
+ }
+
+
+ @Override
public SubscriptionBundle getSubscriptionBundleFromId(final UUID bundleId) {
for (final SubscriptionBundle cur : bundles) {
if (cur.getId().equals(bundleId)) {
diff --git a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingEntitlementUserApi.java b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingEntitlementUserApi.java
index ea12cba..d89c64d 100644
--- a/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingEntitlementUserApi.java
+++ b/junction/src/main/java/com/ning/billing/junction/plumbing/api/BlockingEntitlementUserApi.java
@@ -80,6 +80,18 @@ public class BlockingEntitlementUserApi implements EntitlementUserApi {
}
@Override
+ public List<SubscriptionBundle> getBundlesForKey(String bundleKey)
+ throws EntitlementUserApiException {
+ final List<SubscriptionBundle> result = new ArrayList<SubscriptionBundle>();
+ final List<SubscriptionBundle> bundles = entitlementUserApi.getBundlesForKey(bundleKey);
+ for (final SubscriptionBundle bundle : bundles) {
+ result.add(new BlockingSubscriptionBundle(bundle, blockingApi));
+ }
+ return result;
+ }
+
+
+ @Override
public List<Subscription> getSubscriptionsForBundle(final UUID bundleId) {
final List<Subscription> result = new ArrayList<Subscription>();
final List<Subscription> subscriptions = entitlementUserApi.getSubscriptionsForBundle(bundleId);
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 3a7f932..41a9015 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
@@ -67,7 +67,7 @@ public class BlockingSubscription implements Subscription {
@Override
public boolean changePlan(final String productName, final BillingPeriod term, final String priceList, final DateTime requestedDate,
- final CallContext context) throws EntitlementUserApiException {
+ final CallContext context) throws EntitlementUserApiException {
try {
checker.checkBlockedChange(this);
} catch (BlockingApiException e) {
@@ -78,7 +78,7 @@ public class BlockingSubscription implements Subscription {
@Override
public boolean changePlanWithPolicy(final String productName, final BillingPeriod term, final String priceList,
- final DateTime requestedDate, final ActionPolicy policy, final CallContext context) throws EntitlementUserApiException {
+ final DateTime requestedDate, final ActionPolicy policy, final CallContext context) throws EntitlementUserApiException {
try {
checker.checkBlockedChange(this);
} catch (BlockingApiException e) {
@@ -89,7 +89,7 @@ public class BlockingSubscription implements Subscription {
@Override
public boolean recreate(final PlanPhaseSpecifier spec, final DateTime requestedDate, final CallContext context)
- throws EntitlementUserApiException {
+ throws EntitlementUserApiException {
return subscription.recreate(spec, requestedDate, context);
}
@@ -104,6 +104,11 @@ public class BlockingSubscription implements Subscription {
}
@Override
+ public SubscriptionSourceType getSourceType() {
+ return subscription.getSourceType();
+ }
+
+ @Override
public DateTime getStartDate() {
return subscription.getStartDate();
}
@@ -179,5 +184,4 @@ public class BlockingSubscription implements Subscription {
public Subscription getDelegateSubscription() {
return subscription;
}
-
}
diff --git a/util/src/test/java/com/ning/billing/mock/api/MockEntitlementUserApi.java b/util/src/test/java/com/ning/billing/mock/api/MockEntitlementUserApi.java
index fff8feb..09a1820 100644
--- a/util/src/test/java/com/ning/billing/mock/api/MockEntitlementUserApi.java
+++ b/util/src/test/java/com/ning/billing/mock/api/MockEntitlementUserApi.java
@@ -89,6 +89,12 @@ public class MockEntitlementUserApi implements EntitlementUserApi {
}
@Override
+ public List<SubscriptionBundle> getBundlesForKey(String bundleKey)
+ throws EntitlementUserApiException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public List<Subscription> getSubscriptionsForBundle(final UUID bundleId) {
throw new UnsupportedOperationException();
}
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 013c9e0..57775aa 100644
--- a/util/src/test/java/com/ning/billing/mock/MockSubscription.java
+++ b/util/src/test/java/com/ning/billing/mock/MockSubscription.java
@@ -179,7 +179,11 @@ public class MockSubscription implements Subscription {
@Override
public DateTime getFutureEndDate() {
- // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public SubscriptionSourceType getSourceType() {
return null;
}
}