killbill-uncached

payment: add check for presence of default payment method Signed-off-by:

5/1/2014 5:15:51 PM

Details

diff --git a/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java b/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java
index 150d7d8..615cbff 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java
@@ -381,7 +381,8 @@ public class DirectPaymentProcessor extends ProcessorBase {
                                                                                                                   final DirectPaymentModelDao paymentModelDao;
                                                                                                                   final DirectPaymentTransactionModelDao paymentTransactionModelDao;
                                                                                                                   if (directPaymentId == null) {
-                                                                                                                      final DirectPaymentModelDao pmd = new DirectPaymentModelDao(utcNow, utcNow, account.getId(), account.getPaymentMethodId(), externalKey);
+                                                                                                                      final UUID paymentMethodId = getDefaultPaymentMethodId(account);
+                                                                                                                      final DirectPaymentModelDao pmd = new DirectPaymentModelDao(utcNow, utcNow, account.getId(), paymentMethodId, externalKey);
                                                                                                                       final DirectPaymentTransactionModelDao ptmd = new DirectPaymentTransactionModelDao(utcNow, utcNow, pmd.getId(),
                                                                                                                                                                                                          transactionType, utcNow, PaymentStatus.UNKNOWN,
                                                                                                                                                                                                          amount, currency, null, null);
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/ProcessorBase.java b/payment/src/main/java/org/killbill/billing/payment/core/ProcessorBase.java
index 978cc3d..2de5da9 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/ProcessorBase.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/ProcessorBase.java
@@ -138,11 +138,16 @@ public abstract class ProcessorBase {
     }
 
     protected PaymentPluginApi getPaymentProviderPlugin(final Account account, final InternalTenantContext context) throws PaymentApiException {
+        final UUID paymentMethodId = getDefaultPaymentMethodId(account);
+        return getPaymentProviderPlugin(paymentMethodId, context);
+    }
+
+    protected UUID getDefaultPaymentMethodId(final Account account) throws PaymentApiException {
         final UUID paymentMethodId = account.getPaymentMethodId();
         if (paymentMethodId == null) {
             throw new PaymentApiException(ErrorCode.PAYMENT_NO_DEFAULT_PAYMENT_METHOD, account.getId());
         }
-        return getPaymentProviderPlugin(paymentMethodId, context);
+        return paymentMethodId;
     }
 
     protected void postPaymentEvent(final BusInternalEvent ev, final UUID accountId, final InternalCallContext context) {