From 4a11cb3290b4fb9851329838fb483bb262cd160b Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Wed, 22 Aug 2012 01:09:33 +0100 Subject: [PATCH] from MIFOSX-38, tidy up serialization around notes. --- .../platform/api/ClientsApiResource.java | 4 +- .../ApiDataConversionService.java | 6 --- .../ApiDataConversionServiceImpl.java | 51 ------------------- .../ApiJsonSerializerService.java | 5 ++ .../GoogleGsonApiJsonSerializerService.java | 19 ++++++- 5 files changed, 25 insertions(+), 60 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/ClientsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/ClientsApiResource.java index 214503a94..fe75b8062 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/ClientsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/ClientsApiResource.java @@ -256,7 +256,7 @@ public class ClientsApiResource { Collection notes = this.clientReadPlatformService.retrieveAllClientNotes(clientId); - return this.apiDataConversionService.convertNoteDataToJson(prettyPrint, responseParameters, notes); + return this.apiJsonSerializerService.serializeNoteDataToJson(prettyPrint, responseParameters, notes); } @POST @@ -294,7 +294,7 @@ public class ClientsApiResource { NoteData note = this.clientReadPlatformService.retrieveClientNote(clientId, noteId); - return this.apiDataConversionService.convertNoteDataToJson(prettyPrint, responseParameters, note); + return this.apiJsonSerializerService.serializeNoteDataToJson(prettyPrint, responseParameters, note); } @PUT diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionService.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionService.java index 1c1ec4c50..d964b1fe6 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionService.java @@ -1,6 +1,5 @@ package org.mifosng.platform.api.infrastructure; -import java.util.Collection; import java.util.Set; import org.mifosng.platform.api.commands.AdjustLoanTransactionCommand; @@ -25,15 +24,10 @@ import org.mifosng.platform.api.data.ChargeData; import org.mifosng.platform.api.data.LoanAccountData; import org.mifosng.platform.api.data.LoanTransactionData; import org.mifosng.platform.api.data.NewLoanData; -import org.mifosng.platform.api.data.NoteData; public interface ApiDataConversionService { // - String convertNoteDataToJson(boolean prettyPrint, Set responseParameters, NoteData note); - - String convertNoteDataToJson(boolean prettyPrint, Set responseParameters, Collection notes); - String convertNewLoanDataToJson(boolean prettyPrint, Set responseParameters, NewLoanData newLoanData); String convertLoanAccountDataToJson(boolean prettyPrint, Set responseParameters, LoanAccountData loanAccount); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java index 4fdef123f..be8983589 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiDataConversionServiceImpl.java @@ -8,7 +8,6 @@ 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; @@ -42,7 +41,6 @@ import org.mifosng.platform.api.data.ChargeData; import org.mifosng.platform.api.data.LoanAccountData; import org.mifosng.platform.api.data.LoanTransactionData; import org.mifosng.platform.api.data.NewLoanData; -import org.mifosng.platform.api.data.NoteData; import org.mifosng.platform.api.errorhandling.InvalidJsonException; import org.mifosng.platform.api.errorhandling.UnsupportedParameterException; import org.mifosng.platform.exceptions.PlatformApiDataValidationException; @@ -173,55 +171,6 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService { return gsonDeserializer.toJson(newLoanData); } - @Override - public String convertNoteDataToJson(boolean prettyPrint, Set responseParameters, Collection 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 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 responseParameters, final NoteData... notes) { - final Set supportedParameters = new HashSet( - Arrays.asList("id", "clientId", "loanId", "loanTransactionId", "noteType", "note", "createdById", "createdByUsername", - "createdOn", "updatedById", "updatedByUsername", "updatedOn") - ); - - final Set parameterNamesToSkip = new HashSet(); - - if (!responseParameters.isEmpty()) { - if (!supportedParameters.containsAll(responseParameters)) { - throw new UnsupportedParameterException(new ArrayList(responseParameters)); - } - - parameterNamesToSkip.addAll(supportedParameters); - parameterNamesToSkip.removeAll(responseParameters); - } - - ExclusionStrategy strategy = new ParameterListExclusionStrategy(parameterNamesToSkip); - - GsonBuilder builder = new GsonBuilder().addSerializationExclusionStrategy(strategy); - builder.registerTypeAdapter(LocalDate.class, new JodaLocalDateAdapter()); - builder.registerTypeAdapter(DateTime.class, new JodaDateTimeAdapter()); - if (prettyPrint) { - builder.setPrettyPrinting(); - } - Gson gsonDeserializer = builder.create(); - - String json = ""; - if (notes != null && notes.length == 1 && !returnAsArray) { - json = gsonDeserializer.toJson(notes[0]); - } else { - json = gsonDeserializer.toJson(notes); - } - - return json; - } - @Override public ChargeCommand convertJsonToChargeCommand(Long resourceIdentifier, String json) { if (StringUtils.isBlank(json)) { diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJsonSerializerService.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJsonSerializerService.java index 1932c8525..71750643a 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJsonSerializerService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJsonSerializerService.java @@ -15,6 +15,7 @@ import org.mifosng.platform.api.data.FundData; import org.mifosng.platform.api.data.GenericResultsetData; import org.mifosng.platform.api.data.GroupData; import org.mifosng.platform.api.data.LoanProductData; +import org.mifosng.platform.api.data.NoteData; import org.mifosng.platform.api.data.OfficeData; import org.mifosng.platform.api.data.OfficeTransactionData; import org.mifosng.platform.api.data.PermissionData; @@ -76,4 +77,8 @@ public interface ApiJsonSerializerService { String serializeGroupDataToJson(boolean prettyPrint, Set responseParameters, Collection groups); String serializeGroupDataToJson(boolean prettyPrint, Set responseParameters, GroupData group); + + String serializeNoteDataToJson(boolean prettyPrint, Set responseParameters, Collection notes); + + String serializeNoteDataToJson(boolean prettyPrint, Set responseParameters, NoteData note); } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/GoogleGsonApiJsonSerializerService.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/GoogleGsonApiJsonSerializerService.java index af5bddd24..dfcd35273 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/GoogleGsonApiJsonSerializerService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/GoogleGsonApiJsonSerializerService.java @@ -17,6 +17,7 @@ import org.mifosng.platform.api.data.FundData; import org.mifosng.platform.api.data.GenericResultsetData; import org.mifosng.platform.api.data.GroupData; import org.mifosng.platform.api.data.LoanProductData; +import org.mifosng.platform.api.data.NoteData; import org.mifosng.platform.api.data.OfficeData; import org.mifosng.platform.api.data.OfficeTransactionData; import org.mifosng.platform.api.data.PermissionData; @@ -91,7 +92,11 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ private static final Set GROUP_DATA_PARAMETERS = new HashSet( Arrays.asList("id", "name", "externalId", "clientMembers", "allowedClients") ); - + + private static final Set NOTE_DATA_PARAMETERS = new HashSet( + Arrays.asList("id", "clientId", "loanId", "loanTransactionId", "noteType", "note", "createdById", "createdByUsername", + "createdOn", "updatedById", "updatedByUsername", "updatedOn") + ); private final GoogleGsonSerializerHelper helper; @@ -262,4 +267,16 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(GROUP_DATA_PARAMETERS, prettyPrint, responseParameters); return helper.serializedJsonFrom(gsonDeserializer, group); } + + @Override + public String serializeNoteDataToJson(boolean prettyPrint, Set responseParameters, Collection notes) { + final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(NOTE_DATA_PARAMETERS, prettyPrint, responseParameters); + return helper.serializedJsonFrom(gsonDeserializer, notes.toArray(new NoteData[notes.size()])); + } + + @Override + public String serializeNoteDataToJson(final boolean prettyPrint, final Set responseParameters, final NoteData note) { + final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(NOTE_DATA_PARAMETERS, prettyPrint, responseParameters); + return helper.serializedJsonFrom(gsonDeserializer, note); + } } \ No newline at end of file