killbill-aplcache

util: refactor GlobalLockerModule EmbeddedDBProvider

3/27/2015 7:54:23 AM

Details

diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/BeatrixIntegrationModule.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/BeatrixIntegrationModule.java
index 0817d1d..f25423a 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/BeatrixIntegrationModule.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/BeatrixIntegrationModule.java
@@ -18,7 +18,6 @@
 
 package org.killbill.billing.beatrix.integration;
 
-import org.killbill.billing.DBTestingHelper;
 import org.killbill.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import org.killbill.billing.account.glue.DefaultAccountModule;
 import org.killbill.billing.api.TestApiListener;
@@ -73,7 +72,7 @@ public class BeatrixIntegrationModule extends KillBillModule {
     @Override
     protected void configure() {
         install(new GuicyKillbillTestWithEmbeddedDBModule(true, configSource));
-        install(new GlobalLockerModule(DBTestingHelper.get().getInstance().getDBEngine(), configSource));
+        install(new GlobalLockerModule(configSource));
         install(new CacheModule(configSource));
         install(new EmailModule(configSource));
         install(new CallContextModule(configSource));
diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java
index 20a023a..1f40544 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/modules/KillbillServerModule.java
@@ -1,7 +1,7 @@
 /*
  * Copyright 2010-2013 Ning, Inc.
- * Copyright 2014 Groupon, Inc
- * Copyright 2014 The Billing Project, LLC
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
  *
  * 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
@@ -127,9 +127,7 @@ public class KillbillServerModule extends KillbillPlatformModule {
 
     @Override
     protected void configureEmbeddedDB() {
-        final EmbeddedDBProvider embeddedDBProvider = new KillBillEmbeddedDBProvider(daoConfig);
-        embeddedDB = embeddedDBProvider.get();
-        bind(EmbeddedDB.class).toInstance(embeddedDB);
+        bind(EmbeddedDB.class).toProvider(KillBillEmbeddedDBProvider.class).asEagerSingleton();
     }
 
     @Override
@@ -158,7 +156,7 @@ public class KillbillServerModule extends KillbillPlatformModule {
         install(new DefaultSubscriptionModule(configSource));
         install(new EmailModule(configSource));
         install(new ExportModule(configSource));
-        install(new GlobalLockerModule(embeddedDB.getDBEngine(), configSource));
+        install(new GlobalLockerModule(configSource));
         install(new KillBillShiroAopModule());
         install(new KillbillApiAopModule());
         install(new KillBillShiroWebModule(servletContext, skifeConfigSource));
diff --git a/profiles/killpay/src/main/java/org/killbill/billing/server/modules/KillpayServerModule.java b/profiles/killpay/src/main/java/org/killbill/billing/server/modules/KillpayServerModule.java
index 18c592f..d48507f 100644
--- a/profiles/killpay/src/main/java/org/killbill/billing/server/modules/KillpayServerModule.java
+++ b/profiles/killpay/src/main/java/org/killbill/billing/server/modules/KillpayServerModule.java
@@ -79,7 +79,7 @@ public class KillpayServerModule extends KillbillServerModule {
         install(new CustomFieldModule(configSource));
         install(new DefaultAccountModule(configSource));
         install(new ExportModule(configSource));
-        install(new GlobalLockerModule(embeddedDB.getDBEngine(), configSource));
+        install(new GlobalLockerModule(configSource));
         install(new KillBillShiroAopModule());
         install(new KillbillApiAopModule());
         install(new KillBillShiroWebModule(servletContext, skifeConfigSource));
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 9642aeb..f8fe73d 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
@@ -18,25 +18,34 @@
 
 package org.killbill.billing.util.glue;
 
+import java.io.IOException;
+
 import org.killbill.billing.platform.api.KillbillConfigSource;
 import org.killbill.commons.embeddeddb.EmbeddedDB;
-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;
 
-public class GlobalLockerModule extends KillBillModule {
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
 
-    private final DBEngine engine;
+public class GlobalLockerModule extends KillBillModule {
 
-    public GlobalLockerModule(final DBEngine engine, final KillbillConfigSource configSource) {
+    public GlobalLockerModule(final KillbillConfigSource configSource) {
         super(configSource);
-        this.engine = engine;
     }
 
-    @Override
-    protected void configure() {
-        if (EmbeddedDB.DBEngine.MYSQL.equals(engine)) {
-            install(new MySqlGlobalLockerModule(configSource));
+    @Provides
+    @Singleton
+    protected GlobalLocker provideGlobalLocker(final EmbeddedDB embeddedDB) throws IOException {
+        if (EmbeddedDB.DBEngine.MYSQL.equals(embeddedDB)) {
+            return new MySqlGlobalLocker(embeddedDB.getDataSource());
         } else {
-            install(new MemoryGlobalLockerModule(configSource));
+            return new MemoryGlobalLocker();
         }
     }
+
+    @Override
+    protected void configure() {
+    }
 }
diff --git a/util/src/test/java/org/killbill/billing/util/glue/TestUtilModuleWithEmbeddedDB.java b/util/src/test/java/org/killbill/billing/util/glue/TestUtilModuleWithEmbeddedDB.java
index 9d3837b..1537ac4 100644
--- a/util/src/test/java/org/killbill/billing/util/glue/TestUtilModuleWithEmbeddedDB.java
+++ b/util/src/test/java/org/killbill/billing/util/glue/TestUtilModuleWithEmbeddedDB.java
@@ -18,7 +18,6 @@
 
 package org.killbill.billing.util.glue;
 
-import org.killbill.billing.DBTestingHelper;
 import org.killbill.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import org.killbill.billing.api.TestApiListener;
 import org.killbill.billing.platform.api.KillbillConfigSource;
@@ -38,7 +37,7 @@ public class TestUtilModuleWithEmbeddedDB extends TestUtilModule {
         install(new TagStoreModule(configSource));
         install(new CustomFieldModule(configSource));
         install(new NonEntityDaoModule(configSource));
-        install(new GlobalLockerModule(DBTestingHelper.get().getInstance().getDBEngine(), configSource));
+        install(new GlobalLockerModule(configSource));
 
         bind(TestApiListener.class).asEagerSingleton();
     }