killbill-aplcache

Payment cleanup-- follow up

5/23/2012 2:46:51 PM

Details

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 77eeadc..8bb7692 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
@@ -17,7 +17,6 @@
 package com.ning.billing.payment.api;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
 
 import java.util.List;
 import java.util.UUID;
diff --git a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
index 200eb74..e19b92d 100644
--- a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
@@ -55,10 +55,11 @@ public class RequestProcessor {
 
     public static final String PAYMENT_PROVIDER_KEY = "paymentProvider";
 
+    /*
     private final static int NB_PAYMENT_THREADS = 3; // STEPH
     private final static String PAYMENT_GROUP_NAME = "payment-grp";
     private final static String PAYMENT_TH_NAME = "payment-th";
-
+*/
 
     private final AccountUserApi accountUserApi;
     private final PaymentApi paymentApi;
diff --git a/payment/src/main/java/com/ning/billing/payment/retry/FailedPaymentRetryService.java b/payment/src/main/java/com/ning/billing/payment/retry/FailedPaymentRetryService.java
index 405be41..37b4632 100644
--- a/payment/src/main/java/com/ning/billing/payment/retry/FailedPaymentRetryService.java
+++ b/payment/src/main/java/com/ning/billing/payment/retry/FailedPaymentRetryService.java
@@ -28,6 +28,9 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.inject.Inject;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountApiException;
+import com.ning.billing.account.api.AccountUserApi;
 import com.ning.billing.config.PaymentConfig;
 import com.ning.billing.payment.api.PaymentApi;
 import com.ning.billing.payment.api.PaymentApiException;
@@ -52,14 +55,17 @@ public class FailedPaymentRetryService implements RetryService {
     private final NotificationQueueService notificationQueueService;
     private final PaymentConfig config;
     private final PaymentApi paymentApi;
+    private final AccountUserApi accountUserApi;
     
     private NotificationQueue retryQueue;
     
     @Inject
-    public FailedPaymentRetryService(Clock clock,
-                        NotificationQueueService notificationQueueService,
-                        PaymentConfig config,
-                        PaymentApi paymentApi) {
+    public FailedPaymentRetryService(final AccountUserApi accountUserApi,
+            final Clock clock,
+            final NotificationQueueService notificationQueueService,
+            final PaymentConfig config,
+            final PaymentApi paymentApi) {
+        this.accountUserApi = accountUserApi;
         this.clock = clock;
         this.notificationQueueService = notificationQueueService;
         this.paymentApi = paymentApi;
@@ -109,13 +115,20 @@ public class FailedPaymentRetryService implements RetryService {
     private void retry(UUID paymentAttemptId, CallContext context) {
         try {
             PaymentInfoEvent paymentInfo = paymentApi.getPaymentInfoForPaymentAttemptId(paymentAttemptId);
+            if (paymentInfo == null) {
+                log.error(String.format("Failed to retry payment for paymentId %s: no such PaymentInfo", paymentAttemptId));
+                return;
+            }
             if (paymentInfo != null && PaymentStatus.Processed.equals(PaymentStatus.valueOf(paymentInfo.getStatus()))) {
                 return;
             }
-            // STEPH
-            paymentApi.createPaymentForPaymentAttempt(null, paymentAttemptId, context);
+            
+            Account account = accountUserApi.getAccountById(paymentInfo.getAccountId());
+            paymentApi.createPaymentForPaymentAttempt(account.getExternalKey(), paymentAttemptId, context);
         } catch (PaymentApiException e) {
             log.error(String.format("Failed to retry payment for %s", paymentAttemptId), e);
+        } catch (AccountApiException e) {
+            log.error(String.format("Failed to retry payment for %s", paymentAttemptId), e);
         }
     }
 }
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 70ace94..e614c74 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
@@ -173,7 +173,6 @@ public class MockPaymentProviderPlugin implements PaymentProviderPlugin {
             accounts.put(account.getAccountKey(),
                 new PaymentProviderAccount.Builder()
                                           .copyFrom(account)
-                                          // STEPH
                                           .setDefaultPaymentMethod("paypal")
                                           .build());
             List<PaymentMethodInfo> paymentMethodsToUpdate = new ArrayList<PaymentMethodInfo>();