killbill-uncached
Changes
.travis.yml 2(+1 -1)
Details
.travis.yml 2(+1 -1)
diff --git a/.travis.yml b/.travis.yml
index ee54aea..95923b9 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,7 +6,7 @@ sudo: false
# directories:
# - $HOME/.m2
-script: if [[ -v COMMAND ]]; then $COMMAND; else travis_retry mvn -q -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -Dorg.slf4j.simpleLogger.log.org.killbill.billing.util.cache=ERROR -Dorg.slf4j.simpleLogger.log.org.killbill.billing.lifecycle=ERROR clean install $PHASE | egrep -v 'Download|Install|[ \t]*at [ \ta-zA-Z0-9\.\:\(\)]+'; [ ${PIPESTATUS[0]} == 0 ]; fi
+script: if [[ -v COMMAND ]]; then $COMMAND; else travis_retry mvn -q -Dorg.slf4j.simpleLogger.defaultLogLevel=WARN -Dorg.slf4j.simpleLogger.log.org.killbill.billing.util.cache=ERROR -Dorg.slf4j.simpleLogger.log.org.killbill.billing.lifecycle=ERROR clean install $PHASE 2>&1 | egrep -v 'Download|Install|[ \t]*at [ \ta-zA-Z0-9\.\:\(\)]+'; [ ${PIPESTATUS[0]} == 0 ]; fi
# Remove --quiet to avoid timeouts
install: mvn -U install -DskipTests=true | egrep -v 'Download|Install'
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/glue/DefaultInvoiceModule.java b/invoice/src/main/java/org/killbill/billing/invoice/glue/DefaultInvoiceModule.java
index f790741..5929709 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/glue/DefaultInvoiceModule.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/glue/DefaultInvoiceModule.java
@@ -19,6 +19,7 @@
package org.killbill.billing.invoice.glue;
import org.killbill.billing.glue.InvoiceModule;
+import org.killbill.billing.invoice.InvoiceDispatcher;
import org.killbill.billing.invoice.InvoiceListener;
import org.killbill.billing.invoice.InvoiceTagHandler;
import org.killbill.billing.invoice.api.DefaultInvoiceService;
@@ -117,6 +118,10 @@ public class DefaultInvoiceModule extends KillBillModule implements InvoiceModul
}
}
+ protected void installInvoiceDispatcher() {
+ bind(InvoiceDispatcher.class).asEagerSingleton();
+ }
+
protected void installInvoiceListener() {
bind(InvoiceListener.class).asEagerSingleton();
}
@@ -141,6 +146,7 @@ public class DefaultInvoiceModule extends KillBillModule implements InvoiceModul
installInvoiceService();
installInvoiceNotifier();
installNotifiers();
+ installInvoiceDispatcher();
installInvoiceListener();
installTagHandler();
installInvoiceGenerator();
diff --git a/util/src/main/java/org/killbill/billing/util/glue/GlobalLockerModule.java b/util/src/main/java/org/killbill/billing/util/glue/GlobalLockerModule.java
index f8fe73d..bc1d2b9 100644
--- a/util/src/main/java/org/killbill/billing/util/glue/GlobalLockerModule.java
+++ b/util/src/main/java/org/killbill/billing/util/glue/GlobalLockerModule.java
@@ -20,6 +20,8 @@ package org.killbill.billing.util.glue;
import java.io.IOException;
+import javax.sql.DataSource;
+
import org.killbill.billing.platform.api.KillbillConfigSource;
import org.killbill.commons.embeddeddb.EmbeddedDB;
import org.killbill.commons.locker.GlobalLocker;
@@ -37,9 +39,10 @@ public class GlobalLockerModule extends KillBillModule {
@Provides
@Singleton
- protected GlobalLocker provideGlobalLocker(final EmbeddedDB embeddedDB) throws IOException {
- if (EmbeddedDB.DBEngine.MYSQL.equals(embeddedDB)) {
- return new MySqlGlobalLocker(embeddedDB.getDataSource());
+ // Note: we need to inject the pooled DataSource here, not the (direct) one from EmbeddedDB
+ protected GlobalLocker provideGlobalLocker(final DataSource dataSource, final EmbeddedDB embeddedDB) throws IOException {
+ if (EmbeddedDB.DBEngine.MYSQL.equals(embeddedDB.getDBEngine())) {
+ return new MySqlGlobalLocker(dataSource);
} else {
return new MemoryGlobalLocker();
}
diff --git a/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java b/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
index 69abe55..17e8dfb 100644
--- a/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
+++ b/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
@@ -1,7 +1,9 @@
/*
- * Copyright 2010-2012 Ning, Inc.
+ * Copyright 2010-2014 Ning, Inc.
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
*
- * Ning licenses this file to you under the Apache License, version 2.0
+ * The Billing Project licenses this file to you under the Apache License, version 2.0
* (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
*
@@ -18,20 +20,9 @@ package org.killbill.billing.util;
import javax.inject.Inject;
-import org.killbill.billing.security.api.SecurityApi;
-import org.killbill.billing.util.security.shiro.dao.UserDao;
-import org.skife.jdbi.v2.IDBI;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-
import org.killbill.billing.GuicyKillbillTestSuiteWithEmbeddedDB;
import org.killbill.billing.api.TestApiListener;
-import org.killbill.bus.api.PersistentBus;
-import org.killbill.commons.locker.GlobalLocker;
-import org.killbill.notificationq.api.NotificationQueueService;
+import org.killbill.billing.security.api.SecurityApi;
import org.killbill.billing.util.audit.dao.AuditDao;
import org.killbill.billing.util.cache.CacheControllerDispatcher;
import org.killbill.billing.util.callcontext.InternalCallContextFactory;
@@ -42,6 +33,19 @@ import org.killbill.billing.util.export.dao.DatabaseExportDao;
import org.killbill.billing.util.glue.TestUtilModuleWithEmbeddedDB;
import org.killbill.billing.util.tag.dao.DefaultTagDao;
import org.killbill.billing.util.tag.dao.TagDefinitionDao;
+import org.killbill.bus.api.PersistentBus;
+import org.killbill.commons.embeddeddb.EmbeddedDB.DBEngine;
+import org.killbill.commons.locker.GlobalLocker;
+import org.killbill.commons.locker.memory.MemoryGlobalLocker;
+import org.killbill.commons.locker.mysql.MySqlGlobalLocker;
+import org.killbill.notificationq.api.NotificationQueueService;
+import org.skife.jdbi.v2.IDBI;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -82,11 +86,17 @@ public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuite
@Inject
protected SecurityApi securityApi;
-
@BeforeClass(groups = "slow")
public void beforeClass() throws Exception {
final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestUtilModuleWithEmbeddedDB(configSource));
g.injectMembers(this);
+
+ if (DBEngine.MYSQL.equals(helper.getDBEngine())) {
+ Assert.assertTrue(locker instanceof MySqlGlobalLocker);
+ } else {
+ Assert.assertTrue(locker instanceof MemoryGlobalLocker);
+ }
+ Assert.assertTrue(locker.isFree("a", "b"));
}
@Override