killbill-aplcache

entitlement: See #492 Fixes TODO left for entitlement api

2/19/2016 12:48:22 AM

Details

diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestMigrationSubscriptions.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestMigrationSubscriptions.java
new file mode 100644
index 0000000..ed908be
--- /dev/null
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestMigrationSubscriptions.java
@@ -0,0 +1,4 @@
+package org.killbill.billing.beatrix.integration;
+
+public class TestMigrationSubscriptions {
+}
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 2720eb7..e6f7499 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
@@ -29,6 +29,7 @@ import org.killbill.billing.account.api.AccountData;
 import org.killbill.billing.api.TestApiListener.NextEvent;
 import org.killbill.billing.beatrix.util.InvoiceChecker.ExpectedInvoiceItemCheck;
 import org.killbill.billing.catalog.DefaultPlanPhasePriceOverride;
+import org.killbill.billing.catalog.api.BillingActionPolicy;
 import org.killbill.billing.catalog.api.BillingPeriod;
 import org.killbill.billing.catalog.api.PlanPhasePriceOverride;
 import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
@@ -144,17 +145,22 @@ public class TestWithEntilementPlugin extends TestIntegrationBase {
                     public boolean isAborted() {
                         return false;
                     }
-
                     @Override
-                    public LocalDate getAdjustedEffectiveDate() {
+                    public LocalDate getAdjustedEntitlementEffectiveDate() {
+                        return null;
+                    }
+                    @Override
+                    public LocalDate getAdjustedBillingEffectiveDate() {
+                        return null;
+                    }
+                    @Override
+                    public BillingActionPolicy getAdjustedBillingActionPolicy() {
                         return null;
                     }
-
                     @Override
                     public List<EntitlementSpecifier> getAdjustedEntitlementSpecifiers() {
                         return entitlementSpecifiers;
                     }
-
                     @Override
                     public Iterable<PluginProperty> getAdjustedPluginProperties() {
                         return null;
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 13a4a2a..4cf7938 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
@@ -298,6 +298,7 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
         // Get the latest state from disk
         refresh(callContext);
 
+        final LocalDate billingEffectiveDate = overrideBillingEffectiveDate ? entitlementEffectiveDate : null;
         final EntitlementContext pluginContext = new DefaultEntitlementContext(OperationType.CANCEL_SUBSCRIPTION,
                                                                                getAccountId(),
                                                                                null,
@@ -305,8 +306,8 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
                                                                                getExternalKey(),
                                                                                null,
                                                                                entitlementEffectiveDate,
-                                                                               // TODO wrong date
-                                                                               entitlementEffectiveDate,
+                                                                               billingEffectiveDate,
+                                                                               null,
                                                                                properties,
                                                                                callContext);
 
@@ -365,6 +366,7 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
                                                                                null,
                                                                                null,
                                                                                null,
+                                                                               null,
                                                                                properties,
                                                                                callContext);
 
@@ -437,8 +439,8 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
                                                                                getExternalKey(),
                                                                                null,
                                                                                entitlementEffectiveDate,
-                                                                               // TODO wrong date?
-                                                                               entitlementEffectiveDate,
+                                                                               null,
+                                                                               billingPolicy,
                                                                                properties,
                                                                                callContext);
 
@@ -514,6 +516,7 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
                                                                                null,
                                                                                null,
                                                                                null,
+                                                                               null,
                                                                                properties,
                                                                                callContext);
 
@@ -575,6 +578,7 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
                                                                                null,
                                                                                effectiveDate,
                                                                                effectiveDate,
+                                                                               null,
                                                                                properties,
                                                                                callContext);
 
@@ -637,8 +641,8 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
                                                                                getExternalKey(),
                                                                                null,
                                                                                entitlementEffectiveDate,
-                                                                               // TODO wrong date
-                                                                               entitlementEffectiveDate,
+                                                                               null,
+                                                                               actionPolicy,
                                                                                properties,
                                                                                callContext);
 
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 07819b2..6d920be 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
@@ -131,6 +131,7 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements 
                                                                                entitlementSpecifierList,
                                                                                entitlementEffectiveDate,
                                                                                billingEffectiveDate,
