killbill-aplcache
Changes
beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java 15(+8 -7)
entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlementApi.java 43(+29 -14)
Details
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java
index 1b7ccbc..2003ef2 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithEntilementPlugin.java
@@ -34,6 +34,8 @@ import org.killbill.billing.catalog.api.PlanPhasePriceOverride;
import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
import org.killbill.billing.catalog.api.ProductCategory;
import org.killbill.billing.entitlement.api.DefaultEntitlement;
+import org.killbill.billing.entitlement.api.DefaultEntitlementSpecifier;
+import org.killbill.billing.entitlement.api.EntitlementSpecifier;
import org.killbill.billing.entitlement.plugin.api.EntitlementContext;
import org.killbill.billing.entitlement.plugin.api.EntitlementPluginApi;
import org.killbill.billing.entitlement.plugin.api.EntitlementPluginApiException;
@@ -138,6 +140,10 @@ public class TestWithEntilementPlugin extends TestIntegrationBase {
@Override
public PriorEntitlementResult priorCall(final EntitlementContext entitlementContext, final Iterable<PluginProperty> properties) throws EntitlementPluginApiException {
if (planPhasePriceOverride != null) {
+ final EntitlementSpecifier entitlementSpecifier = new DefaultEntitlementSpecifier(null, planPhasePriceOverride);
+ final List<EntitlementSpecifier> entitlementSpecifiers = new ArrayList<EntitlementSpecifier>();
+ entitlementSpecifiers.add(entitlementSpecifier);
+
return new PriorEntitlementResult() {
@Override
public boolean isAborted() {
@@ -145,18 +151,13 @@ public class TestWithEntilementPlugin extends TestIntegrationBase {
}
@Override
- public PlanPhaseSpecifier getAdjustedPlanPhaseSpecifier() {
- return null;
- }
-
- @Override
public LocalDate getAdjustedEffectiveDate() {
return null;
}
@Override
- public List<PlanPhasePriceOverride> getAdjustedPlanPhasePriceOverride() {
- return planPhasePriceOverride;
+ public List<EntitlementSpecifier> getAdjustedEntitlementSpecifiers() {
+ return entitlementSpecifiers;
}
@Override
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlement.java b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlement.java
index 59d7909..9ff10b3 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlement.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlement.java
@@ -21,7 +21,6 @@ import java.util.Collection;
import java.util.List;
import java.util.UUID;
-import org.apache.shiro.SecurityUtils;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.LocalDate;
@@ -372,7 +371,6 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
getAccountId(),
null,
getBundleId(),
- null,
getExternalKey(),
null,
localCancelDate,
@@ -439,7 +437,6 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
getAccountId(),
null,
getBundleId(),
- null,
getExternalKey(),
null,
null,
@@ -488,7 +485,6 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
getAccountId(),
null,
getBundleId(),
- null,
getExternalKey(),
null,
localDate,
@@ -537,7 +533,6 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
getAccountId(),
null,
getBundleId(),
- null,
getExternalKey(),
null,
localDate,
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlementApi.java b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlementApi.java
index ec2c2fa..e8983c2 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlementApi.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlementApi.java
@@ -16,6 +16,7 @@
package org.killbill.billing.entitlement.api;
+import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@@ -118,13 +119,15 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements
@Override
public Entitlement createBaseEntitlement(final UUID accountId, final PlanPhaseSpecifier planPhaseSpecifier, final String externalKey, final List<PlanPhasePriceOverride> overrides, final LocalDate effectiveDate, final Iterable<PluginProperty> properties, final CallContext callContext) throws EntitlementApiException {
+ EntitlementSpecifier entitlementSpecifier = new DefaultEntitlementSpecifier(planPhaseSpecifier, overrides);
+ final List<EntitlementSpecifier> entitlementSpecifierList = new ArrayList<EntitlementSpecifier>();
+ entitlementSpecifierList.add(entitlementSpecifier);
final EntitlementContext pluginContext = new DefaultEntitlementContext(OperationType.CREATE_SUBSCRIPTION,
accountId,
null,
null,
- planPhaseSpecifier,
externalKey,
- overrides,
+ entitlementSpecifierList,
effectiveDate,
properties,
callContext);
@@ -143,7 +146,8 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements
final DateTime referenceTime = clock.getUTCNow();
final DateTime requestedDate = dateHelper.fromLocalDateAndReferenceTime(updatedPluginContext.getEffectiveDate(), referenceTime, contextWithValidAccountRecordId);
- final SubscriptionBase subscription = subscriptionBaseInternalApi.createSubscription(bundle.getId(), updatedPluginContext.getPlanPhaseSpecifier(), updatedPluginContext.getPlanPhasePriceOverride(), requestedDate, contextWithValidAccountRecordId);
+ final EntitlementSpecifier specifier = getFirstEntitlementSpecifier(updatedPluginContext.getEntitlementSpecifiers());
+ final SubscriptionBase subscription = subscriptionBaseInternalApi.createSubscription(bundle.getId(), specifier.getPlanPhaseSpecifier(), specifier.getOverrides(), requestedDate, contextWithValidAccountRecordId);
return new DefaultEntitlement(subscription.getId(), eventsStreamBuilder, entitlementApi, pluginExecution,
blockingStateDao, subscriptionBaseInternalApi, checker, notificationQueueService,
@@ -156,12 +160,19 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements
return pluginExecution.executeWithPlugin(createBaseEntitlementWithPlugin, pluginContext);
}
+ private EntitlementSpecifier getFirstEntitlementSpecifier(final List<EntitlementSpecifier> entitlementSpecifiers) throws SubscriptionBaseApiException {
+ if ((entitlementSpecifiers == null) || entitlementSpecifiers.isEmpty()) {
+ throw new SubscriptionBaseApiException(ErrorCode.SUB_CREATE_INVALID_ENTITLEMENT_SPECIFIER);
+ }
+ return entitlementSpecifiers.get(0);
+ }
+
@Override
- public Entitlement createBaseEntitlementWithAddOns(final UUID accountId, final String externalKey, final Iterable<EntitlementSpecifier> entitlementSpecifier,
+ public Entitlement createBaseEntitlementWithAddOns(final UUID accountId, final String externalKey, final Iterable<EntitlementSpecifier> entitlementSpecifiers,
final LocalDate effectiveDate, final Iterable<PluginProperty> properties, final CallContext callContext)
throws EntitlementApiException {
- final EntitlementSpecifier baseSpecifier = Iterables.tryFind(entitlementSpecifier, new Predicate<EntitlementSpecifier>() {
+ final EntitlementSpecifier baseSpecifier = Iterables.tryFind(entitlementSpecifiers, new Predicate<EntitlementSpecifier>() {
@Override
public boolean apply(final EntitlementSpecifier specifier) {
return specifier.getPlanPhaseSpecifier() != null && ProductCategory.BASE.equals(specifier.getPlanPhaseSpecifier().getProductCategory());
@@ -172,13 +183,15 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements
throw new EntitlementApiException(new IllegalArgumentException(), ErrorCode.SUB_CREATE_NO_BP.getCode(), "Missing Base Subscription.");
}
- final EntitlementContext pluginContext = new DefaultEntitlementContext(OperationType.CREATE_SUBSCRIPTION,
+ final List<EntitlementSpecifier> entitlementSpecifierList = new ArrayList<EntitlementSpecifier>();
+ Iterables.addAll(entitlementSpecifierList, entitlementSpecifiers);
+
+ final EntitlementContext pluginContext = new DefaultEntitlementContext(OperationType.CREATE_SUBSCRIPTIONS_WITH_AO,
accountId,
null,
null,
- baseSpecifier.getPlanPhaseSpecifier(),
externalKey,
- baseSpecifier.getOverrides(),
+ entitlementSpecifierList,
effectiveDate,
properties,
callContext);
@@ -197,7 +210,7 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements
final DateTime referenceTime = clock.getUTCNow();
final DateTime requestedDate = dateHelper.fromLocalDateAndReferenceTime(updatedPluginContext.getEffectiveDate(), referenceTime, contextWithValidAccountRecordId);
- final SubscriptionBase subscription = subscriptionBaseInternalApi.createBaseSubscriptionWithAddOns(bundle.getId(), entitlementSpecifier, requestedDate, contextWithValidAccountRecordId);
+ final SubscriptionBase subscription = subscriptionBaseInternalApi.createBaseSubscriptionWithAddOns(bundle.getId(), entitlementSpecifiers, requestedDate, contextWithValidAccountRecordId);
return new DefaultEntitlement(subscription.getId(), eventsStreamBuilder, entitlementApi, pluginExecution,
blockingStateDao, subscriptionBaseInternalApi, checker, notificationQueueService,
@@ -216,13 +229,15 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements
@Override
public Entitlement addEntitlement(final UUID bundleId, final PlanPhaseSpecifier planPhaseSpecifier, final List<PlanPhasePriceOverride> overrides, final LocalDate effectiveDate, final Iterable<PluginProperty> properties, final CallContext callContext) throws EntitlementApiException {
+ EntitlementSpecifier entitlementSpecifier = new DefaultEntitlementSpecifier(planPhaseSpecifier, overrides);
+ final List<EntitlementSpecifier> entitlementSpecifierList = new ArrayList<EntitlementSpecifier>();
+ entitlementSpecifierList.add(entitlementSpecifier);
final EntitlementContext pluginContext = new DefaultEntitlementContext(OperationType.CREATE_SUBSCRIPTION,
null,
null,
bundleId,
- planPhaseSpecifier,
null,
- overrides,
+ entitlementSpecifierList,
effectiveDate,
properties,
callContext);
@@ -246,7 +261,8 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements
try {
final InternalCallContext context = internalCallContextFactory.createInternalCallContext(callContext);
- final SubscriptionBase subscription = subscriptionBaseInternalApi.createSubscription(bundleId, updatedPluginContext.getPlanPhaseSpecifier(), updatedPluginContext.getPlanPhasePriceOverride(), requestedDate, context);
+ final EntitlementSpecifier specifier = getFirstEntitlementSpecifier(updatedPluginContext.getEntitlementSpecifiers());
+ final SubscriptionBase subscription = subscriptionBaseInternalApi.createSubscription(bundleId, specifier.getPlanPhaseSpecifier(), specifier.getOverrides(), requestedDate, context);
return new DefaultEntitlement(subscription.getId(), eventsStreamBuilder, entitlementApi, pluginExecution,
blockingStateDao, subscriptionBaseInternalApi, checker, notificationQueueService,
@@ -371,9 +387,8 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements
sourceAccountId,
destAccountId,
null,
- null,
externalKey,
- null,
+ new ArrayList<EntitlementSpecifier>(),
effectiveDate,
properties,
context);
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlementContext.java b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlementContext.java
index 47ada7b..79da30c 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlementContext.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEntitlementContext.java
@@ -24,8 +24,6 @@ import javax.annotation.Nullable;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
-import org.killbill.billing.catalog.api.PlanPhasePriceOverride;
-import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
import org.killbill.billing.entitlement.plugin.api.EntitlementContext;
import org.killbill.billing.entitlement.plugin.api.OperationType;
import org.killbill.billing.entitlement.plugin.api.PriorEntitlementResult;
@@ -41,9 +39,8 @@ public class DefaultEntitlementContext implements EntitlementContext {
private final UUID accountId;
private final UUID destinationAccountId;
private final UUID bundleId;
- private final PlanPhaseSpecifier spec;
private final String externalKey;
- private final List<PlanPhasePriceOverride> planPhasePriceOverrides;
+ private final List<EntitlementSpecifier> entitlementSpecifiers;
private final LocalDate effectiveDate;
private final Iterable<PluginProperty> pluginProperties;
private final UUID userToken;
@@ -63,9 +60,8 @@ public class DefaultEntitlementContext implements EntitlementContext {
prev.getAccountId(),
prev.getDestinationAccountId(),
prev.getBundleId(),
- pluginResult != null && pluginResult.getAdjustedPlanPhaseSpecifier() != null ? pluginResult.getAdjustedPlanPhaseSpecifier() : prev.getPlanPhaseSpecifier(),
prev.getExternalKey(),
- pluginResult != null && pluginResult.getAdjustedPlanPhasePriceOverride() != null ? pluginResult.getAdjustedPlanPhasePriceOverride() : prev.getPlanPhasePriceOverride(),
+ pluginResult != null && pluginResult.getAdjustedEntitlementSpecifiers() != null ? pluginResult.getAdjustedEntitlementSpecifiers() : prev.getEntitlementSpecifiers(),
pluginResult != null && pluginResult.getAdjustedEffectiveDate() != null ? pluginResult.getAdjustedEffectiveDate() : prev.getEffectiveDate(),
pluginResult != null && pluginResult.getAdjustedPluginProperties() != null ? pluginResult.getAdjustedPluginProperties() : prev.getPluginProperties(),
prev);
@@ -75,13 +71,12 @@ public class DefaultEntitlementContext implements EntitlementContext {
final UUID accountId,
final UUID destinationAccountId,
final UUID bundleId,
- final PlanPhaseSpecifier spec,
final String externalKey,
- final List<PlanPhasePriceOverride> planPhasePriceOverrides,
+ final List<EntitlementSpecifier> entitlementSpecifiers,
final LocalDate effectiveDate,
final Iterable<PluginProperty> pluginProperties,
final CallContext callContext) {
- this(operationType, accountId, destinationAccountId, bundleId, spec, externalKey, planPhasePriceOverrides, effectiveDate, pluginProperties,
+ this(operationType, accountId, destinationAccountId, bundleId, externalKey, entitlementSpecifiers, effectiveDate, pluginProperties,
callContext.getUserToken(), callContext.getUserName(), callContext.getCallOrigin(), callContext.getUserType(), callContext.getReasonCode(),
callContext.getComments(), callContext.getCreatedDate(), callContext.getUpdatedDate(), callContext.getTenantId());
}
@@ -91,9 +86,8 @@ public class DefaultEntitlementContext implements EntitlementContext {
final UUID accountId,
final UUID destinationAccountId,
final UUID bundleId,
- final PlanPhaseSpecifier spec,
final String externalKey,
- final List<PlanPhasePriceOverride> planPhasePriceOverrides,
+ final List<EntitlementSpecifier> entitlementSpecifiers,
final LocalDate effectiveDate,
final Iterable<PluginProperty> pluginProperties,
final UUID userToken,
@@ -109,9 +103,8 @@ public class DefaultEntitlementContext implements EntitlementContext {
this.accountId = accountId;
this.destinationAccountId = destinationAccountId;
this.bundleId = bundleId;
- this.spec = spec;
this.externalKey = externalKey;
- this.planPhasePriceOverrides = planPhasePriceOverrides;
+ this.entitlementSpecifiers = entitlementSpecifiers;
this.effectiveDate = effectiveDate;
this.pluginProperties = pluginProperties;
this.userToken = userToken;
@@ -146,18 +139,13 @@ public class DefaultEntitlementContext implements EntitlementContext {
}
@Override
- public PlanPhaseSpecifier getPlanPhaseSpecifier() {
- return spec;
- }
-
- @Override
public String getExternalKey() {
return externalKey;
}
@Override
- public List<PlanPhasePriceOverride> getPlanPhasePriceOverride() {
- return planPhasePriceOverrides;
+ public List<EntitlementSpecifier> getEntitlementSpecifiers() {
+ return entitlementSpecifiers;
}
@Override
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/api/svcs/DefaultEntitlementApiBase.java b/entitlement/src/main/java/org/killbill/billing/entitlement/api/svcs/DefaultEntitlementApiBase.java
index e092b73..9651c95 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/api/svcs/DefaultEntitlementApiBase.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/api/svcs/DefaultEntitlementApiBase.java
@@ -157,7 +157,6 @@ public class DefaultEntitlementApiBase {
bundleId,
null,
null,
- null,
localEffectiveDate,
properties,
internalCallContextFactory.createCallContext(internalCallContext));
@@ -216,7 +215,6 @@ public class DefaultEntitlementApiBase {
bundleId,
null,
null,
- null,
localEffectiveDate,
properties,
internalCallContextFactory.createCallContext(internalCallContext));