Details
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PaymentMethodJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PaymentMethodJson.java
index 50fe61d..376e613 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PaymentMethodJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/PaymentMethodJson.java
@@ -25,6 +25,7 @@ import java.util.UUID;
import javax.annotation.Nullable;
+import com.google.common.collect.ImmutableList;
import org.joda.time.DateTime;
import org.killbill.billing.account.api.Account;
import org.killbill.billing.payment.api.PaymentMethod;
@@ -155,7 +156,7 @@ public class PaymentMethodJson extends JsonBase {
}
return result;
}
- return null;
+ return ImmutableList.of();
}
};
}
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/PaymentMethodProcessor.java b/payment/src/main/java/org/killbill/billing/payment/core/PaymentMethodProcessor.java
index b8bcf61..e66b2fd 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/PaymentMethodProcessor.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/PaymentMethodProcessor.java
@@ -178,7 +178,7 @@ public class PaymentMethodProcessor extends ProcessorBase {
public UUID addPaymentMethodWithControl(final String paymentMethodExternalKey, final String paymentPluginServiceName, final Account account,
final boolean setDefault, final PaymentMethodPlugin paymentMethodProps, final Iterable<PluginProperty> properties,
final List<String> paymentControlPluginNames, final CallContext callContext, final InternalCallContext context) throws PaymentApiException {
- final Iterable<PluginProperty> mergedProperties = PluginProperties.merge(paymentMethodProps.getProperties(), properties);
+ final Iterable<PluginProperty> mergedProperties = paymentMethodProps.getProperties() != null ? PluginProperties.merge(paymentMethodProps.getProperties(), properties) : properties;
return executeWithPaymentMethodControl(paymentPluginServiceName, account, mergedProperties, paymentControlPluginNames, callContext, uuidPluginNotificationDispatcher, new WithPaymentMethodControlCallback<UUID>() {
@Override
public UUID doPaymentMethodApiOperation(final String adjustedPaymentPluginServiceName, final Iterable<PluginProperty> adjustedPluginProperties) throws PaymentApiException {
diff --git a/util/src/main/java/org/killbill/billing/util/PluginProperties.java b/util/src/main/java/org/killbill/billing/util/PluginProperties.java
index c7e4e4e..28cb032 100644
--- a/util/src/main/java/org/killbill/billing/util/PluginProperties.java
+++ b/util/src/main/java/org/killbill/billing/util/PluginProperties.java
@@ -38,9 +38,11 @@ public abstract class PluginProperties {
public static Map<String, Object> toMap(final Iterable<PluginProperty>... propertiesLists) {
final Map<String, Object> mergedProperties = new HashMap<String, Object>();
for (final Iterable<PluginProperty> propertiesList : propertiesLists) {
- for (final PluginProperty pluginProperty : propertiesList) {
- if (pluginProperty.getKey() != null) {
- mergedProperties.put(pluginProperty.getKey(), pluginProperty.getValue());
+ if(propertiesList != null) {
+ for (final PluginProperty pluginProperty : propertiesList) {
+ if (pluginProperty != null && pluginProperty.getKey() != null) {
+ mergedProperties.put(pluginProperty.getKey(), pluginProperty.getValue());
+ }
}
}
}
diff --git a/util/src/test/java/org/killbill/billing/util/TestPluginProperties.java b/util/src/test/java/org/killbill/billing/util/TestPluginProperties.java
index 0978e16..e316a1b 100644
--- a/util/src/test/java/org/killbill/billing/util/TestPluginProperties.java
+++ b/util/src/test/java/org/killbill/billing/util/TestPluginProperties.java
@@ -63,6 +63,14 @@ public class TestPluginProperties extends UtilTestSuiteNoDB {
}
@Test(groups = "fast")
+ public void testToMapHandlesNull() throws Exception {
+ final Map<String, Object> properties = PluginProperties.toMap(null, pluginProperties1, pluginProperties2, null);
+ Assert.assertEquals(properties.get("baz"), (Long) 12L);
+ Assert.assertEquals(properties.get("baz2"), "something else");
+ Assert.assertEquals(properties.get("foo"), "override");
+ }
+
+ @Test(groups = "fast")
public void testBuildPluginProperties() throws Exception {
Assert.assertEquals(pluginProperties1.size(), 2);
Assert.assertEquals(pluginProperties1.get(0).getKey(), "foo");