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);
}