+                                                                               null,
                                                                                properties,
                                                                                callContext);
 
@@ -198,6 +199,7 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements 
                                                                                entitlementSpecifierList,
                                                                                entitlementEffectiveDate,
                                                                                billingEffectiveDate,
+                                                                               null,
                                                                                properties,
                                                                                callContext);
 
@@ -253,6 +255,7 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements 
                                                                                entitlementSpecifierList,
                                                                                entitlementEffectiveDate,
                                                                                billingEffectiveDate,
+                                                                               null,
                                                                                properties,
                                                                                callContext);
 
@@ -407,6 +410,7 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements 
                                                                                new ArrayList<EntitlementSpecifier>(),
                                                                                effectiveDate,
                                                                                effectiveDate,
+                                                                               null,
                                                                                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 9158eb0..d5ec969 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,6 +24,7 @@ import javax.annotation.Nullable;
 
 import org.joda.time.DateTime;
 import org.joda.time.LocalDate;
+import org.killbill.billing.catalog.api.BillingActionPolicy;
 import org.killbill.billing.entitlement.plugin.api.EntitlementContext;
 import org.killbill.billing.entitlement.plugin.api.OperationType;
 import org.killbill.billing.entitlement.plugin.api.PriorEntitlementResult;
@@ -43,6 +44,7 @@ public class DefaultEntitlementContext implements EntitlementContext {
     private final List<EntitlementSpecifier> entitlementSpecifiers;
     private final LocalDate entitlementEffectiveDate;
     private final LocalDate billingEffectiveDate;
+    private final BillingActionPolicy billingActionPolicy;
     private final Iterable<PluginProperty> pluginProperties;
     private final UUID userToken;
     private final String userName;
@@ -63,7 +65,9 @@ public class DefaultEntitlementContext implements EntitlementContext {
              prev.getBundleId(),
              prev.getExternalKey(),
              pluginResult != null && pluginResult.getAdjustedEntitlementSpecifiers() != null ? pluginResult.getAdjustedEntitlementSpecifiers() : prev.getEntitlementSpecifiers(),
-             pluginResult != null && pluginResult.getAdjustedEffectiveDate() != null ? pluginResult.getAdjustedEffectiveDate() : prev.getEntitlementEffectiveDate(), prev.getBillingEffectiveDate(),
+             pluginResult != null && pluginResult.getAdjustedEntitlementEffectiveDate() != null ? pluginResult.getAdjustedEntitlementEffectiveDate() : prev.getEntitlementEffectiveDate(),
+             pluginResult != null && pluginResult.getAdjustedBillingEffectiveDate() != null ? pluginResult.getAdjustedBillingEffectiveDate() : prev.getBillingEffectiveDate(),
+             pluginResult != null && pluginResult.getAdjustedBillingActionPolicy() != null ? pluginResult.getAdjustedBillingActionPolicy() : prev.getBillingActionPolicy(),
              pluginResult != null && pluginResult.getAdjustedPluginProperties() != null ? pluginResult.getAdjustedPluginProperties() : prev.getPluginProperties(),
              prev);
     }
