From b44e53c3b7acd9bc1764684695cb2013bfede245 Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Tue, 21 Aug 2012 20:45:44 +0100 Subject: [PATCH] from MIFOSX-38, tidy up serialisation around additional data and reports.2 --- .../ReadExtraDataAndReportingServiceImpl.java | 47 ++++++++----------- .../api/AdditionalFieldsApiResource.java | 8 ++-- .../platform/api/DataTableApiResource.java | 16 ++----- .../platform/api/ReportsApiResource.java | 8 ++-- .../api/data/AdditionalFieldsSetData.java | 3 ++ .../api/data/GenericResultsetData.java | 21 ++++----- .../ApiDataConversionService.java | 6 --- .../ApiDataConversionServiceImpl.java | 30 ------------ .../ApiJsonSerializerService.java | 10 +++- .../GoogleGsonApiJsonSerializerService.java | 28 +++++++---- 10 files changed, 71 insertions(+), 106 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java index d86bd3b7c..39c673490 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/ReadExtraDataAndReportingServiceImpl.java @@ -192,28 +192,26 @@ public class ReadExtraDataAndReportingServiceImpl implements private GenericResultsetData fillReportingGenericResultSet(final String sql) { - GenericResultsetData result = new GenericResultsetData(); - Connection db_connection = null; Statement db_statement = null; try { db_connection = dataSource.getConnection(); db_statement = db_connection.createStatement(); ResultSet rs = db_statement.executeQuery(sql); - + + List columnHeaders = new ArrayList(); + List resultsetDataRows = new ArrayList(); + ResultSetMetaData rsmd = rs.getMetaData(); String columnName = null; String columnValue = null; - List columnHeaders = new ArrayList(); for (int i = 0; i < rsmd.getColumnCount(); i++) { ResultsetColumnHeader rsch = new ResultsetColumnHeader(); rsch.setColumnName(rsmd.getColumnName(i + 1)); rsch.setColumnType(rsmd.getColumnTypeName(i + 1)); columnHeaders.add(rsch); } - result.setColumnHeaders(columnHeaders); - - List resultsetDataRows = new ArrayList(); + ResultsetDataRow resultsetDataRow; while (rs.next()) { resultsetDataRow = new ResultsetDataRow(); @@ -226,16 +224,13 @@ public class ReadExtraDataAndReportingServiceImpl implements resultsetDataRow.setRow(columnValues); resultsetDataRows.add(resultsetDataRow); } - result.setData(resultsetDataRows); - + + return new GenericResultsetData(columnHeaders, resultsetDataRows); } catch (SQLException e) { - throw new PlatformDataIntegrityException("error.msg.sql.error", - e.getMessage(), "Sql: " + sql); + throw new PlatformDataIntegrityException("error.msg.sql.error", e.getMessage(), "Sql: " + sql); } finally { dbClose(db_statement, db_connection); } - return result; - } private String getSQLtoRun(final String name, final String type, @@ -470,10 +465,7 @@ public class ReadExtraDataAndReportingServiceImpl implements return result; } - private GenericResultsetData fillExtraDataGenericResultSet(String type, - String set, Long id) { - - GenericResultsetData result = new GenericResultsetData(); + private GenericResultsetData fillExtraDataGenericResultSet(final String type, final String set, final Long id) { Connection db_connection = null; Statement db_statement1 = null; @@ -487,11 +479,14 @@ public class ReadExtraDataAndReportingServiceImpl implements ResultSet rsmd = db_statement1.executeQuery(sql); + List columnHeaders = null; + List resultsetDataRows = null; + if (rsmd.next()) { String fullDatasetName = getFullDatasetName(type, set); db_statement2 = db_connection.createStatement(); - List columnHeaders = new ArrayList(); + columnHeaders = new ArrayList(); Boolean firstColumn = true; Integer allowedListId; String selectFieldList = ""; @@ -528,8 +523,7 @@ public class ReadExtraDataAndReportingServiceImpl implements } columnHeaders.add(rsch); } while (rsmd.next()); - result.setColumnHeaders(columnHeaders); - + sql = "select " + selectFieldList + " from `" + type + "` t left join `" + fullDatasetName + "` s on s.id = t.id " + " where t.id = " + id; @@ -540,7 +534,7 @@ public class ReadExtraDataAndReportingServiceImpl implements if (rs.next()) { String columnName = null; String columnValue = null; - List resultsetDataRows = new ArrayList(); + resultsetDataRows = new ArrayList(); ResultsetDataRow resultsetDataRow; do { resultsetDataRow = new ResultsetDataRow(); @@ -554,13 +548,15 @@ public class ReadExtraDataAndReportingServiceImpl implements resultsetDataRow.setRow(columnValues); resultsetDataRows.add(resultsetDataRow); } while (rs.next()); - result.setData(resultsetDataRows); } else { throw new AdditionalFieldsNotFoundException(type, id); } } else { throw new AdditionalFieldsNotFoundException(type, set); } + + return new GenericResultsetData(columnHeaders, resultsetDataRows); + } catch (SQLException e) { throw new PlatformDataIntegrityException("error.msg.sql.error", e.getMessage(), "Additional Fields Type: " + type @@ -570,8 +566,6 @@ public class ReadExtraDataAndReportingServiceImpl implements dbClose(db_statement3, null); dbClose(db_statement1, db_connection); } - return result; - } private String getFullDatasetName(final String type, final String set) { @@ -780,7 +774,7 @@ public class ReadExtraDataAndReportingServiceImpl implements } private void dbClose(Statement db_statement, Connection db_connection) { - logger.info("dbClose"); + logger.debug("dbClose"); try { if (db_statement != null) { db_statement.close(); @@ -791,8 +785,7 @@ public class ReadExtraDataAndReportingServiceImpl implements db_connection = null; } } catch (SQLException e) { - throw new PlatformDataIntegrityException("error.msg.sql.error", - e.getMessage(), "Error closing database connection"); + throw new PlatformDataIntegrityException("error.msg.sql.error", e.getMessage(), "Error closing database connection"); } } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/AdditionalFieldsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/AdditionalFieldsApiResource.java index f80eea3fa..5ee1a81ee 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/AdditionalFieldsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/AdditionalFieldsApiResource.java @@ -28,7 +28,7 @@ import org.mifosng.platform.api.data.AdditionalFieldsSetData; import org.mifosng.platform.api.data.ApiParameterError; import org.mifosng.platform.api.data.EntityIdentifier; import org.mifosng.platform.api.data.GenericResultsetData; -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.exceptions.PlatformApiDataValidationException; import org.slf4j.Logger; @@ -48,7 +48,7 @@ public class AdditionalFieldsApiResource { private ReadExtraDataAndReportingService readExtraDataAndReportingService; @Autowired - private ApiDataConversionService apiDataConversionService; + private ApiJsonSerializerService apiJsonSerializerService; @GET @Consumes({MediaType.APPLICATION_JSON}) @@ -58,7 +58,7 @@ public class AdditionalFieldsApiResource { List result = this.readExtraDataAndReportingService.retrieveExtraDatasetNames(type); boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); - return this.apiDataConversionService.convertAdditionalFieldsSetDataToJson(prettyPrint, result.toArray(new AdditionalFieldsSetData[result.size()])); + return this.apiJsonSerializerService.serializeAdditionalFieldsSetDataToJson(prettyPrint, result); } @GET @@ -73,7 +73,7 @@ public class AdditionalFieldsApiResource { GenericResultsetData result = this.readExtraDataAndReportingService.retrieveExtraData(type, set, id); boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters()); - return this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result); + return this.apiJsonSerializerService.serializeGenericResultsetDataToJson(prettyPrint, result); } catch (InvalidSqlException e) { List dataValidationErrors = new ArrayList(); ApiParameterError error = ApiParameterError.parameterError( diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/DataTableApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/DataTableApiResource.java index 62f62d479..2873f8de4 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/DataTableApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/DataTableApiResource.java @@ -9,17 +9,12 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.UriInfo; import org.mifosng.platform.InvalidSqlException; import org.mifosng.platform.ReadExtraDataAndReportingService; import org.mifosng.platform.api.data.ApiParameterError; -import org.mifosng.platform.api.infrastructure.ApiDataConversionService; import org.mifosng.platform.exceptions.PlatformApiDataValidationException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -29,15 +24,11 @@ import org.springframework.stereotype.Component; @Scope("singleton") public class DataTableApiResource { - private final static Logger logger = LoggerFactory.getLogger(DataTableApiResource.class); +// private final static Logger logger = LoggerFactory.getLogger(DataTableApiResource.class); @Autowired private ReadExtraDataAndReportingService readExtraDataAndReportingService; - @Autowired - private ApiDataConversionService apiDataConversionService; - - @GET @Path("{datatable}") @Consumes({MediaType.APPLICATION_JSON}) @@ -45,8 +36,9 @@ public class DataTableApiResource { public String extraData(@PathParam("datatable") final String datatable, @QueryParam("sqlFields") final String sqlFields, @QueryParam("sqlSearch") final String sqlSearch, - @QueryParam("sqlOrder") final String sqlOrder, - @Context final UriInfo uriInfo) { + @QueryParam("sqlOrder") final String sqlOrder +// ,@Context final UriInfo uriInfo + ) { try { //GenericResultsetData result = this.readExtraDataAndReportingService.retrieveDataTable(datatable); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java index b958c57e5..7a03f1a63 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/ReportsApiResource.java @@ -18,7 +18,7 @@ import javax.ws.rs.core.UriInfo; import org.mifosng.platform.ReadExtraDataAndReportingService; import org.mifosng.platform.api.data.GenericResultsetData; -import org.mifosng.platform.api.infrastructure.ApiDataConversionService; +import org.mifosng.platform.api.infrastructure.ApiJsonSerializerService; import org.mifosng.platform.api.infrastructure.ApiParameterHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; @@ -33,7 +33,7 @@ public class ReportsApiResource { private ReadExtraDataAndReportingService readExtraDataAndReportingService; @Autowired - private ApiDataConversionService apiDataConversionService; + private ApiJsonSerializerService apiJsonSerializerService; @GET @Consumes({MediaType.APPLICATION_JSON}) @@ -48,7 +48,7 @@ public class ReportsApiResource { if (!exportCsv) { GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(".", ".", extractedQueryParams); - final String json = this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result); + final String json = this.apiJsonSerializerService.serializeGenericResultsetDataToJson(prettyPrint, result); return Response.ok().entity(json).build(); } @@ -93,7 +93,7 @@ public class ReportsApiResource { GenericResultsetData result = this.readExtraDataAndReportingService.retrieveGenericResultset(reportName, parameterTypeValue, reportParams); - final String json = this.apiDataConversionService.convertGenericResultsetDataToJson(prettyPrint, result); + final String json = this.apiJsonSerializerService.serializeGenericResultsetDataToJson(prettyPrint, result); return Response.ok().entity(json).type(MediaType.APPLICATION_JSON).build(); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSetData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSetData.java index d44c22c0a..2da80448d 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSetData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/AdditionalFieldsSetData.java @@ -1,5 +1,8 @@ package org.mifosng.platform.api.data; +/** + * Immutable data object for 'additional data'. + */ public class AdditionalFieldsSetData { private final Integer id; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultsetData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultsetData.java index e207836ff..27176c5ac 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultsetData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/GenericResultsetData.java @@ -1,30 +1,25 @@ package org.mifosng.platform.api.data; -import java.util.ArrayList; import java.util.List; +/** + * Immutable data object for generic resultset data. + */ public class GenericResultsetData { - private List columnHeaders = new ArrayList(); - private List data = new ArrayList(); + private final List columnHeaders; + private final List data; - public GenericResultsetData() { - + public GenericResultsetData(final List columnHeaders, final List resultsetDataRows) { + this.columnHeaders = columnHeaders; + this.data = resultsetDataRows; } public List getColumnHeaders() { return columnHeaders; } - public void setColumnHeaders(List columnHeaders) { - this.columnHeaders = columnHeaders; - } - public List getData() { return data; } - - public void setData(List data) { - this.data = data; - } } \ No newline at end of file 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 3469fdfe0..2d2cd5f25 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 @@ -21,13 +21,11 @@ import org.mifosng.platform.api.commands.RoleCommand; import org.mifosng.platform.api.commands.SavingProductCommand; import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; import org.mifosng.platform.api.commands.UserCommand; -import org.mifosng.platform.api.data.AdditionalFieldsSetData; 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.GenericResultsetData; import org.mifosng.platform.api.data.GroupData; import org.mifosng.platform.api.data.LoanAccountData; import org.mifosng.platform.api.data.LoanProductData; @@ -63,10 +61,6 @@ public interface ApiDataConversionService { String convertLoanAccountDataToJson(boolean prettyPrint, Set responseParameters, LoanAccountData loanAccount); String convertLoanTransactionDataToJson(boolean prettyPrint, Set responseParameters, LoanTransactionData... transactions); - - String convertAdditionalFieldsSetDataToJson(boolean prettyPrint, AdditionalFieldsSetData... additionalFields); - - String convertGenericResultsetDataToJson(boolean prettyPrint, GenericResultsetData result); // ChargeCommand convertJsonToChargeCommand(Long resourceIdentifier, String json); 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 f8e721aee..a2bee6880 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 @@ -37,14 +37,12 @@ import org.mifosng.platform.api.commands.RoleCommand; import org.mifosng.platform.api.commands.SavingProductCommand; import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand; import org.mifosng.platform.api.commands.UserCommand; -import org.mifosng.platform.api.data.AdditionalFieldsSetData; import org.mifosng.platform.api.data.ApiParameterError; 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.GenericResultsetData; import org.mifosng.platform.api.data.GroupData; import org.mifosng.platform.api.data.LoanAccountData; import org.mifosng.platform.api.data.LoanProductData; @@ -77,34 +75,6 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService { gsonConverter = new Gson(); } - @Override - public String convertGenericResultsetDataToJson(final boolean prettyPrint, final GenericResultsetData result) { - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(LocalDate.class, new JodaLocalDateAdapter()); - builder.registerTypeAdapter(DateTime.class, new JodaDateTimeAdapter()); - - if (prettyPrint) { - builder.setPrettyPrinting(); - } - Gson gsonDeserializer = builder.create(); - - return gsonDeserializer.toJson(result); - } - - @Override - public String convertAdditionalFieldsSetDataToJson(final boolean prettyPrint, final AdditionalFieldsSetData... additionalFields) { - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(LocalDate.class, new JodaLocalDateAdapter()); - builder.registerTypeAdapter(DateTime.class, new JodaDateTimeAdapter()); - if (prettyPrint) { - builder.setPrettyPrinting(); - } - Gson gsonDeserializer = builder.create(); - - // even if only a single result, its passed back as an array. - return gsonDeserializer.toJson(additionalFields); - } - @Override public String convertLoanTransactionDataToJson(final boolean prettyPrint, final Set responseParameters, final LoanTransactionData... transactions) { final Set supportedParameters = new HashSet( 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 127804ad0..84a535d70 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 @@ -3,10 +3,12 @@ package org.mifosng.platform.api.infrastructure; import java.util.Collection; import java.util.Set; +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.FundData; +import org.mifosng.platform.api.data.GenericResultsetData; import org.mifosng.platform.api.data.OfficeData; import org.mifosng.platform.api.data.OfficeTransactionData; import org.mifosng.platform.api.data.PermissionData; @@ -14,6 +16,12 @@ import org.mifosng.platform.api.data.RoleData; public interface ApiJsonSerializerService { + String serializeAuthenticatedUserDataToJson(boolean prettyPrint, AuthenticatedUserData authenticatedUserData); + + String serializeGenericResultsetDataToJson(boolean prettyPrint, GenericResultsetData result); + + String serializeAdditionalFieldsSetDataToJson(boolean prettyPrint, Collection result); + String serializePermissionDataToJson(boolean prettyPrint, Set responseParameters, Collection permissions); String serializeRoleDataToJson(boolean prettyPrint, Set responseParameters, Collection roles); @@ -24,8 +32,6 @@ public interface ApiJsonSerializerService { String serializeAppUserDataToJson(boolean prettyPrint, Set responseParameters, AppUserData user); - String serializeAuthenticatedUserDataToJson(boolean prettyPrint, AuthenticatedUserData authenticatedUserData); - String serializeOfficeDataToJson(boolean prettyPrint, Set responseParameters, Collection offices); String serializeOfficeDataToJson(boolean prettyPrint, Set responseParameters, OfficeData office); 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 dda27d928..3f11e2c2d 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 @@ -5,10 +5,12 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; +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.FundData; +import org.mifosng.platform.api.data.GenericResultsetData; import org.mifosng.platform.api.data.OfficeData; import org.mifosng.platform.api.data.OfficeTransactionData; import org.mifosng.platform.api.data.PermissionData; @@ -34,9 +36,7 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ "hierarchy", "parentId", "parentName", "allowedParents") ); private static final Set OFFICE_TRANSACTIONS_DATA_PARAMETERS = new HashSet(Arrays.asList("transactionDate", "allowedOffices", "currencyOptions")); - 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 final GoogleGsonSerializerHelper helper; @@ -46,6 +46,24 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ this.helper = helper; } + @Override + public String serializeAuthenticatedUserDataToJson(final boolean prettyPrint, final AuthenticatedUserData authenticatedUserData) { + final Gson gsonDeserializer = helper.createGsonBuilder(prettyPrint); + return helper.serializedJsonFrom(gsonDeserializer, authenticatedUserData); + } + + @Override + public String serializeGenericResultsetDataToJson(final boolean prettyPrint, final GenericResultsetData resultsetData) { + final Gson gsonDeserializer = helper.createGsonBuilder(prettyPrint); + return helper.serializedJsonFrom(gsonDeserializer, resultsetData); + } + + @Override + public String serializeAdditionalFieldsSetDataToJson(final boolean prettyPrint, final Collection datasets) { + final Gson gsonDeserializer = helper.createGsonBuilder(prettyPrint); + return helper.serializedJsonFrom(gsonDeserializer, datasets.toArray(new AdditionalFieldsSetData[datasets.size()])); + } + @Override public String serializePermissionDataToJson(final boolean prettyPrint, final Set responseParameters, final Collection permissions) { final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(PERMISSION_DATA_PARAMETERS, prettyPrint, responseParameters); @@ -76,12 +94,6 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ return helper.serializedJsonFrom(gsonDeserializer, user); } - @Override - public String serializeAuthenticatedUserDataToJson(final boolean prettyPrint, final AuthenticatedUserData authenticatedUserData) { - final Gson gsonDeserializer = helper.createGsonBuilder(prettyPrint); - return helper.serializedJsonFrom(gsonDeserializer, authenticatedUserData); - } - @Override public String serializeOfficeDataToJson(final boolean prettyPrint, final Set responseParameters, final Collection offices) { final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(OFFICE_DATA_PARAMETERS, prettyPrint, responseParameters);