killbill-aplcache

catalog: make CatalogModule more flexible Don't rely on

6/7/2012 2:58:28 AM

Details

diff --git a/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java b/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java
index 8702b6f..6194d60 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java
@@ -16,18 +16,36 @@
 
 package com.ning.billing.catalog.glue;
 
+import java.util.Properties;
+
+import org.skife.config.ConfigSource;
+import org.skife.config.ConfigurationObjectFactory;
+import org.skife.config.SimplePropertyConfigSource;
+
 import com.google.inject.AbstractModule;
 import com.ning.billing.catalog.DefaultCatalogService;
 import com.ning.billing.catalog.api.CatalogService;
 import com.ning.billing.catalog.io.ICatalogLoader;
 import com.ning.billing.catalog.io.VersionedCatalogLoader;
 import com.ning.billing.config.CatalogConfig;
-import org.skife.config.ConfigurationObjectFactory;
 
 public class CatalogModule extends AbstractModule {
+    final ConfigSource configSource;
+
+    public CatalogModule() {
+        this(System.getProperties());
+    }
+
+    public CatalogModule(final Properties properties) {
+        this(new SimplePropertyConfigSource(properties));
+    }
+
+    public CatalogModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
 
     protected void installConfig() {
-        final CatalogConfig config = new ConfigurationObjectFactory(System.getProperties()).build(CatalogConfig.class);
+        final CatalogConfig config = new ConfigurationObjectFactory(configSource).build(CatalogConfig.class);
         bind(CatalogConfig.class).toInstance(config);
     }
 
@@ -41,5 +59,4 @@ public class CatalogModule extends AbstractModule {
         installConfig();
         installCatalog();
     }
-
 }