FIXED: MIFOSX-38 - retrieving client notes does not return as an array when only one client note exists.

This commit is contained in:
Keith Woodlock
2012-08-21 10:42:04 +01:00
parent 28cee2ab07
commit 432332c88e
3 changed files with 19 additions and 4 deletions
@@ -252,7 +252,7 @@ public class ClientsApiResource {
Collection<NoteData> notes = this.clientReadPlatformService.retrieveAllClientNotes(clientId);
return this.apiDataConversionService.convertNoteDataToJson(prettyPrint, responseParameters, notes.toArray(new NoteData[notes.size()]));
return this.apiDataConversionService.convertNoteDataToJson(prettyPrint, responseParameters, notes);
}
@POST
@@ -1,5 +1,6 @@
package org.mifosng.platform.api.infrastructure;
import java.util.Collection;
import java.util.Set;
import org.mifosng.platform.api.commands.AdjustLoanTransactionCommand;
@@ -63,7 +64,9 @@ public interface ApiDataConversionService {
String convertGroupDataToJson(boolean prettyPrint, Set<String> responseParameters, GroupData... groups);
String convertNoteDataToJson(boolean prettyPrint, Set<String> responseParameters, NoteData... notes);
String convertNoteDataToJson(boolean prettyPrint, Set<String> responseParameters, NoteData note);
String convertNoteDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<NoteData> notes);
String convertLoanProductDataToJson(boolean prettyPrint, Set<String> responseParameters, LoanProductData... products);
@@ -8,6 +8,7 @@ import java.text.NumberFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
@@ -275,7 +276,18 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
}
@Override
public String convertNoteDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final NoteData... notes) {
public String convertNoteDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<NoteData> notes) {
final boolean returnAsArray = true;
return doConvertNoteDataToJson(prettyPrint, returnAsArray, responseParameters, notes.toArray(new NoteData[notes.size()]));
}
@Override
public String convertNoteDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final NoteData note) {
final boolean returnAsArray = false;
return doConvertNoteDataToJson(prettyPrint, returnAsArray, responseParameters, note);
}
private String doConvertNoteDataToJson(final boolean prettyPrint, final boolean returnAsArray, final Set<String> responseParameters, final NoteData... notes) {
final Set<String> supportedParameters = new HashSet<String>(
Arrays.asList("id", "clientId", "loanId", "loanTransactionId", "noteType", "note", "createdById", "createdByUsername",
"createdOn", "updatedById", "updatedByUsername", "updatedOn")
@@ -303,7 +315,7 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
Gson gsonDeserializer = builder.create();
String json = "";
if (notes != null && notes.length == 1) {
if (notes != null && notes.length == 1 && !returnAsArray) {
json = gsonDeserializer.toJson(notes[0]);
} else {
json = gsonDeserializer.toJson(notes);