killbill-memoizeit

payment: fix pagination issues When listing objects, don't

1/28/2014 5:54:27 PM

Details

diff --git a/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java b/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java
index 78fecf3..09e4a78 100644
--- a/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/core/PaymentMethodProcessor.java
@@ -181,12 +181,12 @@ public class PaymentMethodProcessor extends ProcessorBase {
                                    new Function<PaymentMethodModelDao, PaymentMethod>() {
                                        @Override
                                        public PaymentMethod apply(final PaymentMethodModelDao paymentMethodModelDao) {
-                                           final PaymentMethodPlugin paymentMethodPlugin;
+                                           PaymentMethodPlugin paymentMethodPlugin = null;
                                            try {
                                                paymentMethodPlugin = pluginApi.getPaymentMethodDetail(paymentMethodModelDao.getAccountId(), paymentMethodModelDao.getId(), tenantContext);
-                                           } catch (PaymentPluginApiException e) {
+                                           } catch (final PaymentPluginApiException e) {
                                                log.warn("Unable to find payment method id " + paymentMethodModelDao.getId() + " in plugin " + pluginName);
-                                               return null;
+                                               // We still want to return a payment method object, even though the plugin details are missing
                                            }
 
                                            return new DefaultPaymentMethod(paymentMethodModelDao, paymentMethodPlugin);
diff --git a/payment/src/main/java/com/ning/billing/payment/core/PaymentProcessor.java b/payment/src/main/java/com/ning/billing/payment/core/PaymentProcessor.java
index 4c6d3cc..561ab25 100644
--- a/payment/src/main/java/com/ning/billing/payment/core/PaymentProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/core/PaymentProcessor.java
@@ -174,12 +174,12 @@ public class PaymentProcessor extends ProcessorBase {
                                    new Function<PaymentModelDao, Payment>() {
                                        @Override
                                        public Payment apply(final PaymentModelDao paymentModelDao) {
-                                           final PaymentInfoPlugin pluginInfo;
+                                           PaymentInfoPlugin pluginInfo = null;
                                            try {
                                                pluginInfo = pluginApi.getPaymentInfo(paymentModelDao.getAccountId(), paymentModelDao.getId(), tenantContext);
                                            } catch (final PaymentPluginApiException e) {
-                                               log.warn("Unable to find payment  id " + paymentModelDao.getId() + " in plugin " + pluginName);
-                                               return null;
+                                               log.warn("Unable to find payment id " + paymentModelDao.getId() + " in plugin " + pluginName);
+                                               // We still want to return a payment object, even though the plugin details are missing
                                            }
 
                                            return fromPaymentModelDao(paymentModelDao, pluginInfo, internalTenantContext);
diff --git a/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java b/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java
index 827590f..98e78fe 100644
--- a/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/core/RefundProcessor.java
@@ -326,15 +326,15 @@ public class RefundProcessor extends ProcessorBase {
                                    new Function<RefundModelDao, Refund>() {
                                        @Override
                                        public Refund apply(final RefundModelDao refundModelDao) {
-                                           final List<RefundInfoPlugin> refundInfoPlugins;
+                                           List<RefundInfoPlugin> refundInfoPlugins = null;
                                            try {
                                                refundInfoPlugins = pluginApi.getRefundInfo(refundModelDao.getAccountId(), refundModelDao.getId(), tenantContext);
                                            } catch (final PaymentPluginApiException e) {
                                                log.warn("Unable to find refund id " + refundModelDao.getId() + " in plugin " + pluginName);
-                                               return null;
+                                               // We still want to return a refund object, even though the plugin details are missing
                                            }
 
-                                           final RefundInfoPlugin refundInfoPlugin = findRefundInfoPlugin(refundModelDao, refundInfoPlugins);
+                                           final RefundInfoPlugin refundInfoPlugin = refundInfoPlugins == null ? null : findRefundInfoPlugin(refundModelDao, refundInfoPlugins);
                                            return new DefaultRefund(refundModelDao, refundInfoPlugin);
                                        }
                                    }