killbill-aplcache

Details

diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
index 056ce07..7e7f12b 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
@@ -89,6 +89,8 @@ import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 @Api(value = JaxrsResource.ADMIN_PATH, description = "Admin operations (will require special privileges)")
 public class AdminResource extends JaxRsResourceBase {
 
+    private static final String OK = "OK";
+
     private final AdminPaymentApi adminPaymentApi;
     private final InvoiceUserApi invoiceUserApi;
     private final TenantUserApi tenantApi;
@@ -154,28 +156,26 @@ public class AdminResource extends JaxRsResourceBase {
         // TODO Consider adding a real invoice API post 0.18.x
         final Pagination<Tag> tags = tagUserApi.searchTags(SystemTags.PARK_TAG_DEFINITION_NAME, offset, limit, callContext);
 
-        // Return the accounts still parked
         final StreamingOutput json = new StreamingOutput() {
             @Override
             public void write(final OutputStream output) throws IOException, WebApplicationException {
                 final JsonGenerator generator = mapper.getFactory().createGenerator(output);
                 generator.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
 
-                generator.writeStartArray();
+                generator.writeStartObject();
                 for (final Tag tag : tags) {
                     final UUID accountId = tag.getObjectId();
                     try {
                         invoiceUserApi.triggerInvoiceGeneration(accountId, clock.getUTCToday(), null, callContext);
+                        generator.writeStringField(accountId.toString(), OK);
                     } catch (final InvoiceApiException e) {
-                        if (e.getCode() == ErrorCode.UNEXPECTED_ERROR.getCode()) {
-                            generator.writeString(accountId.toString());
-                        }
                         if (e.getCode() != ErrorCode.INVOICE_NOTHING_TO_DO.getCode()) {
                             log.warn("Unable to trigger invoice generation for accountId='{}'", accountId);
                         }
+                        generator.writeStringField(accountId.toString(), ErrorCode.INVOICE_NOTHING_TO_DO.toString());
                     }
                 }
-                generator.writeEndArray();
+                generator.writeEndObject();
                 generator.close();
             }
         };
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAdmin.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAdmin.java
index 59d24be..4377c5a 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAdmin.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestAdmin.java
@@ -18,9 +18,8 @@
 package org.killbill.billing.jaxrs;
 
 import java.math.BigDecimal;
-import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
@@ -45,6 +44,7 @@ import org.testng.annotations.Test;
 
 import com.ning.http.client.Response;
 
+import com.fasterxml.jackson.core.type.TypeReference;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.ImmutableMultimap;
 import com.google.common.collect.Multimap;
@@ -101,7 +101,7 @@ public class TestAdmin extends TestJaxrsBase {
         final DateTime initialDate = new DateTime(2012, 4, 25, 0, 3, 42, 0);
         clock.setDeltaFromReality(initialDate.getMillis() - clock.getUTCNow().getMillis());
 
-        final Collection<UUID> accounts = new HashSet<UUID>();
+        final List<UUID> accounts = new LinkedList<UUID>();
         for (int i = 0; i < 5; i++) {
             final Account accountJson = createAccountWithDefaultPaymentMethod();
             assertNotNull(accountJson);
@@ -151,12 +151,17 @@ public class TestAdmin extends TestJaxrsBase {
 
         // Fix one account
         final Response response = triggerInvoiceGenerationForParkedAccounts(1);
-        Assert.assertEquals(response.getResponseBody(), "[]");
+        Assert.assertEquals(response.getResponseBody(), "{\"" + accounts.get(0) + "\":\"OK\"}");
         Assert.assertEquals(killBillClient.getInvoices(requestOptions).getPaginationMaxNbRecords(), 11);
 
         // Fix all accounts
         final Response response2 = triggerInvoiceGenerationForParkedAccounts(5);
-        Assert.assertEquals(response2.getResponseBody(), "[]");
+        final Map<String,String> fixedAccounts = mapper.readValue(response2.getResponseBody(), new TypeReference<Map<String,String>>() {});
+        Assert.assertEquals(fixedAccounts.size(), 4);
+        Assert.assertEquals(fixedAccounts.get(accounts.get(1).toString()), "OK");
+        Assert.assertEquals(fixedAccounts.get(accounts.get(2).toString()), "OK");
+        Assert.assertEquals(fixedAccounts.get(accounts.get(3).toString()), "OK");
+        Assert.assertEquals(fixedAccounts.get(accounts.get(4).toString()), "OK");
         Assert.assertEquals(killBillClient.getInvoices(requestOptions).getPaginationMaxNbRecords(), 15);
     }