killbill-memoizeit

jaxrs: allow empty values for Account#name and Account#email This

2/7/2015 3:16:07 PM

Details

diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
index 729d977..de1b3a6 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
@@ -303,8 +303,9 @@ public class AccountResource extends JaxRsResourceBase {
                                   @javax.ws.rs.core.Context final HttpServletRequest request,
                                   @javax.ws.rs.core.Context final UriInfo uriInfo) throws AccountApiException {
         verifyNonNullOrEmpty(json, "AccountJson body should be specified");
-        verifyNonNullOrEmpty(json.getName(), "AccountJson name needs to be set");
-        verifyNonNullOrEmpty(json.getEmail(), "AccountJson email needs to be set");
+        // Permit blank values, see https://github.com/killbill/killbill/issues/270
+        verifyNonNull(json.getName(), "AccountJson name needs to be set");
+        verifyNonNull(json.getEmail(), "AccountJson email needs to be set");
 
         final AccountData data = json.toAccountData();
         final Account account = accountUserApi.createAccount(data, context.createContext(createdBy, reason, comment, request));
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
index 76ab053..6f3bed9 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
@@ -1,7 +1,7 @@
 /*
  * Copyright 2010-2013 Ning, Inc.
- * Copyright 2014 Groupon, Inc
- * Copyright 2014 The Billing Project, LLC
+ * Copyright 2014-2015 Groupon, Inc
+ * Copyright 2014-2015 The Billing Project, LLC
  *
  * The Billing Project licenses this file to you under the Apache License, version 2.0
  * (the "License"); you may not use this file except in compliance with the
@@ -427,4 +427,14 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
             Preconditions.checkArgument(expression, errorMessage);
         }
     }
+
+    protected void verifyNonNull(final Object... elements) {
+        Preconditions.checkArgument(elements.length % 2 == 0, "%s should have an even number of elements", Arrays.toString(elements));
+        for (int i = 0; i < elements.length; i += 2) {
+            final Object argument = elements[i];
+            final Object errorMessage = elements[i + 1];
+            final boolean expression = argument != null;
+            Preconditions.checkArgument(expression, errorMessage);
+        }
+    }
 }

NEWS 2(+2 -0)

diff --git a/NEWS b/NEWS
index d4cfc7f..a807371 100644
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,11 @@
 0.13.3
     https://github.com/killbill/killbill/issues/258
     https://github.com/killbill/killbill/issues/260
+    https://github.com/killbill/killbill/issues/267
     https://github.com/killbill/killbill/issues/268
     https://github.com/killbill/killbill-commons/issues/9
     Update killbill-oss-parent to 0.9.10
+    Permit empty values for Account#name and Account#email
 
 0.13.2
     https://github.com/killbill/killbill/issues/214