killbill-memoizeit
entitlement: fix potential NPE in DefaultSubscription getBaseSubscription() …
12/12/2013 10:35:54 AM
Changes
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 5576a98..102806e 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
@@ -124,10 +124,12 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
return eventsStream.getAccountTimeZone();
}
+ // Subscription associated with this entitlement (equals to baseSubscription for base subscriptions)
public SubscriptionBase getSubscriptionBase() {
return eventsStream.getSubscription();
}
+ // Base subscription for the bundle if it exists, null otherwise
public SubscriptionBase getBaseSubscription() {
return eventsStream.getBaseSubscription();
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultSubscription.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultSubscription.java
index 3938659..35bc11c 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultSubscription.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultSubscription.java
@@ -41,7 +41,12 @@ public class DefaultSubscription extends DefaultEntitlement implements Subscript
@Override
public LocalDate getBillingEndDate() {
final DateTime futureOrCurrentEndDateForSubscription = getSubscriptionBase().getEndDate() != null ? getSubscriptionBase().getEndDate() : getSubscriptionBase().getFutureEndDate();
- final DateTime futureOrCurrentEndDateForBaseSubscription = getBaseSubscription().getEndDate() != null ? getBaseSubscription().getEndDate() : getBaseSubscription().getFutureEndDate();
+ final DateTime futureOrCurrentEndDateForBaseSubscription;
+ if (getBaseSubscription() == null) {
+ futureOrCurrentEndDateForBaseSubscription = null;
+ } else {
+ futureOrCurrentEndDateForBaseSubscription = getBaseSubscription().getEndDate() != null ? getBaseSubscription().getEndDate() : getBaseSubscription().getFutureEndDate();
+ }
final DateTime futureOrCurrentEndDate;
if (futureOrCurrentEndDateForBaseSubscription != null && futureOrCurrentEndDateForBaseSubscription.isBefore(futureOrCurrentEndDateForSubscription)) {