killbill-uncached

api: add PaymentApi#refreshPaymentMethods for all plugins Add

5/28/2013 8:32:21 PM

Details

diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java b/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java
index 1c5d83b..baa1e58 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentApi.java
@@ -240,4 +240,16 @@ public interface PaymentApi {
     public List<PaymentMethod> refreshPaymentMethods(String pluginName, Account account, CallContext context)
             throws PaymentApiException;
 
+    /**
+     * Refresh all payment methods across all plugins
+     * <p/>
+     * This call is not atomic.
+     *
+     * @param account the account
+     * @param context the call context
+     * @return the list of payment methods for that account
+     * @throws PaymentApiException
+     */
+    public List<PaymentMethod> refreshPaymentMethods(Account account, CallContext context)
+            throws PaymentApiException;
 }
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
index 346061b..394c848 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
@@ -18,6 +18,7 @@ package com.ning.billing.payment.api;
 
 import java.math.BigDecimal;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -188,4 +189,17 @@ public class DefaultPaymentApi implements PaymentApi {
             throws PaymentApiException {
         return methodProcessor.refreshPaymentMethods(pluginName, account, internalCallContextFactory.createInternalCallContext(account.getId(), context));
     }
+
+    @Override
+    public List<PaymentMethod> refreshPaymentMethods(final Account account, final CallContext context)
+            throws PaymentApiException {
+        final InternalCallContext callContext = internalCallContextFactory.createInternalCallContext(account.getId(), context);
+
+        final List<PaymentMethod> paymentMethods = new LinkedList<PaymentMethod>();
+        for (final String pluginName : methodProcessor.getAvailablePlugins()) {
+            paymentMethods.addAll(methodProcessor.refreshPaymentMethods(pluginName, account, callContext));
+        }
+
+        return paymentMethods;
+    }
 }