killbill-memoizeit

config: simplify code Signed-off-by: Pierre-Alexandre

8/24/2016 9:39:13 PM

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();
 }