killbill-uncached
Changes
api/pom.xml 7(+6 -1)
entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransition.java 14(+13 -1)
util/pom.xml 9(+4 -5)
Details
diff --git a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
index 653a285..a80d32b 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/AnalyticsListener.java
@@ -21,7 +21,6 @@ import com.ning.billing.account.api.IAccount;
import com.ning.billing.account.api.IAccountUserApi;
import com.ning.billing.analytics.dao.EventDao;
import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.entitlement.api.user.IApiListener;
import com.ning.billing.entitlement.api.user.IEntitlementUserApi;
import com.ning.billing.entitlement.api.user.ISubscriptionBundle;
import com.ning.billing.entitlement.api.user.ISubscriptionTransition;
@@ -31,7 +30,8 @@ import org.slf4j.LoggerFactory;
import java.util.List;
-public class AnalyticsListener implements IApiListener
+// STEPH fid with Pierre
+public class AnalyticsListener /* implements IApiListener */
{
private static final Logger log = LoggerFactory.getLogger(AnalyticsListener.class);
private final EventDao dao;
@@ -45,42 +45,40 @@ public class AnalyticsListener implements IApiListener
this.accountApi = accountApi;
}
- @Override
+
public void subscriptionCreated(ISubscriptionTransition created)
{
final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionCreated(created.getNextPlan());
recordTransition(event, created);
}
- @Override
+
public void subscriptionCancelled(ISubscriptionTransition cancelled)
{
final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionCancelled(cancelled.getNextPlan());
recordTransition(event, cancelled);
}
- @Override
+
public void subscriptionChanged(ISubscriptionTransition changed)
{
final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionChanged(changed.getNextPlan());
recordTransition(event, changed);
}
- @Override
+
public void subscriptionPaused(ISubscriptionTransition paused)
{
final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionPaused(paused.getNextPlan());
recordTransition(event, paused);
}
- @Override
public void subscriptionResumed(ISubscriptionTransition resumed)
{
final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionResumed(resumed.getNextPlan());
recordTransition(event, resumed);
}
- @Override
public void subscriptionPhaseChanged(ISubscriptionTransition phaseChanged)
{
final BusinessSubscriptionEvent event = BusinessSubscriptionEvent.subscriptionPhaseChanged(phaseChanged.getNextPlan(), phaseChanged.getNextState());
api/pom.xml 7(+6 -1)
diff --git a/api/pom.xml b/api/pom.xml
index e9d887f..5cfa476 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -8,7 +8,8 @@
OR CONDITIONS OF ANY KIND, either express or implied. See the ~ License for
the specific language governing permissions and limitations ~ under the License. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.ning.billing</groupId>
@@ -26,6 +27,10 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>org.jdbi</groupId>
+ <artifactId>jdbi</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<scope>provided</scope>
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/IEntitlementService.java b/api/src/main/java/com/ning/billing/entitlement/api/IEntitlementService.java
index 41cd37d..bd47c6b 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/IEntitlementService.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/IEntitlementService.java
@@ -16,10 +16,7 @@
package com.ning.billing.entitlement.api;
-import java.util.List;
-
import com.ning.billing.entitlement.api.billing.IEntitlementBillingApi;
-import com.ning.billing.entitlement.api.user.IApiListener;
import com.ning.billing.entitlement.api.user.IEntitlementUserApi;
import com.ning.billing.lifecycle.IService;
@@ -29,7 +26,7 @@ public interface IEntitlementService extends IService {
@Override
public String getName();
- public IEntitlementUserApi getUserApi(List<IApiListener> listeners);
+ public IEntitlementUserApi getUserApi();
public IEntitlementBillingApi getBillingApi();
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/IEntitlementUserApi.java b/api/src/main/java/com/ning/billing/entitlement/api/user/IEntitlementUserApi.java
index fb21eea..b37b976 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/IEntitlementUserApi.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/IEntitlementUserApi.java
@@ -25,8 +25,6 @@ import com.ning.billing.catalog.api.BillingPeriod;
public interface IEntitlementUserApi {
- public void initialize(List<IApiListener> listeners);
-
public ISubscriptionBundle getBundleFromId(UUID id);
public ISubscription getSubscriptionFromId(UUID id);
diff --git a/api/src/main/java/com/ning/billing/entitlement/api/user/ISubscriptionTransition.java b/api/src/main/java/com/ning/billing/entitlement/api/user/ISubscriptionTransition.java
index d4e1a5a..e100a5b 100644
--- a/api/src/main/java/com/ning/billing/entitlement/api/user/ISubscriptionTransition.java
+++ b/api/src/main/java/com/ning/billing/entitlement/api/user/ISubscriptionTransition.java
@@ -23,9 +23,21 @@ import org.joda.time.DateTime;
import com.ning.billing.catalog.api.IPlan;
import com.ning.billing.catalog.api.IPlanPhase;
import com.ning.billing.entitlement.api.user.ISubscription.SubscriptionState;
+import com.ning.billing.util.eventbus.IEventBusType;
-public interface ISubscriptionTransition {
+public interface ISubscriptionTransition extends IEventBusType {
+ public enum SubscriptionTransitionTypeType {
+ CREATE,
+ CHANGE,
+ PAUSE,
+ RESUME,
+ CANCEL,
+ UNCANCEL,
+ PHASE
+ }
+
+ SubscriptionTransitionTypeType getTransitionType();
UUID getBundleId();
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/lifecycle/TestLifecycle.java b/beatrix/src/test/java/com/ning/billing/beatrix/lifecycle/TestLifecycle.java
index f85232f..7ceae83 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/lifecycle/TestLifecycle.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/lifecycle/TestLifecycle.java
@@ -26,7 +26,6 @@ import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
import com.ning.billing.lifecycle.IService;
-import com.ning.billing.lifecycle.Lifecycled;
import com.ning.billing.lifecycle.LyfecycleHandlerType;
import com.ning.billing.lifecycle.LyfecycleHandlerType.LyfecycleLevel;
@@ -58,7 +57,6 @@ public class TestLifecycle {
}
}
- @Lifecycled
public static class Service2 implements IService {
@LyfecycleHandlerType(LyfecycleLevel.LOAD_CATALOG)
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java
index 8561ce0..4e17a53 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/EntitlementUserApi.java
@@ -22,15 +22,15 @@ import java.util.UUID;
import org.joda.time.DateTime;
+import com.google.inject.Inject;
import com.ning.billing.ErrorCode;
import com.ning.billing.account.api.IAccount;
import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.ICatalog;
+import com.ning.billing.catalog.api.ICatalogService;
import com.ning.billing.catalog.api.IPlan;
import com.ning.billing.catalog.api.IPlanPhase;
import com.ning.billing.entitlement.alignment.IPlanAligner;
import com.ning.billing.entitlement.alignment.IPlanAligner.TimedPhase;
-import com.ning.billing.entitlement.api.user.IApiListener;
import com.ning.billing.entitlement.api.user.ISubscription;
import com.ning.billing.entitlement.api.user.ISubscriptionBundle;
import com.ning.billing.entitlement.api.user.IEntitlementUserApi;
@@ -41,37 +41,23 @@ import com.ning.billing.entitlement.events.phase.IPhaseEvent;
import com.ning.billing.entitlement.events.phase.PhaseEvent;
import com.ning.billing.entitlement.events.user.ApiEventCreate;
import com.ning.billing.entitlement.exceptions.EntitlementError;
-import com.ning.billing.entitlement.glue.InjectorMagic;
import com.ning.billing.util.clock.IClock;
public class EntitlementUserApi implements IEntitlementUserApi {
- private final Engine engine;
private final IClock clock;
private final IEntitlementDao dao;
private final IPlanAligner planAligner;
+ private final ICatalogService catalogService;
- private boolean initialized;
-
- private ICatalog catalog;
-
- public EntitlementUserApi(Engine engine, IClock clock, IPlanAligner planAligner, IEntitlementDao dao) {
+ @Inject
+ public EntitlementUserApi(IClock clock, IPlanAligner planAligner,
+ IEntitlementDao dao, ICatalogService catalogService) {
super();
- this.engine = engine;
this.clock = clock;
this.dao = dao;
this.planAligner = planAligner;
- this.initialized = false;
-
- }
-
- @Override
- public synchronized void initialize(List<IApiListener> listeners) {
- if (!initialized) {
- this.catalog = InjectorMagic.getCatlog();
- engine.registerApiObservers(listeners);
- initialized = true;
- }
+ this.catalogService = catalogService;
}
@Override
@@ -110,7 +96,7 @@ public class EntitlementUserApi implements IEntitlementUserApi {
DateTime now = clock.getUTCNow();
- IPlan plan = catalog.getPlan(productName, term, realPriceList);
+ IPlan plan = catalogService.getCatalog().getPlan(productName, term, realPriceList);
if (plan == null) {
throw new EntitlementUserApiException(ErrorCode.ENT_CREATE_BAD_CATALOG, productName, term, realPriceList);
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransition.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransition.java
index 63f42f6..827d6a8 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransition.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransition.java
@@ -25,6 +25,7 @@ import com.ning.billing.catalog.api.IPlanPhase;
import com.ning.billing.entitlement.api.user.ISubscription.SubscriptionState;
import com.ning.billing.entitlement.events.IEvent.EventType;
import com.ning.billing.entitlement.events.user.ApiEventType;
+import com.ning.billing.entitlement.exceptions.EntitlementError;
public class SubscriptionTransition implements ISubscriptionTransition {
@@ -117,6 +118,18 @@ public class SubscriptionTransition implements ISubscriptionTransition {
return nextPriceList;
}
+ @Override
+ public SubscriptionTransitionTypeType getTransitionType() {
+ switch(eventType) {
+ case API_USER:
+ return apiEventType.getSubscriptionTransitionType();
+ case PHASE:
+ return SubscriptionTransitionTypeType.PHASE;
+ default:
+ throw new EntitlementError("Unexpected event type " + eventType);
+ }
+ }
+
public ApiEventType getApiEventType() {
return apiEventType;
}
@@ -151,5 +164,4 @@ public class SubscriptionTransition implements ISubscriptionTransition {
+ ", nextPriceList " + nextPriceList
+ ", nextPhase=" + ((nextPhase != null) ? nextPhase.getName() : null) + "]";
}
-
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/core/Engine.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/core/Engine.java
index dd33ae5..86a5a6d 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/core/Engine.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/core/Engine.java
@@ -16,25 +16,19 @@
package com.ning.billing.entitlement.engine.core;
-import java.util.List;
-
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.inject.Inject;
-import com.ning.billing.catalog.api.ICatalog;
-import com.ning.billing.catalog.api.ICatalogService;
import com.ning.billing.config.IEntitlementConfig;
import com.ning.billing.entitlement.alignment.IPlanAligner;
import com.ning.billing.entitlement.alignment.IPlanAligner.TimedPhase;
-import com.ning.billing.entitlement.alignment.PlanAligner;
import com.ning.billing.entitlement.api.IEntitlementService;
-import com.ning.billing.entitlement.api.billing.BillingApi;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApi;
import com.ning.billing.entitlement.api.billing.IEntitlementBillingApi;
import com.ning.billing.entitlement.api.user.EntitlementUserApi;
-import com.ning.billing.entitlement.api.user.IApiListener;
import com.ning.billing.entitlement.api.user.IEntitlementUserApi;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.engine.dao.IEntitlementDao;
@@ -59,20 +53,19 @@ public class Engine implements IEventListener, IEntitlementService {
private final IPlanAligner planAligner;
private final IEntitlementUserApi userApi;
private final IEntitlementBillingApi billingApi;
- private List<IApiListener> observers;
@Inject
public Engine(IClock clock, IEntitlementDao dao, IApiEventProcessor apiEventProcessor,
- IPlanAligner planAligner, IEntitlementConfig config) {
+ IPlanAligner planAligner, IEntitlementConfig config, EntitlementUserApi userApi,
+ EntitlementBillingApi billingApi) {
super();
this.clock = clock;
this.dao = dao;
this.apiEventProcessor = apiEventProcessor;
this.planAligner = planAligner;
- this.observers = null;
- this.userApi = new EntitlementUserApi(this, clock, planAligner, dao);
- this.billingApi = new BillingApi(this, clock, dao);
+ this.userApi = userApi;
+ this.billingApi = billingApi;
}
@Override
@@ -96,8 +89,7 @@ public class Engine implements IEventListener, IEntitlementService {
}
@Override
- public IEntitlementUserApi getUserApi(List<IApiListener> listeners) {
- userApi.initialize(listeners);
+ public IEntitlementUserApi getUserApi() {
return userApi;
}
@@ -107,16 +99,8 @@ public class Engine implements IEventListener, IEntitlementService {
}
- public void registerApiObservers(List<IApiListener> observers) {
- this.observers = observers;
- }
-
-
@Override
public void processEventReady(IEvent event) {
- if (observers == null) {
- return;
- }
Subscription subscription = (Subscription) dao.getSubscriptionFromId(event.getSubscriptionId());
if (subscription == null) {
log.warn("Failed to retrieve subscription for id %s", event.getSubscriptionId());
@@ -131,6 +115,7 @@ public class Engine implements IEventListener, IEntitlementService {
}
private void dispatchApiEvent(IUserEvent event, Subscription subscription) {
+/*
for (IApiListener listener : observers) {
switch(event.getEventType()) {
case CREATE:
@@ -146,12 +131,16 @@ public class Engine implements IEventListener, IEntitlementService {
break;
}
}
+ */
}
+// STEPH observers
private void dispatchPhaseEvent(IPhaseEvent event, Subscription subscription) {
+/*
for (IApiListener listener : observers) {
listener.subscriptionPhaseChanged(subscription.getLatestTranstion());
}
+*/
}
private void insertNextPhaseEvent(Subscription subscription) {
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/events/user/ApiEventType.java b/entitlement/src/main/java/com/ning/billing/entitlement/events/user/ApiEventType.java
index e07e39f..94a446f 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/events/user/ApiEventType.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/events/user/ApiEventType.java
@@ -16,16 +16,38 @@
package com.ning.billing.entitlement.events.user;
+import com.ning.billing.entitlement.api.user.ISubscriptionTransition.SubscriptionTransitionTypeType;
+
public enum ApiEventType {
/*
- * STEPH should be changed
* Ordering is important for unit tests today.
*/
- CREATE,
- CHANGE,
- PAUSE,
- RESUME,
- CANCEL,
- UNCANCEL
+ CREATE {
+ @Override
+ public SubscriptionTransitionTypeType getSubscriptionTransitionType() { return SubscriptionTransitionTypeType.CREATE; }
+ },
+ CHANGE {
+ @Override
+ public SubscriptionTransitionTypeType getSubscriptionTransitionType() { return SubscriptionTransitionTypeType.CHANGE; }
+ },
+ PAUSE {
+ @Override
+ public SubscriptionTransitionTypeType getSubscriptionTransitionType() { return SubscriptionTransitionTypeType.PAUSE; }
+ },
+ RESUME {
+ @Override
+ public SubscriptionTransitionTypeType getSubscriptionTransitionType() { return SubscriptionTransitionTypeType.RESUME; }
+ },
+ CANCEL {
+ @Override
+ public SubscriptionTransitionTypeType getSubscriptionTransitionType() { return SubscriptionTransitionTypeType.CANCEL; }
+ },
+ UNCANCEL {
+ @Override
+ public SubscriptionTransitionTypeType getSubscriptionTransitionType() { return SubscriptionTransitionTypeType.UNCANCEL; }
+ };
+
+ // STEPH Really, is that necessary?
+ public abstract SubscriptionTransitionTypeType getSubscriptionTransitionType();
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/glue/EntitlementModule.java b/entitlement/src/main/java/com/ning/billing/entitlement/glue/EntitlementModule.java
index d303b30..fe8489c 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/glue/EntitlementModule.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/glue/EntitlementModule.java
@@ -23,6 +23,8 @@ import com.ning.billing.config.IEntitlementConfig;
import com.ning.billing.entitlement.alignment.IPlanAligner;
import com.ning.billing.entitlement.alignment.PlanAligner;
import com.ning.billing.entitlement.api.IEntitlementService;
+import com.ning.billing.entitlement.api.billing.EntitlementBillingApi;
+import com.ning.billing.entitlement.api.billing.IEntitlementBillingApi;
import com.ning.billing.entitlement.api.user.EntitlementUserApi;
import com.ning.billing.entitlement.api.user.IEntitlementUserApi;
import com.ning.billing.entitlement.engine.core.ApiEventProcessor;
@@ -59,6 +61,8 @@ public class EntitlementModule extends AbstractModule {
bind(IEntitlementService.class).to(Engine.class).asEagerSingleton();
bind(Engine.class).asEagerSingleton();
bind(IPlanAligner.class).to(PlanAligner.class).asEagerSingleton();
+ bind(IEntitlementUserApi.class).to(EntitlementUserApi.class).asEagerSingleton();
+ bind(IEntitlementBillingApi.class).to(EntitlementBillingApi.class).asEagerSingleton();
}
protected void installInjectorMagic() {
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/ApiTestListener.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/ApiTestListener.java
index 9591ee6..f882943 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/ApiTestListener.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/ApiTestListener.java
@@ -22,10 +22,11 @@ import java.util.Stack;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.ning.billing.entitlement.api.user.IApiListener;
+import com.google.common.eventbus.Subscribe;
import com.ning.billing.entitlement.api.user.ISubscriptionTransition;
+import com.ning.billing.util.eventbus.IEventBus;
-public class ApiTestListener implements IApiListener {
+public class ApiTestListener {
private static final Logger log = LoggerFactory.getLogger(ApiTestListener.class);
@@ -42,11 +43,37 @@ public class ApiTestListener implements IApiListener {
PHASE
}
- public ApiTestListener() {
+ public ApiTestListener(IEventBus eventBus) {
this.nextExpectedEvent = new Stack<NextEvent>();
this.completed = false;
}
+ @Subscribe
+ public void handleEntitlementEvent(ISubscriptionTransition event) {
+ switch (event.getTransitionType()) {
+ case CREATE:
+ subscriptionCreated(event);
+ break;
+ case CANCEL:
+ subscriptionCancelled(event);
+ break;
+ case CHANGE:
+ subscriptionChanged(event);
+ break;
+ case PAUSE:
+ subscriptionPaused(event);
+ break;
+ case RESUME:
+ subscriptionResumed(event);
+ break;
+ case UNCANCEL:
+ break;
+ default:
+ throw new RuntimeException("Unexpected event type " + event.getRequestedTransitionTime());
+ }
+
+ }
+
public void pushExpectedEvent(NextEvent next) {
synchronized (this) {
nextExpectedEvent.push(next);
@@ -98,42 +125,42 @@ public class ApiTestListener implements IApiListener {
}
}
- @Override
+
public void subscriptionCreated(ISubscriptionTransition created) {
log.debug("-> Got event CREATED");
assertEqualsNicely(nextExpectedEvent.pop(), NextEvent.CREATE);
notifyIfStackEmpty();
}
- @Override
+
public void subscriptionCancelled(ISubscriptionTransition cancelled) {
log.debug("-> Got event CANCEL");
assertEqualsNicely(nextExpectedEvent.pop(), NextEvent.CANCEL);
notifyIfStackEmpty();
}
- @Override
+
public void subscriptionChanged(ISubscriptionTransition changed) {
log.debug("-> Got event CHANGE");
assertEqualsNicely(nextExpectedEvent.pop(), NextEvent.CHANGE);
notifyIfStackEmpty();
}
- @Override
+
public void subscriptionPaused(ISubscriptionTransition paused) {
log.debug("-> Got event PAUSE");
assertEqualsNicely(nextExpectedEvent.pop(), NextEvent.PAUSE);
notifyIfStackEmpty();
}
- @Override
+
public void subscriptionResumed(ISubscriptionTransition resumed) {
log.debug("-> Got event RESUME");
assertEqualsNicely(nextExpectedEvent.pop(), NextEvent.RESUME);
notifyIfStackEmpty();
}
- @Override
+
public void subscriptionPhaseChanged(
ISubscriptionTransition phaseChanged) {
log.debug("-> Got event PHASE");
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
index 4c2ae2b..ae2236e 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiBase.java
@@ -68,6 +68,8 @@ import com.ning.billing.entitlement.glue.InjectorMagic;
import com.ning.billing.lifecycle.IService.ServiceException;
import com.ning.billing.util.clock.ClockMock;
import com.ning.billing.util.clock.IClock;
+import com.ning.billing.util.eventbus.EventBusService;
+import com.ning.billing.util.eventbus.IEventBusService;
public abstract class TestUserApiBase {
@@ -82,14 +84,13 @@ public abstract class TestUserApiBase {
protected IEntitlementConfig config;
protected IEntitlementDao dao;
protected ClockMock clock;
+ protected IEventBusService busService;
protected IAccount account;
protected ICatalog catalog;
protected ApiTestListener testListener;
protected ISubscriptionBundle bundle;
- private InjectorMagic injectorMagic;
-
public static void loadSystemPropertiesFromClasspath( final String resource )
{
final URL url = TestUserApiBase.class.getResource(resource);
@@ -105,6 +106,7 @@ public abstract class TestUserApiBase {
@AfterClass(groups={"setup"})
public void tearDown() {
InjectorMagic.instance = null;
+ ((EventBusService) busService).stopBus();
}
@BeforeClass(groups={"setup"})
@@ -113,18 +115,17 @@ public abstract class TestUserApiBase {
loadSystemPropertiesFromClasspath("/entitlement.properties");
final Injector g = getInjector();
- injectorMagic = g.getInstance(InjectorMagic.class);
-
-
entitlementService = g.getInstance(IEntitlementService.class);
catalogService = g.getInstance(ICatalogService.class);
+ busService = g.getInstance(IEventBusService.class);
config = g.getInstance(IEntitlementConfig.class);
dao = g.getInstance(IEntitlementDao.class);
clock = (ClockMock) g.getInstance(IClock.class);
try {
((CatalogService) catalogService).loadCatalog();
- ((Engine)entitlementService).initialize();
+ ((EventBusService) busService).startBus();
+ ((Engine) entitlementService).initialize();
init();
} catch (EntitlementUserApiException e) {
Assert.fail(e.getMessage());
@@ -142,10 +143,9 @@ public abstract class TestUserApiBase {
catalog = catalogService.getCatalog();
assertNotNull(catalog);
- testListener = new ApiTestListener();
- List<IApiListener> listeners = new ArrayList<IApiListener>();
- listeners.add(testListener);
- entitlementApi = entitlementService.getUserApi(listeners);
+
+ testListener = new ApiTestListener(busService.getEventBus());
+ entitlementApi = entitlementService.getUserApi();
billingApi = entitlementService.getBillingApi();
}
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/glue/EngineModuleMock.java b/entitlement/src/test/java/com/ning/billing/entitlement/glue/EngineModuleMock.java
index d70a2f7..de812ee 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/glue/EngineModuleMock.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/glue/EngineModuleMock.java
@@ -18,6 +18,7 @@ package com.ning.billing.entitlement.glue;
import com.ning.billing.util.clock.ClockMock;
import com.ning.billing.util.clock.IClock;
+import com.ning.billing.util.glue.EventBusModule;
public class EngineModuleMock extends EntitlementModule {
@@ -29,6 +30,7 @@ public class EngineModuleMock extends EntitlementModule {
@Override
protected void configure() {
super.configure();
+ install(new EventBusModule());
}
}
util/pom.xml 9(+4 -5)
diff --git a/util/pom.xml b/util/pom.xml
index 2143767..8d1fd74 100644
--- a/util/pom.xml
+++ b/util/pom.xml
@@ -29,6 +29,10 @@
<artifactId>bonecp</artifactId>
</dependency>
<dependency>
+ <groupId>org.jdbi</groupId>
+ <artifactId>jdbi</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
@@ -47,11 +51,6 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.jdbi</groupId>
- <artifactId>jdbi</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<scope>test</scope>