Details
diff --git a/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java b/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java
index 2a9a435..79a0a45 100644
--- a/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java
+++ b/invoice/src/main/java/org/killbill/billing/invoice/config/MultiTenantInvoiceConfig.java
@@ -17,23 +17,19 @@
package org.killbill.billing.invoice.config;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
import javax.inject.Inject;
import javax.inject.Named;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.glue.InvoiceModule;
import org.killbill.billing.util.config.definition.InvoiceConfig;
+import org.killbill.billing.util.config.definition.KillbillConfig;
import org.killbill.billing.util.config.tenant.CacheConfig;
import org.killbill.billing.util.config.tenant.MultiTenantConfigBase;
import org.skife.config.TimeSpan;
public class MultiTenantInvoiceConfig extends MultiTenantConfigBase implements InvoiceConfig {
- private final Map<String, Method> methodsCache = new HashMap<String, Method>();
private final InvoiceConfig staticConfig;
@Inject
@@ -95,21 +91,7 @@ public class MultiTenantInvoiceConfig extends MultiTenantConfigBase implements I
}
@Override
- protected Method getConfigStaticMethod(final String methodName) {
- Method method = methodsCache.get(methodName);
- if (method == null) {
- synchronized (methodsCache) {
- method = methodsCache.get(methodName);
- if (method == null) {
- try {
- method = InvoiceConfig.class.getMethod(methodName, InternalTenantContext.class);
- methodsCache.put(methodName, method);
- } catch (final NoSuchMethodException e) {
- throw new RuntimeException(e);
- }
- }
- }
- }
- return method;
+ protected Class<? extends KillbillConfig> getConfigClass() {
+ return InvoiceConfig.class;
}
}
diff --git a/payment/src/main/java/org/killbill/billing/payment/config/MultiTenantPaymentConfig.java b/payment/src/main/java/org/killbill/billing/payment/config/MultiTenantPaymentConfig.java
index d2f28ab..6e56c52 100644
--- a/payment/src/main/java/org/killbill/billing/payment/config/MultiTenantPaymentConfig.java
+++ b/payment/src/main/java/org/killbill/billing/payment/config/MultiTenantPaymentConfig.java
@@ -17,16 +17,14 @@
package org.killbill.billing.payment.config;
-import java.lang.reflect.Method;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import javax.inject.Inject;
import javax.inject.Named;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.payment.glue.PaymentModule;
+import org.killbill.billing.util.config.definition.KillbillConfig;
import org.killbill.billing.util.config.definition.PaymentConfig;
import org.killbill.billing.util.config.tenant.CacheConfig;
import org.killbill.billing.util.config.tenant.MultiTenantConfigBase;
@@ -35,7 +33,6 @@ import org.skife.config.TimeSpan;
public class MultiTenantPaymentConfig extends MultiTenantConfigBase implements PaymentConfig {
- private final Map<String, Method> methodsCache = new HashMap<String, Method>();
private final PaymentConfig staticConfig;
@Inject
@@ -159,21 +156,7 @@ public class MultiTenantPaymentConfig extends MultiTenantConfigBase implements P
}
@Override
- protected Method getConfigStaticMethod(final String methodName) {
- Method method = methodsCache.get(methodName);
- if (method == null) {
- synchronized (methodsCache) {
- method = methodsCache.get(methodName);
- if (method == null) {
- try {
- method = PaymentConfig.class.getMethod(methodName, InternalTenantContext.class);
- methodsCache.put(methodName, method);
- } catch (final NoSuchMethodException e) {
- throw new RuntimeException(e);
- }
- }
- }
- }
- return method;
+ protected Class<? extends KillbillConfig> getConfigClass() {
+ return PaymentConfig.class;
}
}
diff --git a/profiles/killbill/src/main/java/org/killbill/billing/server/config/MultiTenantNotificationConfig.java b/profiles/killbill/src/main/java/org/killbill/billing/server/config/MultiTenantNotificationConfig.java
index bc44abb..08ffd8a 100644
--- a/profiles/killbill/src/main/java/org/killbill/billing/server/config/MultiTenantNotificationConfig.java
+++ b/profiles/killbill/src/main/java/org/killbill/billing/server/config/MultiTenantNotificationConfig.java
@@ -24,6 +24,7 @@ import java.util.Map;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.payment.glue.PaymentModule;
+import org.killbill.billing.util.config.definition.KillbillConfig;
import org.killbill.billing.util.config.definition.NotificationConfig;
import org.killbill.billing.util.config.tenant.CacheConfig;
import org.killbill.billing.util.config.tenant.MultiTenantConfigBase;
@@ -45,25 +46,6 @@ public class MultiTenantNotificationConfig extends MultiTenantConfigBase impleme
}
@Override
- protected Method getConfigStaticMethod(final String methodName) {
- Method method = methodsCache.get(methodName);
- if (method == null) {
- synchronized (methodsCache) {
- method = methodsCache.get(methodName);
- if (method == null) {
- try {
- method = NotificationConfig.class.getMethod(methodName, InternalTenantContext.class);
- methodsCache.put(methodName, method);
- } catch (final NoSuchMethodException e) {
- throw new RuntimeException(e);
- }
- }
- }
- }
- return method;
- }
-
- @Override
public List<TimeSpan> getPushNotificationsRetries() {
return staticConfig.getPushNotificationsRetries();
}
@@ -76,4 +58,9 @@ public class MultiTenantNotificationConfig extends MultiTenantConfigBase impleme
}
return getPushNotificationsRetries();
}
+
+ @Override
+ protected Class<? extends KillbillConfig> getConfigClass() {
+ return NotificationConfig.class;
+ }
}
diff --git a/util/src/main/java/org/killbill/billing/util/config/tenant/MultiTenantConfigBase.java b/util/src/main/java/org/killbill/billing/util/config/tenant/MultiTenantConfigBase.java
index 87f0b0a..39562ee 100644
--- a/util/src/main/java/org/killbill/billing/util/config/tenant/MultiTenantConfigBase.java
+++ b/util/src/main/java/org/killbill/billing/util/config/tenant/MultiTenantConfigBase.java
@@ -18,9 +18,12 @@
package org.killbill.billing.util.config.tenant;
import java.lang.reflect.Method;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.killbill.billing.callcontext.InternalTenantContext;
+import org.killbill.billing.util.config.definition.KillbillConfig;
import org.skife.config.Config;
import org.skife.config.Separator;
import org.skife.config.TimeSpan;
@@ -31,6 +34,7 @@ import com.google.common.collect.Iterables;
public abstract class MultiTenantConfigBase {
+ private final Map<String, Method> methodsCache = new HashMap<String, Method>();
protected final CacheConfig cacheConfig;
private final static Function<String, Integer> INT_CONVERTER = new Function<String, Integer>() {
@@ -107,5 +111,23 @@ public abstract class MultiTenantConfigBase {
return ImmutableList.copyOf(value.split(separator == null ? Separator.DEFAULT : separator.value()));
}
- protected abstract Method getConfigStaticMethod(final String methodName);
+ protected Method getConfigStaticMethod(final String methodName) {
+ Method method = methodsCache.get(methodName);
+ if (method == null) {
+ synchronized (methodsCache) {
+ method = methodsCache.get(methodName);
+ if (method == null) {
+ try {
+ method = getConfigClass().getMethod(methodName, InternalTenantContext.class);
+ methodsCache.put(methodName, method);
+ } catch (final NoSuchMethodException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+ return method;
+ }
+
+ protected abstract Class<? extends KillbillConfig> getConfigClass();
}