killbill-aplcache
Changes
.idea/libraries/Maven__com_ning_billing_plugin_killbill_plugin_api_notification_0_3_1_SNAPSHOT.xml 8(+4 -4)
.idea/libraries/Maven__com_ning_billing_plugin_killbill_plugin_api_payment_0_3_1_SNAPSHOT.xml 8(+4 -4)
account/killbill-account.iml 4(+2 -2)
api/killbill-internal-api.iml 2(+1 -1)
beatrix/killbill-beatrix.iml 4(+2 -2)
catalog/killbill-catalog.iml 4(+2 -2)
entitlement/killbill-entitlement.iml 4(+2 -2)
entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEffectiveEntitlementEvent.java 90(+90 -0)
invoice/killbill-invoice.iml 4(+2 -2)
jaxrs/killbill-jaxrs.iml 4(+2 -2)
junction/killbill-junction.iml 4(+2 -2)
osgi/killbill-osgi.iml 4(+2 -2)
overdue/killbill-overdue.iml 4(+2 -2)
payment/killbill-payment.iml 4(+2 -2)
server/killbill-server.iml 4(+2 -2)
tenant/killbill-tenant.iml 4(+2 -2)
usage/killbill-usage.iml 4(+2 -2)
util/killbill-util.iml 4(+2 -2)
Details
account/killbill-account.iml 4(+2 -2)
diff --git a/account/killbill-account.iml b/account/killbill-account.iml
index ae75673..38da507 100644
--- a/account/killbill-account.iml
+++ b/account/killbill-account.iml
@@ -23,7 +23,7 @@
<orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -38,7 +38,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
api/killbill-internal-api.iml 2(+1 -1)
diff --git a/api/killbill-internal-api.iml b/api/killbill-internal-api.iml
index 5cba95a..e8866bf 100644
--- a/api/killbill-internal-api.iml
+++ b/api/killbill-internal-api.iml
@@ -13,7 +13,7 @@
<orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.1.0" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.0.1" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
diff --git a/api/src/main/java/com/ning/billing/entitlement/EntitlementTransitionType.java b/api/src/main/java/com/ning/billing/entitlement/EntitlementTransitionType.java
new file mode 100644
index 0000000..cd69f11
--- /dev/null
+++ b/api/src/main/java/com/ning/billing/entitlement/EntitlementTransitionType.java
@@ -0,0 +1,6 @@
+package com.ning.billing.entitlement;
+
+public enum EntitlementTransitionType {
+ BLOCK_BUNDLE,
+ UNBLOCK_BUNDLE
+}
beatrix/killbill-beatrix.iml 4(+2 -2)
diff --git a/beatrix/killbill-beatrix.iml b/beatrix/killbill-beatrix.iml
index c296529..a1331a9 100644
--- a/beatrix/killbill-beatrix.iml
+++ b/beatrix/killbill-beatrix.iml
@@ -32,7 +32,7 @@
<orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="module" module-name="killbill-util" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.1.0" level="project" />
@@ -45,7 +45,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
diff --git a/beatrix/src/main/java/com/ning/billing/beatrix/extbus/BeatrixListener.java b/beatrix/src/main/java/com/ning/billing/beatrix/extbus/BeatrixListener.java
index 9a6e554..bc44b9f 100644
--- a/beatrix/src/main/java/com/ning/billing/beatrix/extbus/BeatrixListener.java
+++ b/beatrix/src/main/java/com/ning/billing/beatrix/extbus/BeatrixListener.java
@@ -31,6 +31,7 @@ import com.ning.billing.beatrix.glue.BeatrixModule;
import com.ning.billing.bus.api.BusEvent;
import com.ning.billing.bus.api.PersistentBus;
import com.ning.billing.bus.api.PersistentBus.EventBusException;
+import com.ning.billing.entitlement.EntitlementTransitionType;
import com.ning.billing.subscription.api.SubscriptionBaseTransitionType;
import com.ning.billing.notification.plugin.api.ExtBusEventType;
import com.ning.billing.util.callcontext.CallOrigin;
@@ -45,6 +46,7 @@ import com.ning.billing.util.events.ControlTagCreationInternalEvent;
import com.ning.billing.util.events.ControlTagDeletionInternalEvent;
import com.ning.billing.util.events.CustomFieldCreationEvent;
import com.ning.billing.util.events.CustomFieldDeletionEvent;
+import com.ning.billing.util.events.EntitlementInternalEvent;
import com.ning.billing.util.events.InvoiceAdjustmentInternalEvent;
import com.ning.billing.util.events.InvoiceCreationInternalEvent;
import com.ning.billing.util.events.OverdueChangeInternalEvent;
@@ -143,6 +145,17 @@ public class
}
break;
+ case ENTITLEMENT_TRANSITION:
+ EntitlementInternalEvent realEventET = (EntitlementInternalEvent) event;
+ objectType = ObjectType.BUNDLE;
+ objectId = realEventET.getBundleId();
+ if (realEventET.getTransitionType() == EntitlementTransitionType.BLOCK_BUNDLE) {
+ eventBusType = ExtBusEventType.BUNDLE_PAUSE;
+ } else if (realEventET.getTransitionType() == EntitlementTransitionType.UNBLOCK_BUNDLE) {
+ eventBusType = ExtBusEventType.BUNDLE_RESUME;
+ }
+ break;
+
case INVOICE_CREATION:
InvoiceCreationInternalEvent realEventInv = (InvoiceCreationInternalEvent) event;
objectType = ObjectType.INVOICE;
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
index 00600e3..c93235b 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
@@ -23,6 +23,7 @@ import java.util.UUID;
import org.joda.time.DateTime;
import org.joda.time.Interval;
import org.joda.time.LocalDate;
+import org.testng.Assert;
import org.testng.annotations.Test;
import com.ning.billing.account.api.Account;
@@ -35,6 +36,7 @@ import com.ning.billing.catalog.api.Currency;
import com.ning.billing.catalog.api.PriceListSet;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.entitlement.api.DefaultEntitlement;
+import com.ning.billing.entitlement.api.Entitlement.EntitlementState;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceItemType;
import com.ning.billing.payment.api.PaymentStatus;
@@ -191,7 +193,7 @@ public class TestIntegration extends TestIntegrationBase {
//
// CHANGE PLAN IMMEDIATELY AND EXPECT BOTH EVENTS: NextEvent.CHANGE NextEvent.INVOICE
//
- changeEntitlementAndCheckForCompletion(baseEntitlement, "Assault-Rifle", BillingPeriod.MONTHLY, null , NextEvent.CHANGE, NextEvent.INVOICE);
+ changeEntitlementAndCheckForCompletion(baseEntitlement, "Assault-Rifle", BillingPeriod.MONTHLY, null, NextEvent.CHANGE, NextEvent.INVOICE);
invoiceChecker.checkInvoice(account.getId(), invoiceItemCount++, callContext, new ExpectedInvoiceItemCheck(initialCreationDate.toLocalDate(), null, InvoiceItemType.FIXED, new BigDecimal("0")));
invoiceChecker.checkChargedThroughDate(subscription.getId(), clock.getUTCToday(), callContext);
@@ -450,7 +452,7 @@ public class TestIntegration extends TestIntegrationBase {
@Test(groups = "slow")
- public void testWithRecreatePlan() throws Exception {
+ public void testWithPauseResume() throws Exception {
final DateTime initialDate = new DateTime(2012, 2, 1, 0, 3, 42, 0, testTimeZone);
final int billingDay = 2;
@@ -475,11 +477,11 @@ public class TestIntegration extends TestIntegrationBase {
//
// VERIFY CTD HAS BEEN SET
//
+ busHandler.reset();
DefaultSubscriptionBase subscription = (DefaultSubscriptionBase) baseEntitlement.getSubscriptionBase();
final DateTime startDate = subscription.getCurrentPhaseStart();
final BigDecimal rate = subscription.getCurrentPhase().getFixedPrice().getPrice(Currency.USD);
- final int invoiceItemCount = 1;
- verifyTestResult(accountId, subscription.getId(), startDate, null, rate, clock.getUTCNow(), invoiceItemCount);
+ verifyTestResult(accountId, subscription.getId(), startDate, null, rate, clock.getUTCNow(), 1);
//
// MOVE TIME TO AFTER TRIAL AND EXPECT BOTH EVENTS : NextEvent.PHASE NextEvent.INVOICE
@@ -490,31 +492,37 @@ public class TestIntegration extends TestIntegrationBase {
clock.addDeltaFromReality(AT_LEAST_ONE_MONTH_MS);
assertTrue(busHandler.isCompleted(DELAY));
- DefaultEntitlement entitlement = (DefaultEntitlement) entitlementApi.getEntitlementForId(baseEntitlement.getId(), callContext);
- entitlement.cancelEntitlementWithDate(clock.getUTCNow().toLocalDate(), callContext);
- subscription = (DefaultSubscriptionBase) baseEntitlement.getSubscriptionBase();
+ invoiceChecker.checkInvoice(account.getId(), 2, callContext, new ExpectedInvoiceItemCheck(new LocalDate(2012, 3, 2), new LocalDate(2012, 4, 2), InvoiceItemType.RECURRING, new BigDecimal("249.95")));
- // MOVE AFTER CANCEL DATE AND EXPECT EVENT : NextEvent.CANCEL
- busHandler.pushExpectedEvent(NextEvent.CANCEL);
- DateTime endDate = subscription.getChargedThroughDate();
- final Interval it = new Interval(clock.getUTCNow(), endDate);
- clock.addDeltaFromReality(it.toDurationMillis());
+ // PAUSE THE ENTITLEMENT
+ DefaultEntitlement entitlement = (DefaultEntitlement) entitlementApi.getEntitlementForId(baseEntitlement.getId(), callContext);
+ busHandler.pushExpectedEvent(NextEvent.PAUSE);
+ busHandler.pushExpectedEvent(NextEvent.INVOICE_ADJUSTMENT);
+ entitlementApi.pause(entitlement.getBundleId(), clock.getUTCNow().toLocalDate(), callContext);
assertTrue(busHandler.isCompleted(DELAY));
- productName = "Assault-Rifle";
- term = BillingPeriod.MONTHLY;
- planSetName = PriceListSet.DEFAULT_PRICELIST_NAME;
+ invoiceChecker.checkInvoice(account.getId(), 2, callContext,
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 3, 2), new LocalDate(2012, 4, 2), InvoiceItemType.RECURRING, new BigDecimal("249.95")),
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 3, 4), new LocalDate(2012, 4, 2), InvoiceItemType.REPAIR_ADJ, new BigDecimal("-233.83")),
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 3, 4), new LocalDate(2012, 3, 4), InvoiceItemType.CBA_ADJ, new BigDecimal("233.83")));
+
+
+ entitlement = (DefaultEntitlement) entitlementApi.getEntitlementForId(baseEntitlement.getId(), callContext);
+ Assert.assertEquals(entitlement.getState(), EntitlementState.BLOCKED);
- // STEPH_ENT we should use new API pause/resume billing
- /*
- busHandler.pushExpectedEvent(NextEvent.RE_CREATE);
+ // MOVE CLOCK FORWARD ADN CHECK THERE IS NO NEW INVOICE
+ clock.addDeltaFromReality(AT_LEAST_ONE_MONTH_MS);
+
+ busHandler.pushExpectedEvent(NextEvent.RESUME);
busHandler.pushExpectedEvent(NextEvent.INVOICE);
- busHandler.pushExpectedEvent(NextEvent.PAYMENT);
- subscription.recreate(new PlanPhaseSpecifier(productName, ProductCategory.BASE, term, planSetName, null), endDate, callContext);
+ entitlementApi.resume(entitlement.getBundleId(), clock.getUTCNow().toLocalDate(), callContext);
assertTrue(busHandler.isCompleted(DELAY));
- assertListenerStatus();
- */
+
+ invoiceChecker.checkInvoice(account.getId(), 3, callContext,
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 4, 5), new LocalDate(2012, 5, 2), InvoiceItemType.RECURRING, new BigDecimal("224.96")),
+ new ExpectedInvoiceItemCheck(new LocalDate(2012, 4, 5), new LocalDate(2012, 4, 5), InvoiceItemType.CBA_ADJ, new BigDecimal("-224.96")));
+
}
@Test(groups = "slow")
catalog/killbill-catalog.iml 4(+2 -2)
diff --git a/catalog/killbill-catalog.iml b/catalog/killbill-catalog.iml
index 791ac91..71e5645 100644
--- a/catalog/killbill-catalog.iml
+++ b/catalog/killbill-catalog.iml
@@ -21,7 +21,7 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.1.0" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -39,7 +39,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
entitlement/killbill-entitlement.iml 4(+2 -2)
diff --git a/entitlement/killbill-entitlement.iml b/entitlement/killbill-entitlement.iml
index f6d9154..6c97505 100644
--- a/entitlement/killbill-entitlement.iml
+++ b/entitlement/killbill-entitlement.iml
@@ -30,7 +30,7 @@
<orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -45,7 +45,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEffectiveEntitlementEvent.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEffectiveEntitlementEvent.java
new file mode 100644
index 0000000..5bd5f01
--- /dev/null
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEffectiveEntitlementEvent.java
@@ -0,0 +1,90 @@
+package com.ning.billing.entitlement.api;
+
+import java.util.UUID;
+
+import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
+
+import com.ning.billing.entitlement.EntitlementTransitionType;
+import com.ning.billing.util.events.BusEventBase;
+import com.ning.billing.util.events.EffectiveEntitlementInternalEvent;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class DefaultEffectiveEntitlementEvent extends BusEventBase implements EffectiveEntitlementInternalEvent {
+
+ private final UUID id;
+ private final UUID entitlementId;
+ private final UUID bundleId;
+ private final UUID accountId;
+ private final EntitlementTransitionType transitionType;
+ private final DateTime effectiveTransitionTime;
+ private final DateTime requestedTransitionTime;
+
+
+ @JsonCreator
+ public DefaultEffectiveEntitlementEvent(@JsonProperty("eventId") final UUID id,
+ @JsonProperty("entitlementId") final UUID entitlementId,
+ @JsonProperty("bundleId") final UUID bundleId,
+ @JsonProperty("accountId") final UUID accountId,
+ @JsonProperty("transitionType") final EntitlementTransitionType transitionType,
+ @JsonProperty("effectiveTransitionTime") final DateTime effectiveTransitionTime,
+ @JsonProperty("requestedTransitionTime") final DateTime requestedTransitionTime,
+ @JsonProperty("searchKey1") final Long searchKey1,
+ @JsonProperty("searchKey2") final Long searchKey2,
+ @JsonProperty("userToken") final UUID userToken) {
+
+ super(searchKey1, searchKey2, userToken);
+ this.id = id;
+ this.entitlementId = entitlementId;
+ this.bundleId = bundleId;
+ this.accountId = accountId;
+ this.transitionType = transitionType;
+ this.effectiveTransitionTime = effectiveTransitionTime;
+ this.requestedTransitionTime = requestedTransitionTime;
+ }
+
+ @JsonProperty("eventId")
+ @Override
+ public UUID getId() {
+ return id;
+ }
+
+ @Override
+ public UUID getBundleId() {
+ return bundleId;
+ }
+
+ @Override
+ public UUID getEntitlementId() {
+ return entitlementId;
+ }
+
+ @Override
+ public UUID getAccountId() {
+ return accountId;
+ }
+
+ @Override
+ public EntitlementTransitionType getTransitionType() {
+ return transitionType;
+ }
+
+ @Override
+ public DateTime getRequestedTransitionTime() {
+ return requestedTransitionTime;
+ }
+
+ @Override
+ public DateTime getEffectiveTransitionTime() {
+ return effectiveTransitionTime;
+ }
+
+ @JsonIgnore
+ @Override
+ public BusInternalEventType getBusEventType() {
+ return BusInternalEventType.ENTITLEMENT_TRANSITION;
+ }
+}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java
index fea99ca..f9d0366 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultEntitlementApi.java
@@ -33,11 +33,14 @@ import com.ning.billing.ErrorCode;
import com.ning.billing.ObjectType;
import com.ning.billing.account.api.Account;
import com.ning.billing.account.api.AccountApiException;
+import com.ning.billing.bus.api.PersistentBus;
+import com.ning.billing.bus.api.PersistentBus.EventBusException;
import com.ning.billing.catalog.api.BillingActionPolicy;
import com.ning.billing.catalog.api.PlanPhaseSpecifier;
import com.ning.billing.catalog.api.ProductCategory;
import com.ning.billing.clock.Clock;
import com.ning.billing.entitlement.EntitlementService;
+import com.ning.billing.entitlement.EntitlementTransitionType;
import com.ning.billing.entitlement.api.Entitlement.EntitlementState;
import com.ning.billing.entitlement.block.BlockingChecker;
import com.ning.billing.entitlement.block.BlockingChecker.BlockingAggregator;
@@ -73,9 +76,11 @@ public class DefaultEntitlementApi implements EntitlementApi {
private final BlockingChecker checker;
private final BlockingStateDao blockingStateDao;
private final EntitlementDateHelper dateHelper;
+ private final PersistentBus eventBus;
@Inject
- public DefaultEntitlementApi(final InternalCallContextFactory internalCallContextFactory, final SubscriptionBaseInternalApi subscriptionInternalApi, final AccountInternalApi accountApi, final BlockingStateDao blockingStateDao, final Clock clock, final BlockingChecker checker) {
+ public DefaultEntitlementApi(PersistentBus eventBus, final InternalCallContextFactory internalCallContextFactory, final SubscriptionBaseInternalApi subscriptionInternalApi, final AccountInternalApi accountApi, final BlockingStateDao blockingStateDao, final Clock clock, final BlockingChecker checker) {
+ this.eventBus = eventBus;
this.internalCallContextFactory = internalCallContextFactory;
this.subscriptionInternalApi = subscriptionInternalApi;
this.accountApi = accountApi;
@@ -114,7 +119,7 @@ public class DefaultEntitlementApi implements EntitlementApi {
final InternalCallContext contextWithValidAccountRecordId = internalCallContextFactory.createInternalCallContext(bundle.getAccountId(), callContext);
- final BlockingState currentBaseState = blockingStateDao.getBlockingStateForService(baseSubscription.getId(), EntitlementService.ENTITLEMENT_SERVICE_NAME, contextWithValidAccountRecordId);
+ final BlockingState currentBaseState = blockingStateDao.getBlockingStateForService(baseSubscription.getId(), EntitlementService.ENTITLEMENT_SERVICE_NAME, contextWithValidAccountRecordId);
final Account account = accountApi.getAccountById(bundle.getAccountId(), context);
@@ -151,7 +156,7 @@ public class DefaultEntitlementApi implements EntitlementApi {
final InternalTenantContext internalContext = internalCallContextFactory.createInternalTenantContext(context);
try {
final SubscriptionBaseBundle bundle = subscriptionInternalApi.getBundleFromId(bundleId, internalContext);
- final SubscriptionBase baseSubscription = subscriptionInternalApi.getBaseSubscription(bundleId, internalContext);
+ final SubscriptionBase baseSubscription = subscriptionInternalApi.getBaseSubscription(bundleId, internalContext);
final InternalTenantContext contextWithValidAccountRecordId = internalCallContextFactory.createInternalTenantContext(bundle.getAccountId(), context);
final DateTime requestedDate = dateHelper.fromLocalDateAndReferenceTime(effectiveDate, baseSubscription.getStartDate(), contextWithValidAccountRecordId);
@@ -169,7 +174,7 @@ public class DefaultEntitlementApi implements EntitlementApi {
final SubscriptionBaseBundle bundle = subscriptionInternalApi.getBundleFromId(subscription.getBundleId(), context);
final Account account = accountApi.getAccountById(bundle.getAccountId(), context);
- final BlockingState currentState = blockingStateDao.getBlockingStateForService(subscription.getId(), EntitlementService.ENTITLEMENT_SERVICE_NAME, context);
+ final BlockingState currentState = blockingStateDao.getBlockingStateForService(subscription.getId(), EntitlementService.ENTITLEMENT_SERVICE_NAME, context);
return new DefaultEntitlement(dateHelper, subscription, bundle.getAccountId(), bundle.getExternalKey(), getStateForEntitlement(subscription, currentState, account.getTimeZone(), context), currentState, account.getTimeZone(),
this, internalCallContextFactory, blockingStateDao, clock, checker);
@@ -226,7 +231,7 @@ public class DefaultEntitlementApi implements EntitlementApi {
@Override
public Entitlement apply(@Nullable final SubscriptionBase input) {
- final BlockingState currentState = blockingStateDao.getBlockingStateForService(input.getId(), EntitlementService.ENTITLEMENT_SERVICE_NAME, context);
+ final BlockingState currentState = blockingStateDao.getBlockingStateForService(input.getId(), EntitlementService.ENTITLEMENT_SERVICE_NAME, context);
return new DefaultEntitlement(dateHelper, input, accountId, externalKey,
getStateForEntitlement(input, currentState, account.getTimeZone(), context),
@@ -247,7 +252,7 @@ public class DefaultEntitlementApi implements EntitlementApi {
// Current state for the ENTITLEMENT_SERVICE_NAME is set to cancelled
if (currentState != null &&
currentState.getStateName().equals(ENT_STATE_CANCELLED) &&
- dateHelper.isBeforeOrEqualsToday(currentState.getEffectiveDate(), accountTimeZone)) {
+ dateHelper.isBeforeOrEqualsToday(currentState.getEffectiveDate(), accountTimeZone)) {
return EntitlementState.CANCELLED;
}
@@ -257,7 +262,7 @@ public class DefaultEntitlementApi implements EntitlementApi {
return blocking != null && blocking.isBlockEntitlement() ? EntitlementState.BLOCKED : EntitlementState.ACTIVE;
} catch (BlockingApiException e) {
log.warn("Failed to extract blocking state for subscription " + subscriptionBase.getId().toString());
- return null;
+ return null;
}
}
@@ -266,17 +271,41 @@ public class DefaultEntitlementApi implements EntitlementApi {
public void pause(final UUID bundleId, final LocalDate localEffectiveDate, final CallContext context) throws EntitlementApiException {
try {
final InternalCallContext contextWithValidAccountRecordId = internalCallContextFactory.createInternalCallContext(bundleId, ObjectType.BUNDLE, context);
- final BlockingState currentState = blockingStateDao.getBlockingStateForService(bundleId, EntitlementService.ENTITLEMENT_SERVICE_NAME, contextWithValidAccountRecordId);
+ final BlockingState currentState = blockingStateDao.getBlockingStateForService(bundleId, EntitlementService.ENTITLEMENT_SERVICE_NAME, contextWithValidAccountRecordId);
if (currentState != null && currentState.getStateName().equals(ENT_STATE_BLOCKED)) {
throw new EntitlementApiException(ErrorCode.ENT_ALREADY_BLOCKED, bundleId);
}
+
+ final SubscriptionBaseBundle bundle = subscriptionInternalApi.getBundleFromId(bundleId, contextWithValidAccountRecordId);
+ final Account account = accountApi.getAccountById(bundle.getAccountId(), contextWithValidAccountRecordId);
final SubscriptionBase baseSubscription = subscriptionInternalApi.getBaseSubscription(bundleId, contextWithValidAccountRecordId);
final DateTime effectiveDate = dateHelper.fromLocalDateAndReferenceTime(localEffectiveDate, baseSubscription.getStartDate(), contextWithValidAccountRecordId);
- blockingStateDao.setBlockingState(new DefaultBlockingState(bundleId, BlockingStateType.BUNDLE, ENT_STATE_BLOCKED, EntitlementService.ENTITLEMENT_SERVICE_NAME, true, true, true, effectiveDate), clock, contextWithValidAccountRecordId);
+ // STEPH TODO implement ability to pause in the future
+ if (!dateHelper.isBeforeOrEqualsToday(effectiveDate, account.getTimeZone())) {
+ throw new UnsupportedOperationException("Pausing with a future date has not been implemented yet");
+ }
+
+ final DefaultBlockingState state = new DefaultBlockingState(bundleId, BlockingStateType.BUNDLE, ENT_STATE_BLOCKED, EntitlementService.ENTITLEMENT_SERVICE_NAME, true, true, true, effectiveDate);
+ blockingStateDao.setBlockingState(state, clock, contextWithValidAccountRecordId);
+
+ // 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(state.getId(), baseSubscription.getId(), bundleId, bundle.getAccountId(), EntitlementTransitionType.BLOCK_BUNDLE,
+ effectiveDate, clock.getUTCNow(),
+ contextWithValidAccountRecordId.getAccountRecordId(), contextWithValidAccountRecordId.getTenantRecordId(),
+ contextWithValidAccountRecordId.getUserToken());
+
+ try {
+ eventBus.post(event);
+ } catch (EventBusException e) {
+ log.warn("Failed to post bus event for pause operation on bundle " + bundleId);
+ }
} catch (SubscriptionBaseApiException e) {
throw new EntitlementApiException(e);
+ } catch (AccountApiException e) {
+ throw new EntitlementApiException(e);
}
}
@@ -284,30 +313,43 @@ public class DefaultEntitlementApi implements EntitlementApi {
public void resume(final UUID bundleId, final LocalDate localEffectiveDate, final CallContext context) throws EntitlementApiException {
try {
final InternalCallContext contextWithValidAccountRecordId = internalCallContextFactory.createInternalCallContext(bundleId, ObjectType.BUNDLE, context);
- final BlockingState currentState = blockingStateDao.getBlockingStateForService(bundleId, EntitlementService.ENTITLEMENT_SERVICE_NAME, contextWithValidAccountRecordId);
+ final BlockingState currentState = blockingStateDao.getBlockingStateForService(bundleId, EntitlementService.ENTITLEMENT_SERVICE_NAME, contextWithValidAccountRecordId);
if (currentState == null || currentState.getStateName().equals(ENT_STATE_CLEAR)) {
// Nothing to do.
return;
}
+ final SubscriptionBaseBundle bundle = subscriptionInternalApi.getBundleFromId(bundleId, contextWithValidAccountRecordId);
+ final Account account = accountApi.getAccountById(bundle.getAccountId(), contextWithValidAccountRecordId);
final SubscriptionBase baseSubscription = subscriptionInternalApi.getBaseSubscription(bundleId, contextWithValidAccountRecordId);
final DateTime effectiveDate = dateHelper.fromLocalDateAndReferenceTime(localEffectiveDate, baseSubscription.getStartDate(), contextWithValidAccountRecordId);
- blockingStateDao.setBlockingState(new DefaultBlockingState(bundleId, BlockingStateType.BUNDLE, ENT_STATE_CLEAR, EntitlementService.ENTITLEMENT_SERVICE_NAME, false, false, false, effectiveDate), clock, contextWithValidAccountRecordId);
+ // STEPH TODO implement ability to pause in the future
+ if (!dateHelper.isBeforeOrEqualsToday(effectiveDate, account.getTimeZone())) {
+ throw new UnsupportedOperationException("Resuming with a future date has not been implemented yet");
+ }
- } catch (SubscriptionBaseApiException e) {
- throw new EntitlementApiException(e);
- }
- }
+ final DefaultBlockingState state = new DefaultBlockingState(bundleId, BlockingStateType.BUNDLE, ENT_STATE_CLEAR, EntitlementService.ENTITLEMENT_SERVICE_NAME, false, false, false, effectiveDate);
+ blockingStateDao.setBlockingState(state, clock, contextWithValidAccountRecordId);
- @Override
- public void block(final UUID bundleId, final String serviceName, final LocalDate effectiveDate, final boolean blockBilling, final boolean blockEntitlement, final boolean blockChange, final CallContext context) throws EntitlementApiException {
- final InternalCallContext contextWithValidAccountRecordId = internalCallContextFactory.createInternalCallContext(bundleId, ObjectType.BUNDLE, context);
+ // 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(state.getId(), baseSubscription.getId(), bundleId, bundle.getAccountId(), EntitlementTransitionType.UNBLOCK_BUNDLE,
+ effectiveDate, clock.getUTCNow(),
+ contextWithValidAccountRecordId.getAccountRecordId(), contextWithValidAccountRecordId.getTenantRecordId(),
+ contextWithValidAccountRecordId.getUserToken());
- }
+ try {
+ eventBus.post(event);
+ } catch (EventBusException e) {
+ log.warn("Failed to post bus event for resume operation on bundle " + bundleId);
+ }
- @Override
- public void unblock(final UUID bundleId, final String serviceName, final LocalDate effectiveDate, final CallContext context) throws EntitlementApiException {
+ } catch (SubscriptionBaseApiException e) {
+ throw new EntitlementApiException(e);
+ } catch (AccountApiException e) {
+ throw new EntitlementApiException(e);
+ }
}
@@ -322,5 +364,4 @@ public class DefaultEntitlementApi implements EntitlementApi {
}
-
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/dao/BlockingStateDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/dao/BlockingStateDao.java
index 58bee54..37468a7 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/dao/BlockingStateDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/dao/BlockingStateDao.java
@@ -75,11 +75,11 @@ public interface BlockingStateDao {
public List<BlockingState> getBlockingAll(UUID blockableId, InternalTenantContext context);
/**
- * Sets a new state for a specific service
+ * Sets a new state for a specific service.
*
* @param state
* @param clock
* @param context
*/
- void setBlockingState(BlockingState state, Clock clock, InternalCallContext context);
+ public void setBlockingState(BlockingState state, Clock clock, InternalCallContext context);
}
invoice/killbill-invoice.iml 4(+2 -2)
diff --git a/invoice/killbill-invoice.iml b/invoice/killbill-invoice.iml
index 01944d4..6290738 100644
--- a/invoice/killbill-invoice.iml
+++ b/invoice/killbill-invoice.iml
@@ -28,7 +28,7 @@
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-catalog" scope="TEST" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -45,7 +45,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
diff --git a/invoice/src/main/java/com/ning/billing/invoice/InvoiceListener.java b/invoice/src/main/java/com/ning/billing/invoice/InvoiceListener.java
index bd7d9c3..971e625 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/InvoiceListener.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/InvoiceListener.java
@@ -28,6 +28,7 @@ import com.ning.billing.util.callcontext.CallOrigin;
import com.ning.billing.util.callcontext.InternalCallContext;
import com.ning.billing.util.callcontext.InternalCallContextFactory;
import com.ning.billing.util.callcontext.UserType;
+import com.ning.billing.util.events.EffectiveEntitlementInternalEvent;
import com.ning.billing.util.events.EffectiveSubscriptionInternalEvent;
import com.ning.billing.util.events.RepairSubscriptionInternalEvent;
@@ -75,6 +76,17 @@ public class InvoiceListener {
}
}
+ @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(), false, context);
+ } catch (InvoiceApiException e) {
+ log.error(e.getMessage());
+ }
+ }
+
public void handleNextBillingDateEvent(final UUID subscriptionId, final DateTime eventDateTime, final UUID userToken, final Long accountRecordId, final Long tenantRecordId) {
try {
final InternalCallContext context = internalCallContextFactory.createInternalCallContext(tenantRecordId, accountRecordId, "Next Billing Date", CallOrigin.INTERNAL, UserType.SYSTEM, userToken);
jaxrs/killbill-jaxrs.iml 4(+2 -2)
diff --git a/jaxrs/killbill-jaxrs.iml b/jaxrs/killbill-jaxrs.iml
index 3891ad4..89a28ef 100644
--- a/jaxrs/killbill-jaxrs.iml
+++ b/jaxrs/killbill-jaxrs.iml
@@ -29,7 +29,7 @@
<orderEntry type="library" name="Maven: com.mchange:c3p0:0.9.2" level="project" />
<orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.3.3" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: com.ning.billing.commons:killbill-clock:0.1.7" level="project" />
<orderEntry type="library" name="Maven: com.ning.billing.commons:killbill-queue:0.1.7" level="project" />
@@ -38,7 +38,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
junction/killbill-junction.iml 4(+2 -2)
diff --git a/junction/killbill-junction.iml b/junction/killbill-junction.iml
index a6a87bb..85454cf 100644
--- a/junction/killbill-junction.iml
+++ b/junction/killbill-junction.iml
@@ -24,7 +24,7 @@
<orderEntry type="module" module-name="killbill-catalog" scope="TEST" production-on-test="" />
<orderEntry type="library" scope="TEST" name="Maven: com.ning.billing:killbill-catalog:test-jar:tests:0.3.6-SNAPSHOT" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -41,7 +41,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
osgi/killbill-osgi.iml 4(+2 -2)
diff --git a/osgi/killbill-osgi.iml b/osgi/killbill-osgi.iml
index e0c8736..1db52ef 100644
--- a/osgi/killbill-osgi.iml
+++ b/osgi/killbill-osgi.iml
@@ -24,7 +24,7 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.1.0" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-osgi-bundles-lib-killbill" />
@@ -46,7 +46,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
diff --git a/osgi-bundles/bundles/jruby/killbill-osgi-bundles-jruby.iml b/osgi-bundles/bundles/jruby/killbill-osgi-bundles-jruby.iml
index 82f2b79..516cb6d 100644
--- a/osgi-bundles/bundles/jruby/killbill-osgi-bundles-jruby.iml
+++ b/osgi-bundles/bundles/jruby/killbill-osgi-bundles-jruby.iml
@@ -13,8 +13,8 @@
<orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.1.0" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="module" module-name="killbill-osgi-bundles-lib-killbill" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
<orderEntry type="library" name="Maven: org.osgi:org.osgi.compendium:4.3.1" level="project" />
diff --git a/osgi-bundles/defaultbundles/killbill-osgi-bundles-defaultbundles.iml b/osgi-bundles/defaultbundles/killbill-osgi-bundles-defaultbundles.iml
index e2399bf..0912444 100644
--- a/osgi-bundles/defaultbundles/killbill-osgi-bundles-defaultbundles.iml
+++ b/osgi-bundles/defaultbundles/killbill-osgi-bundles-defaultbundles.iml
@@ -14,8 +14,8 @@
<orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.1.0" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="module" module-name="killbill-osgi-bundles-lib-killbill" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
<orderEntry type="library" name="Maven: org.osgi:org.osgi.compendium:4.3.1" level="project" />
diff --git a/osgi-bundles/libs/killbill/killbill-osgi-bundles-lib-killbill.iml b/osgi-bundles/libs/killbill/killbill-osgi-bundles-lib-killbill.iml
index 66797cd..37ec4d4 100644
--- a/osgi-bundles/libs/killbill/killbill-osgi-bundles-lib-killbill.iml
+++ b/osgi-bundles/libs/killbill/killbill-osgi-bundles-lib-killbill.iml
@@ -16,7 +16,7 @@
<orderEntry type="library" scope="PROVIDED" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: joda-time:joda-time:2.0" level="project" />
- <orderEntry type="library" scope="PROVIDED" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" scope="PROVIDED" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.0.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-all:1.9.0" level="project" />
<orderEntry type="library" name="Maven: org.osgi:org.osgi.compendium:4.3.1" level="project" />
diff --git a/osgi-bundles/tests/beatrix/killbill-osgi-bundles-test-beatrix.iml b/osgi-bundles/tests/beatrix/killbill-osgi-bundles-test-beatrix.iml
index 2efd2ba..1e18463 100644
--- a/osgi-bundles/tests/beatrix/killbill-osgi-bundles-test-beatrix.iml
+++ b/osgi-bundles/tests/beatrix/killbill-osgi-bundles-test-beatrix.iml
@@ -19,8 +19,8 @@
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
<orderEntry type="library" name="Maven: org.osgi:org.osgi.compendium:4.3.1" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:osgi-over-slf4j:1.7.5" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-all:1.9.0" level="project" />
<orderEntry type="library" name="Maven: org.osgi:org.osgi.core:4.3.1" level="project" />
diff --git a/osgi-bundles/tests/payment/killbill-osgi-bundles-test-payment.iml b/osgi-bundles/tests/payment/killbill-osgi-bundles-test-payment.iml
index ed68635..e636e87 100644
--- a/osgi-bundles/tests/payment/killbill-osgi-bundles-test-payment.iml
+++ b/osgi-bundles/tests/payment/killbill-osgi-bundles-test-payment.iml
@@ -29,7 +29,7 @@
<orderEntry type="library" name="Maven: com.mchange:c3p0:0.9.2" level="project" />
<orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.3.3" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: com.ning.billing.commons:killbill-clock:0.1.7" level="project" />
<orderEntry type="library" name="Maven: com.ning.billing.commons:killbill-queue:0.1.7" level="project" />
@@ -38,7 +38,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
overdue/killbill-overdue.iml 4(+2 -2)
diff --git a/overdue/killbill-overdue.iml b/overdue/killbill-overdue.iml
index a05d8c5..9388421 100644
--- a/overdue/killbill-overdue.iml
+++ b/overdue/killbill-overdue.iml
@@ -28,7 +28,7 @@
<orderEntry type="module" module-name="killbill-catalog" scope="TEST" production-on-test="" />
<orderEntry type="library" scope="TEST" name="Maven: com.ning.billing:killbill-catalog:test-jar:tests:0.3.6-SNAPSHOT" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -45,7 +45,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
payment/killbill-payment.iml 4(+2 -2)
diff --git a/payment/killbill-payment.iml b/payment/killbill-payment.iml
index d0831dc..d8fcd04 100644
--- a/payment/killbill-payment.iml
+++ b/payment/killbill-payment.iml
@@ -32,7 +32,7 @@
<orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -47,7 +47,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
server/killbill-server.iml 4(+2 -2)
diff --git a/server/killbill-server.iml b/server/killbill-server.iml
index 81dfb17..57c99eb 100644
--- a/server/killbill-server.iml
+++ b/server/killbill-server.iml
@@ -31,7 +31,7 @@
<orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="module" module-name="killbill-util" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.1.0" level="project" />
@@ -45,7 +45,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
diff --git a/subscription/killbill-subscription.iml b/subscription/killbill-subscription.iml
index 1dee000..3208953 100644
--- a/subscription/killbill-subscription.iml
+++ b/subscription/killbill-subscription.iml
@@ -29,7 +29,7 @@
<orderEntry type="module" module-name="killbill-catalog" scope="TEST" production-on-test="" />
<orderEntry type="library" scope="TEST" name="Maven: com.ning.billing:killbill-catalog:test-jar:tests:0.3.6-SNAPSHOT" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -46,7 +46,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
tenant/killbill-tenant.iml 4(+2 -2)
diff --git a/tenant/killbill-tenant.iml b/tenant/killbill-tenant.iml
index 53cd6d8..342033b 100644
--- a/tenant/killbill-tenant.iml
+++ b/tenant/killbill-tenant.iml
@@ -21,7 +21,7 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.1.0" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -38,7 +38,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
usage/killbill-usage.iml 4(+2 -2)
diff --git a/usage/killbill-usage.iml b/usage/killbill-usage.iml
index 3d33b47..866d349 100644
--- a/usage/killbill-usage.iml
+++ b/usage/killbill-usage.iml
@@ -20,7 +20,7 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.1.0" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.0" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.5" level="project" />
<orderEntry type="module" module-name="killbill-util" />
@@ -37,7 +37,7 @@
<orderEntry type="library" name="Maven: org.jdbi:jdbi:2.39.1" level="project" />
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.6.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
util/killbill-util.iml 4(+2 -2)
diff --git a/util/killbill-util.iml b/util/killbill-util.iml
index bd5ff00..1d9ecaf 100644
--- a/util/killbill-util.iml
+++ b/util/killbill-util.iml
@@ -36,7 +36,7 @@
<orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.3.3" level="project" />
<orderEntry type="library" name="Maven: com.ning.billing:killbill-api:0.3.3-SNAPSHOT" level="project" />
<orderEntry type="module" module-name="killbill-internal-api" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-payment:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: org.skife.config:config-magic:0.14" level="project" />
<orderEntry type="library" name="Maven: com.ning.billing.commons:killbill-clock:0.1.7" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.ning.billing.commons:killbill-clock:test-jar:tests:0.1.7" level="project" />
@@ -46,7 +46,7 @@
<orderEntry type="library" name="Maven: com.yammer.metrics:metrics-core:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.weakref:jmxutils:1.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.ning.billing.commons:killbill-queue:test-jar:tests:0.1.7" level="project" />
- <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.2.5" level="project" />
+ <orderEntry type="library" name="Maven: com.ning.billing.plugin:killbill-plugin-api-notification:0.3.1-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.samskivert:jmustache:1.5" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: mysql:mysql-connector-java:5.1.22" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: mysql:mysql-connector-mxj:5.0.12" level="project" />
diff --git a/util/src/main/java/com/ning/billing/util/events/BusInternalEvent.java b/util/src/main/java/com/ning/billing/util/events/BusInternalEvent.java
index a51b1e9..96147ac 100644
--- a/util/src/main/java/com/ning/billing/util/events/BusInternalEvent.java
+++ b/util/src/main/java/com/ning/billing/util/events/BusInternalEvent.java
@@ -25,6 +25,7 @@ public interface BusInternalEvent extends BusEvent {
ACCOUNT_CREATE,
ACCOUNT_CHANGE,
SUBSCRIPTION_TRANSITION,
+ ENTITLEMENT_TRANSITION,
BUNDLE_REPAIR,
INVOICE_EMPTY,
INVOICE_CREATION,
diff --git a/util/src/main/java/com/ning/billing/util/events/EffectiveEntitlementInternalEvent.java b/util/src/main/java/com/ning/billing/util/events/EffectiveEntitlementInternalEvent.java
new file mode 100644
index 0000000..fad3c68
--- /dev/null
+++ b/util/src/main/java/com/ning/billing/util/events/EffectiveEntitlementInternalEvent.java
@@ -0,0 +1,4 @@
+package com.ning.billing.util.events;
+
+public interface EffectiveEntitlementInternalEvent extends EntitlementInternalEvent {
+}
diff --git a/util/src/main/java/com/ning/billing/util/events/EntitlementInternalEvent.java b/util/src/main/java/com/ning/billing/util/events/EntitlementInternalEvent.java
new file mode 100644
index 0000000..e1bc8d7
--- /dev/null
+++ b/util/src/main/java/com/ning/billing/util/events/EntitlementInternalEvent.java
@@ -0,0 +1,25 @@
+package com.ning.billing.util.events;
+
+import java.util.UUID;
+
+import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
+
+import com.ning.billing.entitlement.EntitlementTransitionType;
+
+public interface EntitlementInternalEvent extends BusInternalEvent {
+
+ UUID getId();
+
+ UUID getBundleId();
+
+ UUID getEntitlementId();
+
+ UUID getAccountId();
+
+ EntitlementTransitionType getTransitionType();
+
+ DateTime getRequestedTransitionTime();
+
+ DateTime getEffectiveTransitionTime();
+}
diff --git a/util/src/test/java/com/ning/billing/api/TestApiListener.java b/util/src/test/java/com/ning/billing/api/TestApiListener.java
index 3643d94..acf56e8 100644
--- a/util/src/test/java/com/ning/billing/api/TestApiListener.java
+++ b/util/src/test/java/com/ning/billing/api/TestApiListener.java
@@ -24,6 +24,7 @@ import java.util.concurrent.Callable;
import javax.inject.Inject;
import com.ning.billing.util.events.CustomFieldEvent;
+import com.ning.billing.util.events.EffectiveEntitlementInternalEvent;
import com.ning.billing.util.events.EffectiveSubscriptionInternalEvent;
import com.ning.billing.util.events.InvoiceAdjustmentInternalEvent;
import com.ning.billing.util.events.InvoiceCreationInternalEvent;
@@ -88,7 +89,7 @@ public class TestApiListener {
REPAIR_BUNDLE,
TAG,
TAG_DEFINITION,
- CUSTOM_FIELD
+ CUSTOM_FIELD,
}
public void setNonExpectedMode() {
@@ -104,6 +105,22 @@ public class TestApiListener {
notifyIfStackEmpty();
}
+
+ @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);
+ break;
+ case UNBLOCK_BUNDLE:
+ assertEqualsNicely(NextEvent.RESUME);
+ break;
+ }
+ }
+
+
@Subscribe
public void handleSubscriptionEvents(final EffectiveSubscriptionInternalEvent eventEffective) {