killbill-memoizeit

entitlement: filter events to delete on uncancel It is possible

10/30/2013 12:26:13 PM

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 295f529..2bbb8f3 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
@@ -235,17 +235,19 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
         }
         final InternalCallContext contextWithValidAccountRecordId = internalCallContextFactory.createInternalCallContext(accountId, callContext);
         final List<BlockingState> blockingStates = blockingStateDao.getBlockingHistoryForService(getId(), EntitlementService.ENTITLEMENT_SERVICE_NAME, contextWithValidAccountRecordId);
-        final Collection<BlockingState> filtered = Collections2.filter(blockingStates, new Predicate<BlockingState>() {
+        final Collection<BlockingState> futureEntitlementCancellationEvents = Collections2.filter(blockingStates, new Predicate<BlockingState>() {
             @Override
             public boolean apply(final BlockingState input) {
-                return EntitlementService.ENTITLEMENT_SERVICE_NAME.equals(input.getService()) && input.getEffectiveDate().isAfter(clock.getUTCNow());
+                return EntitlementService.ENTITLEMENT_SERVICE_NAME.equals(input.getService()) &&
+                       DefaultEntitlementApi.ENT_STATE_CANCELLED.equals(input.getStateName()) &&
+                       input.getEffectiveDate().isAfter(clock.getUTCNow());
             }
         });
 
         // Reactivate entitlement
         // We should only have one future event in theory - but cleanup the data if it's not the case
         // See https://github.com/killbill/killbill/issues/111
-        for (final BlockingState futureCancellation : filtered) {
+        for (final BlockingState futureCancellation : futureEntitlementCancellationEvents) {
             blockingStateDao.unactiveBlockingState(futureCancellation.getId(), contextWithValidAccountRecordId);
         }