killbill-aplcache

payment: protect PaymentTransactionInfoPluginConverter

8/11/2015 4:54:38 PM

Details

diff --git a/payment/src/main/java/org/killbill/billing/payment/core/PaymentTransactionInfoPluginConverter.java b/payment/src/main/java/org/killbill/billing/payment/core/PaymentTransactionInfoPluginConverter.java
index bcdc703..62d7ccd 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/PaymentTransactionInfoPluginConverter.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/PaymentTransactionInfoPluginConverter.java
@@ -17,12 +17,13 @@
 
 package org.killbill.billing.payment.core;
 
-import javax.annotation.Nullable;
-
 import org.killbill.automaton.OperationResult;
 import org.killbill.billing.payment.api.TransactionStatus;
+import org.killbill.billing.payment.plugin.api.PaymentPluginStatus;
 import org.killbill.billing.payment.plugin.api.PaymentTransactionInfoPlugin;
 
+import com.google.common.base.MoreObjects;
+
 //
 // Conversion between the plugin result to the payment state and transaction status
 //
@@ -30,7 +31,8 @@ public class PaymentTransactionInfoPluginConverter {
 
 
     public static TransactionStatus toTransactionStatus(final PaymentTransactionInfoPlugin paymentTransactionInfoPlugin) {
-        switch (paymentTransactionInfoPlugin.getStatus()) {
+        final PaymentPluginStatus status = MoreObjects.firstNonNull(paymentTransactionInfoPlugin.getStatus(), PaymentPluginStatus.UNDEFINED);
+        switch (status) {
             case PROCESSED:
                 return TransactionStatus.SUCCESS;
             case PENDING:
@@ -54,7 +56,8 @@ public class PaymentTransactionInfoPluginConverter {
     }
 
     public static OperationResult toOperationResult(final PaymentTransactionInfoPlugin paymentTransactionInfoPlugin) {
-        switch (paymentTransactionInfoPlugin.getStatus()) {
+        final PaymentPluginStatus status = MoreObjects.firstNonNull(paymentTransactionInfoPlugin.getStatus(), PaymentPluginStatus.UNDEFINED);
+        switch (status) {
             case PROCESSED:
                 return OperationResult.SUCCESS;
             case PENDING: