killbill-aplcache
entitlement: support cancellation dry run EntitlementUserApi#getDryRunChangePlanStatus …
7/12/2012 10:16:13 PM
Changes
entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultEntitlementUserApi.java 12(+7 -5)
junction/pom.xml 14(+8 -6)
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 3757319..0ea8cea 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
@@ -19,6 +19,8 @@ package com.ning.billing.entitlement.api.user;
import java.util.List;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
import com.ning.billing.catalog.api.PlanPhaseSpecifier;
@@ -47,7 +49,7 @@ public interface EntitlementUserApi {
public Subscription createSubscription(UUID bundleId, PlanPhaseSpecifier spec, DateTime requestedDate, CallContext context)
throws EntitlementUserApiException;
- public List<SubscriptionStatusDryRun> getDryRunChangePlanStatus(UUID subscriptionId, String productName, DateTime requestedDate)
+ public List<SubscriptionStatusDryRun> getDryRunChangePlanStatus(UUID subscriptionId, @Nullable String productName, DateTime requestedDate)
throws EntitlementUserApiException;
public DateTime getNextBillingDate(UUID account);
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 ce96066..b8aba53 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
@@ -20,6 +20,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
import com.google.inject.Inject;
@@ -213,9 +215,8 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
}
@Override
- public List<SubscriptionStatusDryRun> getDryRunChangePlanStatus(final UUID subscriptionId, final String baseProductName, final DateTime requestedDate)
+ public List<SubscriptionStatusDryRun> getDryRunChangePlanStatus(final UUID subscriptionId, @Nullable final String baseProductName, final DateTime requestedDate)
throws EntitlementUserApiException {
-
final Subscription subscription = dao.getSubscriptionFromId(subscriptionFactory, subscriptionId);
if (subscription == null) {
throw new EntitlementUserApiException(ErrorCode.ENT_INVALID_SUBSCRIPTION_ID, subscriptionId);
@@ -232,10 +233,11 @@ public class DefaultEntitlementUserApi implements EntitlementUserApi {
continue;
}
- DryRunChangeReason reason = null;
- if (addonUtils.isAddonIncludedFromProdName(baseProductName, requestedDate, cur.getCurrentPlan())) {
+ final DryRunChangeReason reason;
+ // If baseProductName is null, it's a cancellation dry-run. In this case, return all addons, so they are cancelled
+ if (baseProductName != null && addonUtils.isAddonIncludedFromProdName(baseProductName, requestedDate, cur.getCurrentPlan())) {
reason = DryRunChangeReason.AO_INCLUDED_IN_NEW_PLAN;
- } else if (addonUtils.isAddonAvailableFromProdName(baseProductName, requestedDate, cur.getCurrentPlan())) {
+ } else if (baseProductName != null && addonUtils.isAddonAvailableFromProdName(baseProductName, requestedDate, cur.getCurrentPlan())) {
reason = DryRunChangeReason.AO_AVAILABLE_IN_NEW_PLAN;
} else {
reason = DryRunChangeReason.AO_NOT_AVAILABLE_IN_NEW_PLAN;
junction/pom.xml 14(+8 -6)
diff --git a/junction/pom.xml b/junction/pom.xml
index 5ced827..e7a9373 100644
--- a/junction/pom.xml
+++ b/junction/pom.xml
@@ -29,6 +29,14 @@
<artifactId>killbill-util</artifactId>
</dependency>
<dependency>
+ <!-- We don't really need Guava - we need jsr305. Guava uses the com.google.code.findbugs
+ implementation, so let's use the same one. But since we don't explicitly depend on it elsewhere
+ (this should be fixed), let's depend on it transitively for now -->
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<scope>provided</scope>
@@ -93,12 +101,6 @@
<artifactId>mysql-connector-mxj-db-files</artifactId>
<scope>test</scope>
</dependency>
- <!-- Strangely this is needed in order to run the tests in local db mode -->
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
<build>
<plugins>
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 0b15824..a2bd036 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
@@ -20,9 +20,12 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import javax.annotation.Nullable;
+
import org.joda.time.DateTime;
import com.google.inject.Inject;
+
import com.ning.billing.catalog.api.PlanPhaseSpecifier;
import com.ning.billing.entitlement.api.user.EntitlementUserApi;
import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
@@ -97,8 +100,7 @@ public class BlockingEntitlementUserApi implements EntitlementUserApi {
}
@Override
- public List<SubscriptionStatusDryRun> getDryRunChangePlanStatus(
- final UUID subscriptionId, final String productName, final DateTime requestedDate)
+ public List<SubscriptionStatusDryRun> getDryRunChangePlanStatus(final UUID subscriptionId, @Nullable final String productName, final DateTime requestedDate)
throws EntitlementUserApiException {
return entitlementUserApi.getDryRunChangePlanStatus(subscriptionId, productName, requestedDate);
}