killbill-memoizeit
Changes
payment/pom.xml 5(+5 -0)
payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPluginModule.java 20(+20 -0)
payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPluginProvider.java 26(+26 -0)
pom.xml 8(+7 -1)
Details
payment/pom.xml 5(+5 -0)
diff --git a/payment/pom.xml b/payment/pom.xml
index 8be82aa..ba9988b 100644
--- a/payment/pom.xml
+++ b/payment/pom.xml
@@ -47,6 +47,11 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>com.google.inject.extensions</groupId>
+ <artifactId>guice-multibindings</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
diff --git a/payment/src/main/java/com/ning/billing/payment/provider/PaymentProviderPluginRegistry.java b/payment/src/main/java/com/ning/billing/payment/provider/PaymentProviderPluginRegistry.java
index cee31d3..4aa942c 100644
--- a/payment/src/main/java/com/ning/billing/payment/provider/PaymentProviderPluginRegistry.java
+++ b/payment/src/main/java/com/ning/billing/payment/provider/PaymentProviderPluginRegistry.java
@@ -14,7 +14,7 @@ public class PaymentProviderPluginRegistry {
@Inject
public PaymentProviderPluginRegistry(PaymentConfig config) {
- this.defaultPlugin = config.getDefaultPaymentProviderPlugin();
+ this.defaultPlugin = config.getDefaultPaymentProvider();
}
public void register(PaymentProviderPlugin plugin, String name) {
diff --git a/payment/src/main/java/com/ning/billing/payment/setup/PaymentConfig.java b/payment/src/main/java/com/ning/billing/payment/setup/PaymentConfig.java
index b0e4b67..cdc5384 100644
--- a/payment/src/main/java/com/ning/billing/payment/setup/PaymentConfig.java
+++ b/payment/src/main/java/com/ning/billing/payment/setup/PaymentConfig.java
@@ -20,7 +20,7 @@ import org.skife.config.Config;
import org.skife.config.DefaultNull;
public interface PaymentConfig {
- @Config("killbill.payment.provider.defaultPlugin")
+ @Config("killbill.payment.provider.default")
@DefaultNull
- public String getDefaultPaymentProviderPlugin();
+ public String getDefaultPaymentProvider();
}
diff --git a/payment/src/main/java/com/ning/billing/payment/setup/PaymentModule.java b/payment/src/main/java/com/ning/billing/payment/setup/PaymentModule.java
index dc7f535..81649af 100644
--- a/payment/src/main/java/com/ning/billing/payment/setup/PaymentModule.java
+++ b/payment/src/main/java/com/ning/billing/payment/setup/PaymentModule.java
@@ -39,7 +39,8 @@ public class PaymentModule extends AbstractModule {
@Override
protected void configure() {
- final PaymentConfig config = new ConfigurationObjectFactory(props).build(PaymentConfig.class);
+ final ConfigurationObjectFactory factory = new ConfigurationObjectFactory(props);
+ final PaymentConfig config = factory.build(PaymentConfig.class);
bind(PaymentConfig.class).toInstance(config);
bind(PaymentProviderPluginRegistry.class).asEagerSingleton();
diff --git a/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java
index 86f1129..eaf36f2 100644
--- a/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java
+++ b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java
@@ -20,7 +20,6 @@ import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
-import com.google.inject.Inject;
import com.ning.billing.account.api.IAccount;
import com.ning.billing.invoice.model.Invoice;
import com.ning.billing.payment.PaymentError;
@@ -30,14 +29,8 @@ import com.ning.billing.payment.PaymentProviderAccount;
import com.ning.billing.util.Either;
public class MockPaymentProviderPlugin implements PaymentProviderPlugin {
- public static final String PLUGIN_NAME = "mock";
private final Map<String, PaymentInfo> payments = new ConcurrentHashMap<String, PaymentInfo>();
- @Inject
- public MockPaymentProviderPlugin(PaymentProviderPluginRegistry registry) {
- registry.register(this, PLUGIN_NAME);
- }
-
@Override
public Either<PaymentError, PaymentInfo> processInvoice(IAccount account, Invoice invoice) {
PaymentInfo payment = new PaymentInfo.Builder().setId(UUID.randomUUID().toString()).build();
diff --git a/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPluginModule.java b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPluginModule.java
new file mode 100644
index 0000000..88b6f7c
--- /dev/null
+++ b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPluginModule.java
@@ -0,0 +1,20 @@
+package com.ning.billing.payment.provider;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.name.Names;
+
+public class MockPaymentProviderPluginModule extends AbstractModule {
+ private final String instanceName;
+
+ public MockPaymentProviderPluginModule(String instanceName) {
+ this.instanceName = instanceName;
+ }
+
+ @Override
+ protected void configure() {
+ bind(MockPaymentProviderPlugin.class)
+ .annotatedWith(Names.named(instanceName))
+ .toProvider(new MockPaymentProviderPluginProvider(instanceName))
+ .asEagerSingleton();
+ }
+}
diff --git a/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPluginProvider.java b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPluginProvider.java
new file mode 100644
index 0000000..6a6c289
--- /dev/null
+++ b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPluginProvider.java
@@ -0,0 +1,26 @@
+package com.ning.billing.payment.provider;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class MockPaymentProviderPluginProvider implements Provider<MockPaymentProviderPlugin> {
+ private PaymentProviderPluginRegistry registry;
+ private final String instanceName;
+
+ public MockPaymentProviderPluginProvider(String instanceName) {
+ this.instanceName = instanceName;
+ }
+
+ @Inject
+ public void setPaymentProviderPluginRegistry(PaymentProviderPluginRegistry registry) {
+ this.registry = registry;
+ }
+
+ @Override
+ public MockPaymentProviderPlugin get() {
+ MockPaymentProviderPlugin plugin = new MockPaymentProviderPlugin();
+
+ registry.register(plugin, instanceName);
+ return plugin;
+ }
+}
diff --git a/payment/src/test/java/com/ning/billing/payment/setup/PaymentTestModule.java b/payment/src/test/java/com/ning/billing/payment/setup/PaymentTestModule.java
index 2aa3c61..16cfdbd 100644
--- a/payment/src/test/java/com/ning/billing/payment/setup/PaymentTestModule.java
+++ b/payment/src/test/java/com/ning/billing/payment/setup/PaymentTestModule.java
@@ -21,18 +21,18 @@ import org.apache.commons.collections.MapUtils;
import com.google.common.collect.ImmutableMap;
import com.ning.billing.account.api.IAccountUserApi;
import com.ning.billing.account.api.MockAccountUserApi;
-import com.ning.billing.payment.provider.MockPaymentProviderPlugin;
+import com.ning.billing.payment.provider.MockPaymentProviderPluginModule;
import com.ning.billing.util.eventbus.IEventBus;
import com.ning.billing.util.eventbus.MemoryEventBus;
public class PaymentTestModule extends PaymentModule {
public PaymentTestModule() {
- super(MapUtils.toProperties(ImmutableMap.of("killbill.payment.provider.defaultPlugin", "mock")));
+ super(MapUtils.toProperties(ImmutableMap.of("killbill.payment.provider.default", "my-mock")));
}
@Override
protected void installPaymentProviderPlugins(PaymentConfig config) {
- bind(MockPaymentProviderPlugin.class).asEagerSingleton();
+ install(new MockPaymentProviderPluginModule("my-mock"));
}
@Override
pom.xml 8(+7 -1)
diff --git a/pom.xml b/pom.xml
index bd1fb22..d7aed1c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -131,9 +131,15 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>com.google.inject.extensions</groupId>
+ <artifactId>guice-multibindings</artifactId>
+ <version>3.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>com.mogwee</groupId>
<artifactId>mogwee-executors</artifactId>
- <version>1.1.0</version>
+ <version>1.2.0</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>