killbill-aplcache
entitlement: See #493 Refactor events to only send BlockingTransitionInternalEvent …
Changes
beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithDifferentBillingPeriods.java 8(+4 -4)
entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultBlockingTransitionInternalEvent.java 40(+40 -0)
entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultEffectiveEntitlementEvent.java 166(+0 -166)
entitlement/src/main/java/org/killbill/billing/entitlement/api/svcs/DefaultEntitlementApiBase.java 46(+6 -40)
entitlement/src/main/java/org/killbill/billing/entitlement/dao/DefaultBlockingStateDao.java 39(+29 -10)
entitlement/src/main/java/org/killbill/billing/entitlement/DefaultEntitlementService.java 16(+12 -4)
entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/BlockingTransitionNotificationKey.java 34(+34 -0)
entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/DefaultEventsStream.java 25(+23 -2)
entitlement/src/test/java/org/killbill/billing/entitlement/api/TestDefaultEntitlementApi.java 14(+6 -8)
Details
diff --git a/api/src/main/java/org/killbill/billing/entitlement/EventsStream.java b/api/src/main/java/org/killbill/billing/entitlement/EventsStream.java
index b2e6d4b..188e714 100644
--- a/api/src/main/java/org/killbill/billing/entitlement/EventsStream.java
+++ b/api/src/main/java/org/killbill/billing/entitlement/EventsStream.java
@@ -42,6 +42,8 @@ public interface EventsStream {
EntitlementState getEntitlementState();
+ LocalDate getEntitlementEffectiveStartDate();
+
LocalDate getEntitlementEffectiveEndDate();
SubscriptionBase getSubscriptionBase();
diff --git a/api/src/main/java/org/killbill/billing/events/BlockingTransitionInternalEvent.java b/api/src/main/java/org/killbill/billing/events/BlockingTransitionInternalEvent.java
index b31dbdd..010901d 100644
--- a/api/src/main/java/org/killbill/billing/events/BlockingTransitionInternalEvent.java
+++ b/api/src/main/java/org/killbill/billing/events/BlockingTransitionInternalEvent.java
@@ -18,6 +18,7 @@ package org.killbill.billing.events;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.killbill.billing.entitlement.api.BlockingStateType;
// Event for effective blocking state changes (not entitlement specific)
@@ -27,6 +28,12 @@ public interface BlockingTransitionInternalEvent extends BusInternalEvent {
public BlockingStateType getBlockingType();
+ public String getStateName();
+
+ public String getService();
+
+ public DateTime getEffectiveDate();
+
public Boolean isTransitionedToBlockedBilling();
public Boolean isTransitionedToUnblockedBilling();
diff --git a/beatrix/src/main/java/org/killbill/billing/beatrix/extbus/BeatrixListener.java b/beatrix/src/main/java/org/killbill/billing/beatrix/extbus/BeatrixListener.java
index 7870b49..479eef0 100644
--- a/beatrix/src/main/java/org/killbill/billing/beatrix/extbus/BeatrixListener.java
+++ b/beatrix/src/main/java/org/killbill/billing/beatrix/extbus/BeatrixListener.java
@@ -26,8 +26,10 @@ import javax.inject.Named;
import org.killbill.billing.ObjectType;
import org.killbill.billing.callcontext.InternalCallContext;
+import org.killbill.billing.entitlement.EntitlementService;
import org.killbill.billing.entitlement.EntitlementTransitionType;
import org.killbill.billing.entitlement.api.BlockingStateType;
+import org.killbill.billing.entitlement.api.DefaultEntitlementApi;
import org.killbill.billing.events.AccountChangeInternalEvent;
import org.killbill.billing.events.AccountCreationInternalEvent;
import org.killbill.billing.events.BlockingTransitionInternalEvent;
@@ -161,7 +163,20 @@ public class BeatrixListener {
objectType = ObjectType.SUBSCRIPTION;
}
objectId = realEventBS.getBlockableId();
- // Probably we should serialize the isTransitionedTo* from BlockingTransitionInternalEvent into the metdata section
+
+ if (EntitlementService.ENTITLEMENT_SERVICE_NAME.equals(realEventBS.getService())) {
+ if (DefaultEntitlementApi.ENT_STATE_START.equals(realEventBS.getStateName())) {
+ eventBusType = ExtBusEventType.ENTITLEMENT_CREATION;
+ } else if (DefaultEntitlementApi.ENT_STATE_BLOCKED.equals(realEventBS.getStateName())) {
+ eventBusType = ExtBusEventType.BUNDLE_PAUSE;
+ } else if (DefaultEntitlementApi.ENT_STATE_CLEAR.equals(realEventBS.getStateName())) {
+ eventBusType = ExtBusEventType.BUNDLE_RESUME;
+ } else if (DefaultEntitlementApi.ENT_STATE_CANCELLED.equals(realEventBS.getStateName())) {
+ eventBusType = ExtBusEventType.ENTITLEMENT_CANCEL;
+ }
+ } else {
+ eventBusType = ExtBusEventType.BLOCKING_STATE;
+ }
break;
case ENTITLEMENT_TRANSITION:
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegration.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegration.java
index ab9e470..d8fca92 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegration.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegration.java
@@ -581,7 +581,7 @@ public class TestIntegration extends TestIntegrationBase {
// PAUSE THE ENTITLEMENT
DefaultEntitlement entitlement = (DefaultEntitlement) entitlementApi.getEntitlementForId(baseEntitlement.getId(), callContext);
- busHandler.pushExpectedEvents(NextEvent.PAUSE, NextEvent.BLOCK, NextEvent.NULL_INVOICE, NextEvent.INVOICE);
+ busHandler.pushExpectedEvents(NextEvent.BLOCK, NextEvent.INVOICE);
entitlementApi.pause(entitlement.getBundleId(), clock.getUTCNow().toLocalDate(), ImmutableList.<PluginProperty>of(), callContext);
assertListenerStatus();
@@ -598,7 +598,7 @@ public class TestIntegration extends TestIntegrationBase {
// MOVE CLOCK FORWARD ADN CHECK THERE IS NO NEW INVOICE
clock.addDeltaFromReality(AT_LEAST_ONE_MONTH_MS);
- busHandler.pushExpectedEvents(NextEvent.RESUME, NextEvent.BLOCK, NextEvent.NULL_INVOICE, NextEvent.NULL_INVOICE, NextEvent.INVOICE);
+ busHandler.pushExpectedEvents(NextEvent.BLOCK, NextEvent.NULL_INVOICE, NextEvent.INVOICE);
entitlementApi.resume(entitlement.getBundleId(), clock.getUTCNow().toLocalDate(), ImmutableList.<PluginProperty>of(), callContext);
assertListenerStatus();
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithDifferentBillingPeriods.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithDifferentBillingPeriods.java
index 270f9a1..84e773e 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithDifferentBillingPeriods.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationWithDifferentBillingPeriods.java
@@ -199,7 +199,7 @@ public class TestIntegrationWithDifferentBillingPeriods extends TestIntegrationB
// 2012-5-12
clock.addDays(10);
- busHandler.pushExpectedEvents(NextEvent.PAUSE, NextEvent.BLOCK, NextEvent.NULL_INVOICE, NextEvent.INVOICE);
+ busHandler.pushExpectedEvents(NextEvent.BLOCK, NextEvent.INVOICE);
entitlementApi.pause(bpEntitlement.getBundleId(), clock.getUTCNow().toLocalDate(), ImmutableList.<PluginProperty>of(), callContext);
assertListenerStatus();
@@ -218,7 +218,7 @@ public class TestIntegrationWithDifferentBillingPeriods extends TestIntegrationB
// 2012-6-4
clock.addDays(23);
- busHandler.pushExpectedEvents(NextEvent.RESUME, NextEvent.BLOCK, NextEvent.NULL_INVOICE, NextEvent.INVOICE, NextEvent.PAYMENT, NextEvent.INVOICE_PAYMENT);
+ busHandler.pushExpectedEvents(NextEvent.BLOCK, NextEvent.INVOICE, NextEvent.PAYMENT, NextEvent.INVOICE_PAYMENT);
entitlementApi.resume(bpEntitlement.getBundleId(), clock.getUTCNow().toLocalDate(), ImmutableList.<PluginProperty>of(), callContext);
assertListenerStatus();
@@ -279,13 +279,13 @@ public class TestIntegrationWithDifferentBillingPeriods extends TestIntegrationB
// 2012-5-12
clock.addDays(10);
- busHandler.pushExpectedEvents(NextEvent.PAUSE, NextEvent.BLOCK);
+ busHandler.pushExpectedEvents(NextEvent.BLOCK);
entitlementApi.pause(bpEntitlement.getBundleId(), clock.getUTCNow().toLocalDate(), ImmutableList.<PluginProperty>of(), callContext);
assertListenerStatus();
// 2012-6-4
clock.addDays(23);
- busHandler.pushExpectedEvents(NextEvent.RESUME, NextEvent.BLOCK);
+ busHandler.pushExpectedEvents(NextEvent.BLOCK);
entitlementApi.resume(bpEntitlement.getBundleId(), clock.getUTCNow().toLocalDate(), ImmutableList.<PluginProperty>of(), callContext);
assertListenerStatus();
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultBlockingTransitionInternalEvent.java b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultBlockingTransitionInternalEvent.java
index f32a19c..67b0ae2 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultBlockingTransitionInternalEvent.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/api/DefaultBlockingTransitionInternalEvent.java
@@ -18,6 +18,7 @@ package org.killbill.billing.entitlement.api;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.killbill.billing.events.BlockingTransitionInternalEvent;
import org.killbill.billing.events.BusEventBase;
@@ -28,6 +29,9 @@ import com.fasterxml.jackson.annotation.JsonProperty;
public class DefaultBlockingTransitionInternalEvent extends BusEventBase implements BlockingTransitionInternalEvent {
private final UUID blockableId;
+ private final String stateName;
+ private final String service;
+ private final DateTime effectiveDate;
private final BlockingStateType blockingType;
private final Boolean isTransitionedToBlockedBilling;
private final Boolean isTransitionedToUnblockedBilling;
@@ -36,6 +40,9 @@ public class DefaultBlockingTransitionInternalEvent extends BusEventBase impleme
@JsonCreator
public DefaultBlockingTransitionInternalEvent(@JsonProperty("blockableId") final UUID blockableId,
+ @JsonProperty("stateName") final String stateName,
+ @JsonProperty("service") final String service,
+ @JsonProperty("effectiveDate") final DateTime effectiveDate,
@JsonProperty("blockingType") final BlockingStateType blockingType,
@JsonProperty("isTransitionedToBlockedBilling") final Boolean transitionedToBlockedBilling,
@JsonProperty("isTransitionedToUnblockedBilling") final Boolean transitionedToUnblockedBilling,
@@ -47,6 +54,9 @@ public class DefaultBlockingTransitionInternalEvent extends BusEventBase impleme
super(searchKey1, searchKey2, userToken);
this.blockableId = blockableId;
this.blockingType = blockingType;
+ this.service = service;
+ this.stateName = stateName;
+ this.effectiveDate = effectiveDate;
isTransitionedToBlockedBilling = transitionedToBlockedBilling;
isTransitionedToUnblockedBilling = transitionedToUnblockedBilling;
isTransitionedToBlockedEntitlement = transitionedToBlockedEntitlement;
@@ -63,6 +73,21 @@ public class DefaultBlockingTransitionInternalEvent extends BusEventBase impleme
return blockingType;
}
+ @Override
+ public String getStateName() {
+ return stateName;
+ }
+
+ @Override
+ public String getService() {
+ return service;
+ }
+
+ @Override
+ public DateTime getEffectiveDate() {
+ return effectiveDate;
+ }
+
@JsonProperty("isTransitionedToBlockedBilling")
@Override
public Boolean isTransitionedToBlockedBilling() {
@@ -110,6 +135,15 @@ public class DefaultBlockingTransitionInternalEvent extends BusEventBase impleme
if (blockingType != that.blockingType) {
return false;
}
+ if (stateName != null ? !stateName.equals(that.stateName) : that.stateName != null) {
+ return false;
+ }
+ if (service != null ? !service.equals(that.service) : that.service != null) {
+ return false;
+ }
+ if (effectiveDate != null ? effectiveDate.compareTo(that.effectiveDate) != 0 : that.effectiveDate != null) {
+ return false;
+ }
if (isTransitionedToBlockedBilling != null ? !isTransitionedToBlockedBilling.equals(that.isTransitionedToBlockedBilling) : that.isTransitionedToBlockedBilling != null) {
return false;
}
@@ -130,6 +164,9 @@ public class DefaultBlockingTransitionInternalEvent extends BusEventBase impleme
public int hashCode() {
int result = blockableId != null ? blockableId.hashCode() : 0;
result = 31 * result + (blockingType != null ? blockingType.hashCode() : 0);
+ result = 31 * result + (stateName != null ? stateName.hashCode() : 0);
+ result = 31 * result + (service != null ? service.hashCode() : 0);
+ result = 31 * result + (effectiveDate != null ? effectiveDate.hashCode() : 0);
result = 31 * result + (isTransitionedToBlockedBilling != null ? isTransitionedToBlockedBilling.hashCode() : 0);
result = 31 * result + (isTransitionedToUnblockedBilling != null ? isTransitionedToUnblockedBilling.hashCode() : 0);
result = 31 * result + (isTransitionedToBlockedEntitlement != null ? isTransitionedToBlockedEntitlement.hashCode() : 0);
@@ -142,6 +179,9 @@ public class DefaultBlockingTransitionInternalEvent extends BusEventBase impleme
final StringBuilder sb = new StringBuilder("DefaultBlockingTransitionInternalEvent{");
sb.append("blockableId=").append(blockableId);
sb.append(", blockingType=").append(blockingType);
+ sb.append(", stateName=").append(stateName);
+ sb.append(", service=").append(service);
+ sb.append(", effectiveDate=").append(effectiveDate);
sb.append(", isTransitionedToBlockedBilling=").append(isTransitionedToBlockedBilling);
sb.append(", isTransitionedToUnblockedBilling=").append(isTransitionedToUnblockedBilling);
sb.append(", isTransitionedToBlockedEntitlement=").append(isTransitionedToBlockedEntitlement);
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 6e35ce2..1cc7eb0 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
@@ -246,7 +246,7 @@ public class DefaultEntitlement extends EntityBase implements Entitlement {
@Override
public LocalDate getEffectiveStartDate() {
- return internalTenantContext.toLocalDate(getSubscriptionBase().getStartDate());
+ return eventsStream.getEntitlementEffectiveStartDate();
}
@Override
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 f167068..24355e2 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
@@ -19,6 +19,7 @@
package org.killbill.billing.entitlement.api;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -63,6 +64,7 @@ import org.killbill.billing.util.callcontext.InternalCallContextFactory;
import org.killbill.billing.util.callcontext.TenantContext;
import org.killbill.bus.api.PersistentBus;
import org.killbill.clock.Clock;
+import org.killbill.notificationq.api.NotificationEvent;
import org.killbill.notificationq.api.NotificationQueueService;
import com.google.common.base.Function;
@@ -73,6 +75,7 @@ import com.google.common.collect.Lists;
public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements EntitlementApi {
+ public static final String ENT_STATE_START = "ENT_STARTED";
public static final String ENT_STATE_BLOCKED = "ENT_BLOCKED";
public static final String ENT_STATE_CLEAR = "ENT_CLEAR";
public static final String ENT_STATE_CANCELLED = "ENT_CANCELLED";
@@ -142,11 +145,11 @@ public class DefaultEntitlementApi extends DefaultEntitlementApiBase implements
final SubscriptionBaseBundle bundle = subscriptionBaseInternalApi.createBundleForAccount(accountId, externalKey, contextWithValidAccountRecordId);
- final DateTime referenceTime = clock.getUTCNow();
final DateTime requestedDate = dateHelper.fromLocalDateAndReferenceTime(updatedPluginContext.getEffectiveDate(), contextWithValidAccountRecordId);
final EntitlementSpecifier specifier = getFirstEntitlementSpecifier(updatedPluginContext.getEntitlementSpecifiers());
final SubscriptionBase subscription = subscriptionBaseInternalApi.createSubscription(bundle.getId(), specifier.getPlanPhaseSpecifier(), specifier.getOverrides(), requestedDate, contextWithValidAccountRecordId);
+
return new DefaultEntitlement(accountId, subscription.getId(), eventsStreamBuilder, entitlementApi, pluginExecution,
blockingStateDao, subscriptionBaseInternalApi, checker, notificationQueueService,
entitlementUtils, dateHelper, clock, securityApi, internalCallContextFactory, callContext);
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 7ea6421..111c516 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
@@ -312,8 +312,6 @@ public class DefaultSubscriptionApi implements SubscriptionApi {
}
final InternalCallContext internalCallContextWithValidAccountId;
-
- final InternalCallContext internalCallContext;
final ImmutableAccountData account;
final UUID accountId;
final UUID bundleId;
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 9a4acfd..4ddafaf 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
@@ -38,11 +38,9 @@ import org.killbill.billing.entitlement.AccountEntitlements;
import org.killbill.billing.entitlement.AccountEventsStreams;
import org.killbill.billing.entitlement.DefaultEntitlementService;
import org.killbill.billing.entitlement.EntitlementService;
-import org.killbill.billing.entitlement.EntitlementTransitionType;
import org.killbill.billing.entitlement.EventsStream;
import org.killbill.billing.entitlement.api.BlockingState;
import org.killbill.billing.entitlement.api.BlockingStateType;
-import org.killbill.billing.entitlement.api.DefaultEffectiveEntitlementEvent;
import org.killbill.billing.entitlement.api.DefaultEntitlement;
import org.killbill.billing.entitlement.api.DefaultEntitlementApi;
import org.killbill.billing.entitlement.api.DefaultEntitlementContext;
@@ -69,7 +67,6 @@ import org.killbill.billing.subscription.api.user.SubscriptionBaseApiException;
import org.killbill.billing.subscription.api.user.SubscriptionBaseBundle;
import org.killbill.billing.util.callcontext.InternalCallContextFactory;
import org.killbill.bus.api.PersistentBus;
-import org.killbill.bus.api.PersistentBus.EventBusException;
import org.killbill.clock.Clock;
import org.killbill.notificationq.api.NotificationEvent;
import org.killbill.notificationq.api.NotificationQueue;
@@ -177,20 +174,7 @@ public class DefaultEntitlementApiBase {
return null;
}
- final UUID blockingId = blockUnblockBundle(bundleId, DefaultEntitlementApi.ENT_STATE_BLOCKED, EntitlementService.ENTITLEMENT_SERVICE_NAME, localEffectiveDate, true, true, true, baseSubscription, internalCallContext);
-
- // Should we send one event per entitlement in the bundle?
- // Code below only sends one event for the bundle and use the base entitlementId
- final DefaultEffectiveEntitlementEvent event = new DefaultEffectiveEntitlementEvent(blockingId, baseSubscription.getId(), bundleId, bundle.getAccountId(), EntitlementTransitionType.BLOCK_BUNDLE,
- effectiveDate, clock.getUTCNow(),
- internalCallContext.getAccountRecordId(), internalCallContext.getTenantRecordId(),
- internalCallContext.getUserToken());
-
- try {
- eventBus.post(event);
- } catch (EventBusException e) {
- log.warn("Failed to post bus event for pause operation on bundle " + bundleId);
- }
+ blockUnblockBundle(bundleId, DefaultEntitlementApi.ENT_STATE_BLOCKED, EntitlementService.ENTITLEMENT_SERVICE_NAME, localEffectiveDate, true, true, true, baseSubscription, internalCallContext);
} catch (SubscriptionBaseApiException e) {
throw new EntitlementApiException(e);
@@ -229,20 +213,7 @@ public class DefaultEntitlementApiBase {
return null;
}
- final UUID blockingId = blockUnblockBundle(bundleId, DefaultEntitlementApi.ENT_STATE_CLEAR, EntitlementService.ENTITLEMENT_SERVICE_NAME, localEffectiveDate, false, false, false, baseSubscription, internalCallContext);
-
- // Should we send one event per entitlement in the bundle?
- // Code below only sends one event for the bundle and use the base entitlementId
- final DefaultEffectiveEntitlementEvent event = new DefaultEffectiveEntitlementEvent(blockingId, baseSubscription.getId(), bundleId, bundle.getAccountId(), EntitlementTransitionType.UNBLOCK_BUNDLE,
- effectiveDate, clock.getUTCNow(),
- internalCallContext.getAccountRecordId(), internalCallContext.getTenantRecordId(),
- internalCallContext.getUserToken());
-
- try {
- eventBus.post(event);
- } catch (EventBusException e) {
- log.warn("Failed to post bus event for resume operation on bundle " + bundleId);
- }
+ blockUnblockBundle(bundleId, DefaultEntitlementApi.ENT_STATE_CLEAR, EntitlementService.ENTITLEMENT_SERVICE_NAME, localEffectiveDate, false, false, false, baseSubscription, internalCallContext);
} catch (SubscriptionBaseApiException e) {
throw new EntitlementApiException(e);
@@ -262,15 +233,10 @@ public class DefaultEntitlementApiBase {
private UUID blockUnblockBundle(final UUID bundleId, final String stateName, final String serviceName, @Nullable final LocalDate localEffectiveDate, boolean blockBilling, boolean blockEntitlement, boolean blockChange, @Nullable final SubscriptionBase inputBaseSubscription, final InternalCallContext internalCallContext)
throws EntitlementApiException {
- try {
- final SubscriptionBase baseSubscription = inputBaseSubscription == null ? subscriptionInternalApi.getBaseSubscription(bundleId, internalCallContext) : inputBaseSubscription;
- final DateTime effectiveDate = dateHelper.fromLocalDateAndReferenceTime(localEffectiveDate, internalCallContext);
- final BlockingState state = new DefaultBlockingState(bundleId, BlockingStateType.SUBSCRIPTION_BUNDLE, stateName, serviceName, blockChange, blockEntitlement, blockBilling, effectiveDate);
- entitlementUtils.setBlockingStatesAndPostBlockingTransitionEvent(ImmutableList.<BlockingState>of(state), bundleId, internalCallContext);
- return state.getId();
- } catch (final SubscriptionBaseApiException e) {
- throw new EntitlementApiException(e);
- }
+ final DateTime effectiveDate = dateHelper.fromLocalDateAndReferenceTime(localEffectiveDate, internalCallContext);
+ final BlockingState state = new DefaultBlockingState(bundleId, BlockingStateType.SUBSCRIPTION_BUNDLE, stateName, serviceName, blockChange, blockEntitlement, blockBilling, effectiveDate);
+ entitlementUtils.setBlockingStatesAndPostBlockingTransitionEvent(ImmutableList.<BlockingState>of(state), bundleId, internalCallContext);
+ return state.getId();
}
protected void recordPauseResumeNotificationEntry(final UUID entitlementId, final UUID bundleId, final DateTime effectiveDate, final boolean isPause, final InternalCallContext contextWithValidAccountRecordId) throws EntitlementApiException {
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/DefaultBlockingStateDao.java b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/DefaultBlockingStateDao.java
index cb1551e..056bd3a 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/dao/DefaultBlockingStateDao.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/dao/DefaultBlockingStateDao.java
@@ -227,9 +227,11 @@ public class DefaultBlockingStateDao extends EntityDaoBase<BlockingStateModelDao
}
}
+ boolean inserted = false;
// Create the state, if needed
if (!blockingStatesToRemove.contains(newBlockingStateModelDao.getId())) {
sqlDao.create(newBlockingStateModelDao, context);
+ inserted = true;
}
final BlockingAggregator currentState = getBlockedStatus(sqlDao, entitySqlDaoWrapperFactory.getHandle(), state.getBlockedId(), state.getType(), bundleId, upToDate, context);
@@ -239,7 +241,9 @@ public class DefaultBlockingStateDao extends EntityDaoBase<BlockingStateModelDao
state.getEffectiveDate(),
state.getBlockedId(),
state.getType(),
+ state.getStateName(),
state.getService(),
+ inserted,
previousState,
currentState,
context);
@@ -278,7 +282,9 @@ public class DefaultBlockingStateDao extends EntityDaoBase<BlockingStateModelDao
final DateTime effectiveDate,
final UUID blockableId,
final BlockingStateType type,
+ final String stateName,
final String serviceName,
+ final boolean blockingStateInserted,
final BlockingAggregator previousState,
final BlockingAggregator currentState,
final InternalCallContext context) {
@@ -290,18 +296,31 @@ public class DefaultBlockingStateDao extends EntityDaoBase<BlockingStateModelDao
if (effectiveDate.compareTo(clock.getUTCNow()) > 0) {
// Add notification entry to send the bus event at the effective date
- final NotificationEvent notificationEvent = new BlockingTransitionNotificationKey(blockingStateId, blockableId, type,
- isTransitionToBlockedBilling, isTransitionToUnblockedBilling,
- isTransitionToBlockedEntitlement, isTransitionToUnblockedEntitlement);
+ final NotificationEvent notificationEvent = new BlockingTransitionNotificationKey(blockingStateId,
+ blockableId,
+ stateName,
+ serviceName,
+ effectiveDate,
+ type,
+ isTransitionToBlockedBilling,
+ isTransitionToUnblockedBilling,
+ isTransitionToBlockedEntitlement,
+ isTransitionToUnblockedEntitlement);
recordFutureNotificationFromTransaction(entitySqlDaoWrapperFactory, effectiveDate, notificationEvent, context);
} else {
- // TODO Do we want to send a DefaultEffectiveEntitlementEvent for entitlement specific blocking states?
- // Don't post if nothing has changed for entitlement-service
- if (!serviceName.equals(EntitlementService.ENTITLEMENT_SERVICE_NAME) || !previousState.equals(currentState)) {
- final BusEvent event = new DefaultBlockingTransitionInternalEvent(blockableId, type,
- isTransitionToBlockedBilling, isTransitionToUnblockedBilling,
- isTransitionToBlockedEntitlement, isTransitionToUnblockedEntitlement,
- context.getAccountRecordId(), context.getTenantRecordId(), context.getUserToken());
+ if (blockingStateInserted) {
+ final BusEvent event = new DefaultBlockingTransitionInternalEvent(blockableId,
+ stateName,
+ serviceName,
+ effectiveDate,
+ type,
+ isTransitionToBlockedBilling,
+ isTransitionToUnblockedBilling,
+ isTransitionToBlockedEntitlement,
+ isTransitionToUnblockedEntitlement,
+ context.getAccountRecordId(),
+ context.getTenantRecordId(),
+ context.getUserToken());
notifyBusFromTransaction(entitySqlDaoWrapperFactory, event);
} else {
log.debug("Skipping event for service {} and blockableId {} (previousState={}, currentState={})", serviceName, blockableId, previousState, currentState);
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/DefaultEntitlementService.java b/entitlement/src/main/java/org/killbill/billing/entitlement/DefaultEntitlementService.java
index c3dc3eb..68465ae 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/DefaultEntitlementService.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/DefaultEntitlementService.java
@@ -182,10 +182,18 @@ public class DefaultEntitlementService implements EntitlementService {
return;
}
- final BusEvent event = new DefaultBlockingTransitionInternalEvent(key.getBlockableId(), key.getBlockingType(),
- key.isTransitionedToBlockedBilling(), key.isTransitionedToUnblockedBilling(),
- key.isTransitionedToBlockedEntitlement(), key.isTransitionToUnblockedEntitlement(),
- internalCallContext.getAccountRecordId(), internalCallContext.getTenantRecordId(), internalCallContext.getUserToken());
+ final BusEvent event = new DefaultBlockingTransitionInternalEvent(key.getBlockableId(),
+ key.getStateName(),
+ key.getService(),
+ key.getEffectiveDate(),
+ key.getBlockingType(),
+ key.isTransitionedToBlockedBilling(),
+ key.isTransitionedToUnblockedBilling(),
+ key.isTransitionedToBlockedEntitlement(),
+ key.isTransitionToUnblockedEntitlement(),
+ internalCallContext.getAccountRecordId(),
+ internalCallContext.getTenantRecordId(),
+ internalCallContext.getUserToken());
try {
eventBus.post(event);
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/BlockingTransitionNotificationKey.java b/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/BlockingTransitionNotificationKey.java
index fc4b02d..93035ad 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/BlockingTransitionNotificationKey.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/BlockingTransitionNotificationKey.java
@@ -18,6 +18,7 @@ package org.killbill.billing.entitlement.engine.core;
import java.util.UUID;
+import org.joda.time.DateTime;
import org.killbill.billing.entitlement.api.BlockingStateType;
import org.killbill.notificationq.api.NotificationEvent;
@@ -29,6 +30,9 @@ public class BlockingTransitionNotificationKey implements NotificationEvent {
private final UUID blockingStateId;
private final UUID blockableId;
private final BlockingStateType blockingType;
+ private final String stateName;
+ private final String service;
+ private final DateTime effectiveDate;
private final Boolean isTransitionToBlockedBilling;
private final Boolean isTransitionToUnblockedBilling;
private final Boolean isTransitionToBlockedEntitlement;
@@ -37,6 +41,9 @@ public class BlockingTransitionNotificationKey implements NotificationEvent {
@JsonCreator
public BlockingTransitionNotificationKey(@JsonProperty("blockingStateId") final UUID blockingStateId,
@JsonProperty("blockableId") final UUID blockableId,
+ @JsonProperty("stateName") final String stateName,
+ @JsonProperty("service") final String service,
+ @JsonProperty("effectiveDate") final DateTime effectiveDate,
@JsonProperty("type") final BlockingStateType blockingType,
@JsonProperty("isTransitionToBlockedBilling") final Boolean isTransitionToBlockedBilling,
@JsonProperty("isTransitionToUnblockedBilling") final Boolean isTransitionToUnblockedBilling,
@@ -45,6 +52,9 @@ public class BlockingTransitionNotificationKey implements NotificationEvent {
this.blockingStateId = blockingStateId;
this.blockableId = blockableId;
+ this.service = service;
+ this.stateName = stateName;
+ this.effectiveDate = effectiveDate;
this.blockingType = blockingType;
this.isTransitionToBlockedBilling = isTransitionToBlockedBilling;
this.isTransitionToUnblockedBilling = isTransitionToUnblockedBilling;
@@ -64,6 +74,18 @@ public class BlockingTransitionNotificationKey implements NotificationEvent {
return blockingType;
}
+ public String getStateName() {
+ return stateName;
+ }
+
+ public String getService() {
+ return service;
+ }
+
+ public DateTime getEffectiveDate() {
+ return effectiveDate;
+ }
+
@JsonProperty("isTransitionToBlockedBilling")
public Boolean isTransitionedToBlockedBilling() {
return isTransitionToBlockedBilling;
@@ -115,6 +137,15 @@ public class BlockingTransitionNotificationKey implements NotificationEvent {
if (blockableId != null ? !blockableId.equals(that.blockableId) : that.blockableId != null) {
return false;
}
+ if (stateName != null ? !stateName.equals(that.stateName) : that.stateName != null) {
+ return false;
+ }
+ if (service != null ? !service.equals(that.service) : that.service != null) {
+ return false;
+ }
+ if (effectiveDate != null ? effectiveDate.compareTo(that.effectiveDate) != 0 : that.effectiveDate != null) {
+ return false;
+ }
if (blockingType != that.blockingType) {
return false;
}
@@ -138,6 +169,9 @@ public class BlockingTransitionNotificationKey implements NotificationEvent {
public int hashCode() {
int result = blockingStateId != null ? blockingStateId.hashCode() : 0;
result = 31 * result + (blockableId != null ? blockableId.hashCode() : 0);
+ result = 31 * result + (stateName != null ? stateName.hashCode() : 0);
+ result = 31 * result + (service != null ? service.hashCode() : 0);
+ result = 31 * result + (effectiveDate != null ? effectiveDate.hashCode() : 0);
result = 31 * result + (blockingType != null ? blockingType.hashCode() : 0);
result = 31 * result + (isTransitionToBlockedBilling != null ? isTransitionToBlockedBilling.hashCode() : 0);
result = 31 * result + (isTransitionToUnblockedBilling != null ? isTransitionToUnblockedBilling.hashCode() : 0);
diff --git a/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/DefaultEventsStream.java b/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/DefaultEventsStream.java
index 4ef537a..d7e4799 100644
--- a/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/DefaultEventsStream.java
+++ b/entitlement/src/main/java/org/killbill/billing/entitlement/engine/core/DefaultEventsStream.java
@@ -73,7 +73,9 @@ public class DefaultEventsStream implements EventsStream {
private BlockingAggregator blockingAggregator;
private List<BlockingState> subscriptionEntitlementStates;
+ private LocalDate entitlementEffectiveStartDate;
private LocalDate entitlementEffectiveEndDate;
+ private BlockingState entitlementStartEvent;
private BlockingState entitlementCancelEvent;
private EntitlementState entitlementState;
@@ -145,6 +147,11 @@ public class DefaultEventsStream implements EventsStream {
}
@Override
+ public LocalDate getEntitlementEffectiveStartDate() {
+ return entitlementEffectiveStartDate;
+ }
+
+ @Override
public boolean isBlockChange() {
return blockingAggregator.isBlockChange();
}
@@ -355,6 +362,7 @@ public class DefaultEventsStream implements EventsStream {
private void setup() {
computeEntitlementBlockingStates();
computeBlockingAggregator();
+ computeEntitlementStartEvent();
computeEntitlementCancelEvent();
computeStateForEntitlement();
}
@@ -392,6 +400,20 @@ public class DefaultEventsStream implements EventsStream {
return ImmutableList.<BlockingState>copyOf(currentBlockingStatePerService.values());
}
+ private void computeEntitlementStartEvent() {
+ entitlementStartEvent = Iterables.<BlockingState>tryFind(subscriptionEntitlementStates,
+ new Predicate<BlockingState>() {
+ @Override
+ public boolean apply(final BlockingState input) {
+ return DefaultEntitlementApi.ENT_STATE_START.equals(input.getStateName());
+ }
+ }).orNull();
+
+ // Note that we still default to subscriptionBase.startDate (for compatibility issue where ENT_STATE_START does not exist)
+ entitlementEffectiveStartDate = entitlementStartEvent != null ?
+ internalTenantContext.toLocalDate(entitlementStartEvent.getEffectiveDate()) :
+ internalTenantContext.toLocalDate(getSubscriptionBase().getStartDate());
+ }
private void computeEntitlementCancelEvent() {
entitlementCancelEvent = Iterables.<BlockingState>tryFind(subscriptionEntitlementStates,
@@ -409,8 +431,7 @@ public class DefaultEventsStream implements EventsStream {
if (entitlementEffectiveEndDate != null && entitlementEffectiveEndDate.compareTo(internalTenantContext.toLocalDate(utcNow)) <= 0) {
entitlementState = EntitlementState.CANCELLED;
} else {
- final LocalDate startDate = new LocalDate(getSubscriptionBase().getStartDate(), account.getTimeZone());
- if (startDate.compareTo(new LocalDate(utcNow, account.getTimeZone())) > 0) {
+ if (entitlementEffectiveStartDate.compareTo(new LocalDate(utcNow, account.getTimeZone())) > 0) {
entitlementState = EntitlementState.PENDING;
} else {
// Gather states across all services and check if one of them is set to 'blockEntitlement'
diff --git a/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestDefaultEntitlementApi.java b/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestDefaultEntitlementApi.java
index 0447fe5..49e2142 100644
--- a/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestDefaultEntitlementApi.java
+++ b/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestDefaultEntitlementApi.java
@@ -302,7 +302,7 @@ public class TestDefaultEntitlementApi extends EntitlementTestSuiteWithEmbeddedD
// Block all entitlement in the bundle
clock.addDays(5);
- testListener.pushExpectedEvents(NextEvent.PAUSE, NextEvent.BLOCK);
+ testListener.pushExpectedEvents(NextEvent.BLOCK);
entitlementApi.pause(baseEntitlement.getBundleId(), new LocalDate(clock.getUTCNow()), ImmutableList.<PluginProperty>of(), callContext);
assertListenerStatus();
@@ -329,13 +329,11 @@ public class TestDefaultEntitlementApi extends EntitlementTestSuiteWithEmbeddedD
clock.addDays(3);
- testListener.pushExpectedEvents(NextEvent.RESUME, NextEvent.BLOCK);
+ testListener.pushExpectedEvents(NextEvent.BLOCK);
entitlementApi.resume(baseEntitlement.getBundleId(), new LocalDate(clock.getUTCNow()), ImmutableList.<PluginProperty>of(), callContext);
assertListenerStatus();
- // Verify call is idempotent : The current semantics is to post the RESUME because we went through the operation, but not the BLOCK because the DAO logic
- // filtered the event as the subscription was already resumed.
- testListener.pushExpectedEvents(NextEvent.RESUME);
+ // Verify call is idempotent
entitlementApi.resume(baseEntitlement.getBundleId(), new LocalDate(clock.getUTCNow()), ImmutableList.<PluginProperty>of(), callContext);
assertListenerStatus();
@@ -382,7 +380,7 @@ public class TestDefaultEntitlementApi extends EntitlementTestSuiteWithEmbeddedD
// No event yet
assertListenerStatus();
- testListener.pushExpectedEvents(NextEvent.PAUSE, NextEvent.BLOCK);
+ testListener.pushExpectedEvents(NextEvent.BLOCK);
clock.setDay(pauseDate);
assertListenerStatus();
@@ -390,7 +388,7 @@ public class TestDefaultEntitlementApi extends EntitlementTestSuiteWithEmbeddedD
final Entitlement baseEntitlementPaused = entitlementApi.getEntitlementForId(baseEntitlement.getId(), callContext);
assertEquals(baseEntitlementPaused.getState(), EntitlementState.BLOCKED);
- testListener.pushExpectedEvents(NextEvent.RESUME, NextEvent.BLOCK);
+ testListener.pushExpectedEvents( NextEvent.BLOCK);
clock.setDay(resumeDate);
assertListenerStatus();
@@ -471,7 +469,7 @@ public class TestDefaultEntitlementApi extends EntitlementTestSuiteWithEmbeddedD
assertTrue(blockingState.isBlockEntitlement());
- // Check unblocking on another service will not bring the sate back to ACTIVE
+ // Check unblocking on another service will not bring the state back to ACTIVE
clock.addDays(1);
testListener.pushExpectedEvents(NextEvent.BLOCK);
entitlementApi.setBlockingState(baseEntitlement.getBundleId(), "UNBLOCK", "bar", null, false, false, false, ImmutableList.<PluginProperty>of(), callContext);
diff --git a/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestDefaultSubscriptionApi.java b/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestDefaultSubscriptionApi.java
index 5339855..a014624 100644
--- a/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestDefaultSubscriptionApi.java
+++ b/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestDefaultSubscriptionApi.java
@@ -223,14 +223,14 @@ public class TestDefaultSubscriptionApi extends EntitlementTestSuiteWithEmbedded
final LocalDate pauseDate = new LocalDate(2013, 9, 17);
entitlementApi.pause(baseEntitlement.getBundleId(), pauseDate, ImmutableList.<PluginProperty>of(), callContext);
- testListener.pushExpectedEvents(NextEvent.PAUSE, NextEvent.BLOCK);
+ testListener.pushExpectedEvents(NextEvent.BLOCK);
clock.setDay(pauseDate);
assertListenerStatus();
final LocalDate resumeDate = new LocalDate(2013, 12, 24);
entitlementApi.resume(baseEntitlement.getBundleId(), resumeDate, ImmutableList.<PluginProperty>of(), callContext);
- testListener.pushExpectedEvents(NextEvent.RESUME, NextEvent.BLOCK);
+ testListener.pushExpectedEvents(NextEvent.BLOCK);
clock.setDay(resumeDate);
assertListenerStatus();
diff --git a/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestEventJson.java b/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestEventJson.java
index 3422f32..dd7b6b8 100644
--- a/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestEventJson.java
+++ b/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestEventJson.java
@@ -31,7 +31,9 @@ public class TestEventJson extends EntitlementTestSuiteNoDB {
@Test(groups = "fast", description = "Test Blocking event deserialization")
public void testDefaultBlockingTransitionInternalEvent() throws Exception {
- final BlockingTransitionInternalEvent e = new DefaultBlockingTransitionInternalEvent(UUID.randomUUID(), BlockingStateType.ACCOUNT, true, false, false, true, 1L, 2L, null);
+ final BlockingTransitionInternalEvent e = new DefaultBlockingTransitionInternalEvent(UUID.randomUUID(), "state", "svc",
+ clock.getUTCNow(), BlockingStateType.ACCOUNT,
+ true, false, false, true, 1L, 2L, null);
final String json = mapper.writeValueAsString(e);
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/InvoiceListener.java b/invoice/src/main/java/org/killbill/billing/invoice/InvoiceListener.java
index ca63e2b..165f849 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/InvoiceListener.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/InvoiceListener.java
@@ -19,23 +19,21 @@ package org.killbill.billing.invoice;
import java.util.UUID;
import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.killbill.billing.account.api.AccountApiException;
import org.killbill.billing.account.api.AccountInternalApi;
-import org.killbill.clock.Clock;
+import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.events.BlockingTransitionInternalEvent;
-import org.killbill.billing.subscription.api.SubscriptionBaseTransitionType;
+import org.killbill.billing.events.EffectiveSubscriptionInternalEvent;
+import org.killbill.billing.events.RepairSubscriptionInternalEvent;
import org.killbill.billing.invoice.api.InvoiceApiException;
+import org.killbill.billing.subscription.api.SubscriptionBaseTransitionType;
import org.killbill.billing.util.callcontext.CallOrigin;
-import org.killbill.billing.callcontext.InternalCallContext;
import org.killbill.billing.util.callcontext.InternalCallContextFactory;
import org.killbill.billing.util.callcontext.UserType;
-import org.killbill.billing.events.EffectiveEntitlementInternalEvent;
-import org.killbill.billing.events.EffectiveSubscriptionInternalEvent;
-import org.killbill.billing.events.RepairSubscriptionInternalEvent;
import org.killbill.billing.util.config.InvoiceConfig;
+import org.killbill.clock.Clock;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.eventbus.AllowConcurrentEvents;
import com.google.common.eventbus.Subscribe;
@@ -94,18 +92,6 @@ public class InvoiceListener {
@AllowConcurrentEvents
@Subscribe
- public void handleEntitlementTransition(final EffectiveEntitlementInternalEvent event) {
-
- try {
- final InternalCallContext context = internalCallContextFactory.createInternalCallContext(event.getSearchKey2(), event.getSearchKey1(), "SubscriptionBaseTransition", CallOrigin.INTERNAL, UserType.SYSTEM, event.getUserToken());
- dispatcher.processAccount(event.getAccountId(), event.getEffectiveTransitionTime(), null, context);
- } catch (InvoiceApiException e) {
- log.error(e.getMessage());
- }
- }
-
- @AllowConcurrentEvents
- @Subscribe
public void handleBlockingStateTransition(final BlockingTransitionInternalEvent event) {
// We are only interested in blockBilling or unblockBilling transitions.
diff --git a/util/src/test/java/org/killbill/billing/api/TestApiListener.java b/util/src/test/java/org/killbill/billing/api/TestApiListener.java
index d710a92..b4aa841 100644
--- a/util/src/test/java/org/killbill/billing/api/TestApiListener.java
+++ b/util/src/test/java/org/killbill/billing/api/TestApiListener.java
@@ -30,7 +30,6 @@ import javax.inject.Inject;
import org.killbill.billing.events.BlockingTransitionInternalEvent;
import org.killbill.billing.events.BroadcastInternalEvent;
import org.killbill.billing.events.CustomFieldEvent;
-import org.killbill.billing.events.EffectiveEntitlementInternalEvent;
import org.killbill.billing.events.EffectiveSubscriptionInternalEvent;
import org.killbill.billing.events.InvoiceAdjustmentInternalEvent;
import org.killbill.billing.events.InvoiceCreationInternalEvent;
@@ -129,7 +128,6 @@ public class TestApiListener {
CUSTOM_FIELD,
}
-
@Subscribe
public void handleBroadcastEvents(final BroadcastInternalEvent event) {
log.info(String.format("Got BroadcastInternalEvent event %s", event.toString()));
@@ -137,7 +135,6 @@ public class TestApiListener {
notifyIfStackEmpty();
}
-
@Subscribe
public void handleRepairSubscriptionEvents(final RepairSubscriptionInternalEvent event) {
log.info(String.format("Got RepairSubscriptionEvent event %s", event.toString()));
@@ -146,21 +143,6 @@ public class TestApiListener {
}
@Subscribe
- public void handleEntitlementEvents(final EffectiveEntitlementInternalEvent eventEffective) {
- log.info(String.format("Got entitlement event %s", eventEffective.toString()));
- switch (eventEffective.getTransitionType()) {
- case BLOCK_BUNDLE:
- assertEqualsNicely(NextEvent.PAUSE);
- notifyIfStackEmpty();
- break;
- case UNBLOCK_BUNDLE:
- assertEqualsNicely(NextEvent.RESUME);
- notifyIfStackEmpty();
- break;
- }
- }
-
- @Subscribe
public void handleEntitlementEvents(final BlockingTransitionInternalEvent event) {
log.info(String.format("Got entitlement event %s", event.toString()));
assertEqualsNicely(NextEvent.BLOCK);