killbill-aplcache
Changes
subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java 10(+5 -5)
Details
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlement.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlement.java
index 46c9878..c4614ae 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlement.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlement.java
@@ -39,6 +39,7 @@ import com.ning.billing.subscription.api.user.SubscriptionBaseApiException;
import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.callcontext.InternalCallContext;
import com.ning.billing.util.callcontext.InternalCallContextFactory;
+import com.ning.billing.util.callcontext.TenantContext;
import com.ning.billing.util.entity.EntityBase;
import com.ning.billing.util.svcapi.junction.DefaultBlockingState;
@@ -269,10 +270,10 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
private LocalDate getLocalDateFromEntitlementPolicy(final EntitlementActionPolicy entitlementPolicy) {
final LocalDate cancellationDate;
switch (entitlementPolicy) {
- case IMM:
+ case IMMEDIATE:
cancellationDate = new LocalDate(clock.getUTCNow(), accountTimeZone);
break;
- case EOT:
+ case END_OF_TERM:
cancellationDate = subscriptionBase.getChargedThroughDate() != null ? new LocalDate(subscriptionBase.getChargedThroughDate(), accountTimeZone) : new LocalDate(clock.getUTCNow(), accountTimeZone);
break;
default:
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java
index ef18662..ecfe8e4 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java
@@ -143,6 +143,22 @@ public class DefaultEntitlementApi implements EntitlementApi {
}
@Override
+ public List<EntitlementAOStatusDryRun> getDryRunStatusForChange(final UUID bundleId, final String targetProductName, final LocalDate effectiveDate, final TenantContext context) throws EntitlementApiException {
+
+ final InternalTenantContext internalContext = internalCallContextFactory.createInternalTenantContext(context);
+ try {
+ final SubscriptionBaseBundle bundle = subscriptionInternalApi.getBundleFromId(bundleId, internalContext);
+ final SubscriptionBase baseSubscription = subscriptionInternalApi.getBaseSubscription(bundleId, internalContext);
+
+ final InternalTenantContext contextWithValidAccountRecordId = internalCallContextFactory.createInternalTenantContext(bundle.getAccountId(), context);
+ final DateTime requestedDate = dateHelper.fromLocalDateAndReferenceTime(effectiveDate, baseSubscription.getStartDate(), contextWithValidAccountRecordId);
+ return subscriptionInternalApi.getDryRunChangePlanStatus(baseSubscription.getId(), targetProductName, requestedDate, contextWithValidAccountRecordId);
+ } catch (SubscriptionBaseApiException e) {
+ throw new EntitlementApiException(e);
+ }
+ }
+
+ @Override
public Entitlement getEntitlementForId(final UUID uuid, final TenantContext tenantContext) throws EntitlementApiException {
final InternalTenantContext context = internalCallContextFactory.createInternalTenantContext(tenantContext);
try {
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/EntitlementDateHelper.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/EntitlementDateHelper.java
index 573c870..9d31196 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/EntitlementDateHelper.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/EntitlementDateHelper.java
@@ -8,6 +8,7 @@ import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountApiException;
import com.ning.billing.clock.Clock;
import com.ning.billing.util.callcontext.InternalCallContext;
+import com.ning.billing.util.callcontext.InternalTenantContext;
import com.ning.billing.util.svcapi.account.AccountInternalApi;
public class EntitlementDateHelper {
@@ -21,7 +22,7 @@ public class EntitlementDateHelper {
}
- public DateTime fromLocalDateAndReferenceTime(final LocalDate requestedDate, final DateTime referenceDateTime, final InternalCallContext callContext) throws EntitlementApiException {
+ public DateTime fromLocalDateAndReferenceTime(final LocalDate requestedDate, final DateTime referenceDateTime, final InternalTenantContext callContext) throws EntitlementApiException {
try {
final Account account = accountApi.getAccountByRecordId(callContext.getAccountRecordId(), callContext);
@@ -43,7 +44,7 @@ public class EntitlementDateHelper {
}
- public DateTime fromNowAndReferenceTime(final DateTime referenceDateTime, final InternalCallContext callContext) throws EntitlementApiException {
+ public DateTime fromNowAndReferenceTime(final DateTime referenceDateTime, final InternalTenantContext callContext) throws EntitlementApiException {
try {
final Account account = accountApi.getAccountByRecordId(callContext.getAccountRecordId(), callContext);
return fromNowAndReferenceTime(referenceDateTime, account.getTimeZone());
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultEntitlement.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultEntitlement.java
index 1f8bcbe..456d9eb 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultEntitlement.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultEntitlement.java
@@ -104,7 +104,7 @@ public class TestDefaultEntitlement extends EntitlementTestSuiteWithEmbeddedDB {
// Create entitlement and check each field
final Entitlement entitlement = entitlementApi.createBaseEntitlement(account.getId(), spec, account.getExternalKey(), callContext);
- final boolean isCancelled = entitlement.cancelEntitlementWithPolicy(EntitlementActionPolicy.EOT, callContext);
+ final boolean isCancelled = entitlement.cancelEntitlementWithPolicy(EntitlementActionPolicy.END_OF_TERM, callContext);
assertTrue(isCancelled);
final Entitlement entitlement2 = entitlementApi.getEntitlementForId(entitlement.getId(), callContext);
@@ -142,7 +142,7 @@ public class TestDefaultEntitlement extends EntitlementTestSuiteWithEmbeddedDB {
assertTrue(testListener.isCompleted(5000));
final Entitlement entitlement2 = entitlementApi.getEntitlementForId(entitlement.getId(), callContext);
- final boolean isCancelled = entitlement2.cancelEntitlementWithPolicy(EntitlementActionPolicy.EOT, callContext);
+ final boolean isCancelled = entitlement2.cancelEntitlementWithPolicy(EntitlementActionPolicy.END_OF_TERM, callContext);
assertFalse(isCancelled);
final Entitlement entitlement3 = entitlementApi.getEntitlementForId(entitlement.getId(), callContext);
diff --git a/subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java b/subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
index 60bc2fd..af3bae2 100644
--- a/subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
+++ b/subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
@@ -38,6 +38,8 @@ import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.clock.Clock;
import com.ning.billing.clock.DefaultClock;
import com.ning.billing.entitlement.api.Entitlement.EntitlementState;
+import com.ning.billing.entitlement.api.EntitlementAOStatusDryRun;
+import com.ning.billing.entitlement.api.EntitlementAOStatusDryRun.DryRunChangeReason;
import com.ning.billing.subscription.api.SubscriptionApiBase;
import com.ning.billing.subscription.api.SubscriptionBase;
import com.ning.billing.subscription.api.user.DefaultEffectiveSubscriptionEvent;
@@ -45,13 +47,11 @@ import com.ning.billing.subscription.api.user.DefaultSubscriptionBase;
import com.ning.billing.subscription.api.user.DefaultSubscriptionBaseApiService;
import com.ning.billing.subscription.api.user.DefaultSubscriptionBaseBundle;
import com.ning.billing.subscription.api.user.DefaultSubscriptionStatusDryRun;
-import com.ning.billing.subscription.api.user.EntitlementStatusDryRun;
import com.ning.billing.subscription.api.user.SubscriptionBaseApiException;
import com.ning.billing.subscription.api.user.SubscriptionBaseBundle;
import com.ning.billing.subscription.api.user.SubscriptionBaseTransition;
import com.ning.billing.subscription.api.user.SubscriptionBaseTransitionData;
import com.ning.billing.subscription.api.user.SubscriptionBuilder;
-import com.ning.billing.subscription.api.user.EntitlementStatusDryRun.DryRunChangeReason;
import com.ning.billing.subscription.engine.addon.AddonUtils;
import com.ning.billing.subscription.engine.dao.SubscriptionDao;
import com.ning.billing.subscription.exceptions.SubscriptionBaseError;
@@ -265,7 +265,7 @@ public class DefaultSubscriptionInternalApi extends SubscriptionApiBase implemen
}
@Override
- public List<EntitlementStatusDryRun> getDryRunChangePlanStatus(final UUID subscriptionId, @Nullable final String baseProductName, final DateTime requestedDate, final InternalTenantContext context) throws SubscriptionBaseApiException {
+ public List<EntitlementAOStatusDryRun> getDryRunChangePlanStatus(final UUID subscriptionId, @Nullable final String baseProductName, final DateTime requestedDate, final InternalTenantContext context) throws SubscriptionBaseApiException {
final SubscriptionBase subscription = dao.getSubscriptionFromId(subscriptionId, context);
if (subscription == null) {
throw new SubscriptionBaseApiException(ErrorCode.SUB_INVALID_SUBSCRIPTION_ID, subscriptionId);
@@ -274,7 +274,7 @@ public class DefaultSubscriptionInternalApi extends SubscriptionApiBase implemen
throw new SubscriptionBaseApiException(ErrorCode.SUB_CHANGE_DRY_RUN_NOT_BP);
}
- final List<EntitlementStatusDryRun> result = new LinkedList<EntitlementStatusDryRun>();
+ final List<EntitlementAOStatusDryRun> result = new LinkedList<EntitlementAOStatusDryRun>();
final List<SubscriptionBase> bundleSubscriptions = dao.getSubscriptions(subscription.getBundleId(), context);
for (final SubscriptionBase cur : bundleSubscriptions) {
@@ -296,7 +296,7 @@ public class DefaultSubscriptionInternalApi extends SubscriptionApiBase implemen
} else {
reason = DryRunChangeReason.AO_NOT_AVAILABLE_IN_NEW_PLAN;
}
- final EntitlementStatusDryRun status = new DefaultSubscriptionStatusDryRun(cur.getId(),
+ final EntitlementAOStatusDryRun status = new DefaultSubscriptionStatusDryRun(cur.getId(),
cur.getCurrentPlan().getProduct().getName(),
cur.getCurrentPhase().getPhaseType(),
cur.getCurrentPlan().getBillingPeriod(),
diff --git a/subscription/src/main/java/com/ning/billing/subscription/api/user/DefaultSubscriptionStatusDryRun.java b/subscription/src/main/java/com/ning/billing/subscription/api/user/DefaultSubscriptionStatusDryRun.java
index b4e314c..4848fd1 100644
--- a/subscription/src/main/java/com/ning/billing/subscription/api/user/DefaultSubscriptionStatusDryRun.java
+++ b/subscription/src/main/java/com/ning/billing/subscription/api/user/DefaultSubscriptionStatusDryRun.java
@@ -13,14 +13,16 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
+
package com.ning.billing.subscription.api.user;
import java.util.UUID;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.catalog.api.PhaseType;
+import com.ning.billing.entitlement.api.EntitlementAOStatusDryRun;
-public class DefaultSubscriptionStatusDryRun implements EntitlementStatusDryRun {
+public class DefaultSubscriptionStatusDryRun implements EntitlementAOStatusDryRun {
private final UUID id;
private final String productName;
diff --git a/subscription/src/test/java/com/ning/billing/subscription/api/user/TestUserApiAddOn.java b/subscription/src/test/java/com/ning/billing/subscription/api/user/TestUserApiAddOn.java
index 52a13d2..a512244 100644
--- a/subscription/src/test/java/com/ning/billing/subscription/api/user/TestUserApiAddOn.java
+++ b/subscription/src/test/java/com/ning/billing/subscription/api/user/TestUserApiAddOn.java
@@ -41,9 +41,10 @@ import com.ning.billing.catalog.api.PlanSpecifier;
import com.ning.billing.catalog.api.PriceListSet;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.Entitlement.EntitlementState;
+import com.ning.billing.entitlement.api.EntitlementAOStatusDryRun;
+import com.ning.billing.entitlement.api.EntitlementAOStatusDryRun.DryRunChangeReason;
import com.ning.billing.subscription.SubscriptionTestSuiteWithEmbeddedDB;
import com.ning.billing.subscription.api.SubscriptionBaseTransitionType;
-import com.ning.billing.subscription.api.user.EntitlementStatusDryRun.DryRunChangeReason;
public class TestUserApiAddOn extends SubscriptionTestSuiteWithEmbeddedDB {
@@ -333,7 +334,7 @@ public class TestUserApiAddOn extends SubscriptionTestSuiteWithEmbeddedDB {
final BillingPeriod newBaseTerm = BillingPeriod.MONTHLY;
final String newBasePriceList = PriceListSet.DEFAULT_PRICELIST_NAME;
- final List<EntitlementStatusDryRun> aoStatus = subscriptionInternalApi.getDryRunChangePlanStatus(baseSubscription.getId(),
+ final List<EntitlementAOStatusDryRun> aoStatus = subscriptionInternalApi.getDryRunChangePlanStatus(baseSubscription.getId(),
newBaseProduct, now, internalCallContext);
assertEquals(aoStatus.size(), 1);
assertEquals(aoStatus.get(0).getId(), aoSubscription.getId());
@@ -396,7 +397,7 @@ public class TestUserApiAddOn extends SubscriptionTestSuiteWithEmbeddedDB {
final BillingPeriod newBaseTerm = BillingPeriod.MONTHLY;
final String newBasePriceList = PriceListSet.DEFAULT_PRICELIST_NAME;
- final List<EntitlementStatusDryRun> aoStatus = subscriptionInternalApi.getDryRunChangePlanStatus(baseSubscription.getId(),
+ final List<EntitlementAOStatusDryRun> aoStatus = subscriptionInternalApi.getDryRunChangePlanStatus(baseSubscription.getId(),
newBaseProduct, now, internalCallContext);
assertEquals(aoStatus.size(), 1);
assertEquals(aoStatus.get(0).getId(), aoSubscription.getId());
diff --git a/util/src/main/java/com/ning/billing/util/svcapi/subscription/SubscriptionBaseInternalApi.java b/util/src/main/java/com/ning/billing/util/svcapi/subscription/SubscriptionBaseInternalApi.java
index 1d01828..52a8752 100644
--- a/util/src/main/java/com/ning/billing/util/svcapi/subscription/SubscriptionBaseInternalApi.java
+++ b/util/src/main/java/com/ning/billing/util/svcapi/subscription/SubscriptionBaseInternalApi.java
@@ -24,8 +24,8 @@ import javax.annotation.Nullable;
import org.joda.time.DateTime;
import com.ning.billing.catalog.api.PlanPhaseSpecifier;
+import com.ning.billing.entitlement.api.EntitlementAOStatusDryRun;
import com.ning.billing.subscription.api.SubscriptionBase;
-import com.ning.billing.subscription.api.user.EntitlementStatusDryRun;
import com.ning.billing.subscription.api.user.SubscriptionBaseBundle;
import com.ning.billing.subscription.api.user.SubscriptionBaseApiException;
import com.ning.billing.util.callcontext.InternalCallContext;
@@ -67,6 +67,6 @@ public interface SubscriptionBaseInternalApi {
public DateTime getNextBillingDate(final UUID accountId, final InternalTenantContext context);
- public List<EntitlementStatusDryRun> getDryRunChangePlanStatus(final UUID subscriptionId, @Nullable final String baseProductName,
- final DateTime requestedDate, final InternalTenantContext context) throws SubscriptionBaseApiException;
+ public List<EntitlementAOStatusDryRun> getDryRunChangePlanStatus(final UUID subscriptionId, @Nullable final String baseProductName,
+ final DateTime requestedDate, final InternalTenantContext context) throws SubscriptionBaseApiException;
}