@@ -76,9 +80,10 @@ public class DefaultEntitlementContext implements EntitlementContext {
                                      final List<EntitlementSpecifier> entitlementSpecifiers,
                                      @Nullable final LocalDate entitlementEffectiveDate,
                                      @Nullable final LocalDate billingEffectiveDate,
+                                     @Nullable final BillingActionPolicy actionPolicy,
                                      final Iterable<PluginProperty> pluginProperties,
                                      final CallContext callContext) {
-        this(operationType, accountId, destinationAccountId, bundleId, externalKey, entitlementSpecifiers, entitlementEffectiveDate, billingEffectiveDate, pluginProperties,
+        this(operationType, accountId, destinationAccountId, bundleId, externalKey, entitlementSpecifiers, entitlementEffectiveDate, billingEffectiveDate, actionPolicy, pluginProperties,
              callContext.getUserToken(), callContext.getUserName(), callContext.getCallOrigin(), callContext.getUserType(), callContext.getReasonCode(),
              callContext.getComments(), callContext.getCreatedDate(), callContext.getUpdatedDate(), callContext.getTenantId());
     }
@@ -92,6 +97,7 @@ public class DefaultEntitlementContext implements EntitlementContext {
                                      final List<EntitlementSpecifier> entitlementSpecifiers,
                                      @Nullable final LocalDate entitlementEffectiveDate,
                                      @Nullable final LocalDate billingEffectiveDate,
+                                     @Nullable final BillingActionPolicy actionPolicy,
                                      final Iterable<PluginProperty> pluginProperties,
                                      final UUID userToken,
                                      final String userName,
@@ -110,6 +116,7 @@ public class DefaultEntitlementContext implements EntitlementContext {
         this.entitlementSpecifiers = entitlementSpecifiers;
         this.entitlementEffectiveDate = entitlementEffectiveDate;
         this.billingEffectiveDate = billingEffectiveDate;
+        this.billingActionPolicy = actionPolicy;
         this.pluginProperties = pluginProperties;
         this.userToken = userToken;
         this.userName = userName;
@@ -164,6 +171,11 @@ public class DefaultEntitlementContext implements EntitlementContext {
     }
 
     @Override
+    public BillingActionPolicy getBillingActionPolicy() {
+        return billingActionPolicy;
+    }
+
+    @Override
     public Iterable<PluginProperty> getPluginProperties() {
         return pluginProperties;
     }
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultSubscriptionApi.java b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultSubscriptionApi.java
index 6b7140d..fc63c7b 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultSubscriptionApi.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultSubscriptionApi.java
@@ -282,6 +282,7 @@ public class DefaultSubscriptionApi implements SubscriptionApi {
                                                                                new ArrayList<EntitlementSpecifier>(),
                                                                                effectiveDate,
                                                                                effectiveDate,
+                                                                               null,
                                                                                ImmutableList.<PluginProperty>of(),
                                                                                callContext);
 
@@ -365,6 +366,7 @@ public class DefaultSubscriptionApi implements SubscriptionApi {
                                                                                new ArrayList<EntitlementSpecifier>(),
                                                                                new LocalDate(blockingState.getEffectiveDate(), account.getTimeZone()),
                                                                                null,
+                                                                               null,
                                                                                properties,
                                                                                callContext);
 
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 5b36d2b..b1a720c 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,6 +157,7 @@ public class DefaultEntitlementApiBase {
                                                                                null,
                                                                                localEffectiveDate,
                                                                                localEffectiveDate,
+                                                                               null,
                                                                                properties,
                                                                                internalCallContextFactory.createCallContext(internalCallContext));
 
@@ -198,6 +199,7 @@ public class DefaultEntitlementApiBase {
                                                                                null,
                                                                                localEffectiveDate,
                                                                                localEffectiveDate,
+                                                                               null,
                                                                                properties,
                                                                                internalCallContextFactory.createCallContext(internalCallContext));
         final WithEntitlementPlugin<Void> resumeWithPlugin = new WithEntitlementPlugin<Void>() {
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/api/svcs/DefaultEntitlementInternalApi.java b/entitlement/src/main/java/org/killbill/billing/entitlement/api/svcs/DefaultEntitlementInternalApi.java
index 9cbe35a..3fc96da 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/api/svcs/DefaultEntitlementInternalApi.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/api/svcs/DefaultEntitlementInternalApi.java
@@ -114,8 +114,8 @@ public class DefaultEntitlementInternalApi extends DefaultEntitlementApiBase imp
                                                                                    entitlement.getExternalKey(),
                                                                                    null,
                                                                                    effectiveDate,
-                                                                                   // TODO this is incorrect, the date will be the result of the billingPolicy
-                                                                                   effectiveDate,
+                                                                                   null,
+                                                                                   billingPolicy,
                                                                                    properties,
                                                                                    callContext);
             pluginContexts.add(pluginContext);