From bd37a66247bb4c434c98c8502eb696cbbfae4b47 Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Tue, 21 Aug 2012 21:20:07 +0100 Subject: [PATCH] from MIFOSX-38, tidy up serialization around financial products. --- .../api/DepositProductsApiResource.java | 10 +- .../platform/api/LoanProductsApiResource.java | 10 +- .../api/SavingProductsApiResource.java | 10 +- .../ApiDataConversionService.java | 9 -- .../ApiDataConversionServiceImpl.java | 132 ------------------ .../ApiJsonSerializerService.java | 15 ++ .../GoogleGsonApiJsonSerializerService.java | 62 ++++++++ 7 files changed, 98 insertions(+), 150 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/DepositProductsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/DepositProductsApiResource.java index 7b58a3cc2..49b41466e 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/DepositProductsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/DepositProductsApiResource.java @@ -25,6 +25,7 @@ import org.mifosng.platform.api.data.DepositProductData; import org.mifosng.platform.api.data.EntityIdentifier; import org.mifosng.platform.api.data.EnumOptionData; import org.mifosng.platform.api.infrastructure.ApiDataConversionService; +import org.mifosng.platform.api.infrastructure.ApiJsonSerializerService; import org.mifosng.platform.api.infrastructure.ApiParameterHelper; import org.mifosng.platform.currency.service.CurrencyReadPlatformService; import org.mifosng.platform.loan.domain.PeriodFrequencyType; @@ -52,6 +53,9 @@ public class DepositProductsApiResource { @Autowired private ApiDataConversionService apiDataConversionService; + @Autowired + private ApiJsonSerializerService apiJsonSerializerService; + @POST @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) @@ -105,7 +109,7 @@ public class DepositProductsApiResource { boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); Collection products=this.depositProductReadPlatformService.retrieveAllDepositProducts(); - return this.apiDataConversionService.convertDepositProductDataToJson(prettyPrint, responseParameters, products.toArray(new DepositProductData[products.size()])); + return this.apiJsonSerializerService.serializeDepositProductDataToJson(prettyPrint, responseParameters, products); } @GET @@ -134,7 +138,7 @@ public class DepositProductsApiResource { productData = handleTemplateRelatedData(responseParameters, productData); } - return this.apiDataConversionService.convertDepositProductDataToJson(prettyPrint, responseParameters, productData); + return this.apiJsonSerializerService.serializeDepositProductDataToJson(prettyPrint, responseParameters, productData); } @GET @@ -161,7 +165,7 @@ public class DepositProductsApiResource { depositProduct = handleTemplateRelatedData(responseParameters, depositProduct); - return this.apiDataConversionService.convertDepositProductDataToJson(prettyPrint, responseParameters, depositProduct); + return this.apiJsonSerializerService.serializeDepositProductDataToJson(prettyPrint, responseParameters, depositProduct); } private DepositProductData handleTemplateRelatedData( diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/LoanProductsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/LoanProductsApiResource.java index 50875f62b..6adb3ea83 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/LoanProductsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/LoanProductsApiResource.java @@ -21,6 +21,7 @@ import org.mifosng.platform.api.commands.LoanProductCommand; import org.mifosng.platform.api.data.EntityIdentifier; import org.mifosng.platform.api.data.LoanProductData; import org.mifosng.platform.api.infrastructure.ApiDataConversionService; +import org.mifosng.platform.api.infrastructure.ApiJsonSerializerService; import org.mifosng.platform.api.infrastructure.ApiParameterHelper; import org.mifosng.platform.loanproduct.service.LoanProductReadPlatformService; import org.mifosng.platform.loanproduct.service.LoanProductWritePlatformService; @@ -41,6 +42,9 @@ public class LoanProductsApiResource { @Autowired private ApiDataConversionService apiDataConversionService; + + @Autowired + private ApiJsonSerializerService apiJsonSerializerService; @POST @Consumes({MediaType.APPLICATION_JSON}) @@ -74,7 +78,7 @@ public class LoanProductsApiResource { Collection products = this.loanProductReadPlatformService.retrieveAllLoanProducts(); - return this.apiDataConversionService.convertLoanProductDataToJson(prettyPrint, responseParameters, products.toArray(new LoanProductData[products.size()])); + return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, products); } /* @@ -106,7 +110,7 @@ public class LoanProductsApiResource { LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveNewLoanProductDetails(); - return this.apiDataConversionService.convertLoanProductDataToJson(prettyPrint, responseParameters, loanProduct); + return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, loanProduct); } @GET @@ -137,7 +141,7 @@ public class LoanProductsApiResource { "repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions")); } - return this.apiDataConversionService.convertLoanProductDataToJson(prettyPrint, responseParameters, loanProduct); + return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, loanProduct); } @PUT diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/SavingProductsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/SavingProductsApiResource.java index 1ca2ac0de..a3dd2d34c 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/SavingProductsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/SavingProductsApiResource.java @@ -22,6 +22,7 @@ import org.mifosng.platform.api.commands.SavingProductCommand; import org.mifosng.platform.api.data.EntityIdentifier; import org.mifosng.platform.api.data.SavingProductData; import org.mifosng.platform.api.infrastructure.ApiDataConversionService; +import org.mifosng.platform.api.infrastructure.ApiJsonSerializerService; import org.mifosng.platform.api.infrastructure.ApiParameterHelper; import org.mifosng.platform.savingproduct.service.SavingProductReadPlatformService; import org.mifosng.platform.savingproduct.service.SavingProductWritePlatformService; @@ -43,6 +44,9 @@ public class SavingProductsApiResource { @Autowired private ApiDataConversionService apiDataConversionService; + @Autowired + private ApiJsonSerializerService apiJsonSerializerService; + @POST @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) @@ -82,7 +86,7 @@ public class SavingProductsApiResource { Collection products = this.savingProductReadPlatformService.retrieveAllSavingProducts(); - return this.apiDataConversionService.convertSavingProductDataToJson(prettyPrint, responseParameters, products.toArray(new SavingProductData[products.size()])); + return this.apiJsonSerializerService.serializeSavingProductDataToJson(prettyPrint, responseParameters, products); } @GET @@ -106,7 +110,7 @@ public class SavingProductsApiResource { SavingProductData savingProduct = this.savingProductReadPlatformService.retrieveSavingProduct(productId); - return this.apiDataConversionService.convertSavingProductDataToJson(prettyPrint, responseParameters, savingProduct); + return this.apiJsonSerializerService.serializeSavingProductDataToJson(prettyPrint, responseParameters, savingProduct); } @GET @@ -126,7 +130,7 @@ public class SavingProductsApiResource { SavingProductData savingProduct = this.savingProductReadPlatformService.retrieveNewSavingProductDetails(); - return this.apiDataConversionService.convertSavingProductDataToJson(prettyPrint, responseParameters, savingProduct); + return this.apiJsonSerializerService.serializeSavingProductDataToJson(prettyPrint, responseParameters, savingProduct); } @DELETE 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 2d2cd5f25..b2c84e285 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 @@ -25,14 +25,11 @@ import org.mifosng.platform.api.data.ChargeData; import org.mifosng.platform.api.data.ClientData; import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.data.DepositAccountData; -import org.mifosng.platform.api.data.DepositProductData; import org.mifosng.platform.api.data.GroupData; import org.mifosng.platform.api.data.LoanAccountData; -import org.mifosng.platform.api.data.LoanProductData; 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.data.SavingProductData; public interface ApiDataConversionService { @@ -48,12 +45,6 @@ public interface ApiDataConversionService { String convertNoteDataToJson(boolean prettyPrint, Set responseParameters, Collection notes); - String convertLoanProductDataToJson(boolean prettyPrint, Set responseParameters, LoanProductData... products); - - String convertSavingProductDataToJson(boolean prettyPrint, Set responseParameters, SavingProductData... products); - - String convertDepositProductDataToJson(boolean prettyPrint, Set responseParameters, DepositProductData... products); - String convertDepositAccountDataToJson(boolean prettyPrint, Set responseParameters, DepositAccountData... accounts); String convertNewLoanDataToJson(boolean prettyPrint, Set responseParameters, NewLoanData newLoanData); 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 a2bee6880..65e1c0368 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 @@ -42,14 +42,11 @@ import org.mifosng.platform.api.data.ChargeData; import org.mifosng.platform.api.data.ClientData; import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData; import org.mifosng.platform.api.data.DepositAccountData; -import org.mifosng.platform.api.data.DepositProductData; import org.mifosng.platform.api.data.GroupData; import org.mifosng.platform.api.data.LoanAccountData; -import org.mifosng.platform.api.data.LoanProductData; 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.data.SavingProductData; import org.mifosng.platform.api.errorhandling.InvalidJsonException; import org.mifosng.platform.api.errorhandling.UnsupportedParameterException; import org.mifosng.platform.exceptions.PlatformApiDataValidationException; @@ -180,49 +177,6 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService { return gsonDeserializer.toJson(newLoanData); } - @Override - public String convertLoanProductDataToJson(final boolean prettyPrint, final Set responseParameters, final LoanProductData... products) { - final Set supportedParameters = new HashSet( - Arrays.asList("id", "name", "description", "fundId", "fundName", "transactionProcessingStrategyId", "transactionProcessingStrategyName", - "principal", "inArrearsTolerance", "numberOfRepayments", - "repaymentEvery", "interestRatePerPeriod", "annualInterestRate", - "repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType", - "createdOn", "lastModifedOn", - "currencyOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions", - "repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions") - ); - - 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 (products != null && products.length == 1) { - json = gsonDeserializer.toJson(products[0]); - } else { - json = gsonDeserializer.toJson(products); - } - - return json; - } - @Override public String convertNoteDataToJson(boolean prettyPrint, Set responseParameters, Collection notes) { final boolean returnAsArray = true; @@ -1297,46 +1251,6 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService { interestCompoundedEvery, interestCompoundedEveryPeriodType, commencementDate, renewalAllowed, preClosureAllowed); } - @Override - public String convertSavingProductDataToJson( - final boolean prettyPrint, - final Set responseParameters, - final SavingProductData... products) { - - Set supportedParameters = new HashSet( - Arrays.asList("id", "name", "description","createdOn", "lastModifedOn","interestRate","currencyCode","digitsAfterDecimal", "currencyOptions", "minimumBalance","maximumBalance")); - - 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 (products != null && products.length == 1) { - json = gsonDeserializer.toJson(products[0]); - } else { - json = gsonDeserializer.toJson(products); - } - - return json; - } - @Override public DepositProductCommand convertJsonToDepositProductCommand(final Long resourceIdentifier, final String json) { @@ -1383,52 +1297,6 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService { canRenew, canPreClose, preClosureInterestRate); } - @Override - public String convertDepositProductDataToJson(boolean prettyPrint, - Set responseParameters, DepositProductData... products) { - - Set supportedParameters = new HashSet( - Arrays.asList("currencyOptions", "interestCompoundedEveryPeriodTypeOptions", - "id", "externalId", "name", "description","createdOn", "lastModifedOn","currencyCode","digitsAfterDecimal", - "minimumBalance","maximumBalance","tenureInMonths","maturityDefaultInterestRate","maturityMinInterestRate", - "maturityMaxInterestRate", "interestCompoundedEvery", "interestCompoundedEveryPeriodType", - "renewalAllowed","preClosureAllowed","preClosureInterestRate")); - - final Set parameterNamesToSkip = new HashSet(); - - if (!responseParameters.isEmpty()) { - - // strip out all know support params from expected response to see if unsupported parameters requested for response. - Set differentParametersSet = new HashSet(responseParameters); - differentParametersSet.removeAll(supportedParameters); - - if (!differentParametersSet.isEmpty()) { - throw new UnsupportedParameterException(new ArrayList(differentParametersSet)); - } - - 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 (products != null && products.length == 1) { - json = gsonDeserializer.toJson(products[0]); - } else { - json = gsonDeserializer.toJson(products); - } - return json; - } - @Override public String convertDepositAccountDataToJson( final boolean prettyPrint, 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 84a535d70..b0e4b338f 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 @@ -7,12 +7,15 @@ import org.mifosng.platform.api.data.AdditionalFieldsSetData; import org.mifosng.platform.api.data.AppUserData; import org.mifosng.platform.api.data.AuthenticatedUserData; import org.mifosng.platform.api.data.ConfigurationData; +import org.mifosng.platform.api.data.DepositProductData; import org.mifosng.platform.api.data.FundData; import org.mifosng.platform.api.data.GenericResultsetData; +import org.mifosng.platform.api.data.LoanProductData; import org.mifosng.platform.api.data.OfficeData; import org.mifosng.platform.api.data.OfficeTransactionData; import org.mifosng.platform.api.data.PermissionData; import org.mifosng.platform.api.data.RoleData; +import org.mifosng.platform.api.data.SavingProductData; public interface ApiJsonSerializerService { @@ -43,4 +46,16 @@ public interface ApiJsonSerializerService { String serializeFundDataToJson(boolean prettyPrint, Set responseParameters, Collection funds); String serializeFundDataToJson(boolean prettyPrint, Set responseParameters, FundData fund); + + String serializeLoanProductDataToJson(boolean prettyPrint, Set responseParameters, Collection products); + + String serializeLoanProductDataToJson(boolean prettyPrint, Set responseParameters, LoanProductData loanProduct); + + String serializeSavingProductDataToJson(boolean prettyPrint, Set responseParameters, Collection products); + + String serializeSavingProductDataToJson(boolean prettyPrint, Set responseParameters, SavingProductData savingProduct); + + String serializeDepositProductDataToJson(boolean prettyPrint, Set responseParameters, Collection products); + + String serializeDepositProductDataToJson(boolean prettyPrint, Set responseParameters, DepositProductData depositProduct); } \ 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 3f11e2c2d..e6ead34e9 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 @@ -9,12 +9,15 @@ import org.mifosng.platform.api.data.AdditionalFieldsSetData; import org.mifosng.platform.api.data.AppUserData; import org.mifosng.platform.api.data.AuthenticatedUserData; import org.mifosng.platform.api.data.ConfigurationData; +import org.mifosng.platform.api.data.DepositProductData; import org.mifosng.platform.api.data.FundData; import org.mifosng.platform.api.data.GenericResultsetData; +import org.mifosng.platform.api.data.LoanProductData; import org.mifosng.platform.api.data.OfficeData; import org.mifosng.platform.api.data.OfficeTransactionData; import org.mifosng.platform.api.data.PermissionData; import org.mifosng.platform.api.data.RoleData; +import org.mifosng.platform.api.data.SavingProductData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -39,6 +42,29 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ private static final Set CONFIGURATION_DATA_PARAMETERS = new HashSet(Arrays.asList("selectedCurrencyOptions", "currencyOptions")); private static final Set FUND_DATA_PARAMETERS = new HashSet(Arrays.asList("id", "name", "externalId")); + private static final Set LOAN_PRODUCT_DATA_PARAMETERS = new HashSet( + Arrays.asList("id", "name", "description", "fundId", "fundName", "transactionProcessingStrategyId", "transactionProcessingStrategyName", + "principal", "inArrearsTolerance", "numberOfRepayments", + "repaymentEvery", "interestRatePerPeriod", "annualInterestRate", + "repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType", + "createdOn", "lastModifedOn", + "currencyOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions", + "repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions") + ); + + private static final Set SAVINGS_PRODUCT_DATA_PARAMETERS = new HashSet( + Arrays.asList("id", "name", "description","createdOn", "lastModifedOn","interestRate","currencyCode","digitsAfterDecimal", + "currencyOptions", "minimumBalance","maximumBalance") + ); + + private static final Set SAVINGS_DEPOSIT_PRODUCT_DATA_PARAMETERS = new HashSet( + Arrays.asList("currencyOptions", "interestCompoundedEveryPeriodTypeOptions", + "id", "externalId", "name", "description","createdOn", "lastModifedOn","currencyCode","digitsAfterDecimal", + "minimumBalance","maximumBalance","tenureInMonths","maturityDefaultInterestRate","maturityMinInterestRate", + "maturityMaxInterestRate", "interestCompoundedEvery", "interestCompoundedEveryPeriodType", + "renewalAllowed","preClosureAllowed","preClosureInterestRate") + ); + private final GoogleGsonSerializerHelper helper; @Autowired @@ -129,4 +155,40 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(FUND_DATA_PARAMETERS, prettyPrint, responseParameters); return helper.serializedJsonFrom(gsonDeserializer, fund); } + + @Override + public String serializeLoanProductDataToJson(final boolean prettyPrint, final Set responseParameters, final Collection products) { + final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(LOAN_PRODUCT_DATA_PARAMETERS, prettyPrint, responseParameters); + return helper.serializedJsonFrom(gsonDeserializer, products.toArray(new LoanProductData[products.size()])); + } + + @Override + public String serializeLoanProductDataToJson(final boolean prettyPrint, final Set responseParameters, final LoanProductData product) { + final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(LOAN_PRODUCT_DATA_PARAMETERS, prettyPrint, responseParameters); + return helper.serializedJsonFrom(gsonDeserializer, product); + } + + @Override + public String serializeSavingProductDataToJson(final boolean prettyPrint, final Set responseParameters, final Collection products) { + final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(SAVINGS_PRODUCT_DATA_PARAMETERS, prettyPrint, responseParameters); + return helper.serializedJsonFrom(gsonDeserializer, products.toArray(new SavingProductData[products.size()])); + } + + @Override + public String serializeSavingProductDataToJson(final boolean prettyPrint, final Set responseParameters, final SavingProductData savingProduct) { + final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(SAVINGS_PRODUCT_DATA_PARAMETERS, prettyPrint, responseParameters); + return helper.serializedJsonFrom(gsonDeserializer, savingProduct); + } + + @Override + public String serializeDepositProductDataToJson(final boolean prettyPrint, final Set responseParameters, final Collection products) { + final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(SAVINGS_DEPOSIT_PRODUCT_DATA_PARAMETERS, prettyPrint, responseParameters); + return helper.serializedJsonFrom(gsonDeserializer, products.toArray(new DepositProductData[products.size()])); + } + + @Override + public String serializeDepositProductDataToJson(final boolean prettyPrint, final Set responseParameters, final DepositProductData depositProduct) { + final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(SAVINGS_DEPOSIT_PRODUCT_DATA_PARAMETERS, prettyPrint, responseParameters); + return helper.serializedJsonFrom(gsonDeserializer, depositProduct); + } } \ No newline at end of file