killbill-memoizeit

util: inject correct DataSource in GlobalLockerModule Signed-off-by:

4/20/2015 10:53:11 AM

Changes

util/src/main/java/org/killbill/billing/util/glue/MySqlGlobalLockerModule.java 34(+0 -34)

util/src/main/java/org/killbill/billing/util/glue/MySqlGlobalLockerProvider.java 39(+0 -39)

Details

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 33226cf..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 {
+    // 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(embeddedDB.getDataSource());
+            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 da08e66..17e8dfb 100644
--- a/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
+++ b/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
@@ -96,6 +96,7 @@ public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuite
         } else {
             Assert.assertTrue(locker instanceof MemoryGlobalLocker);
         }
+        Assert.assertTrue(locker.isFree("a", "b"));
     }
 
     @Override