from MIFOSX-38, tidy up serialization for client and group areas.
This commit is contained in:
@@ -29,6 +29,7 @@ import org.mifosng.platform.api.data.EntityIdentifier;
|
||||
import org.mifosng.platform.api.data.NoteData;
|
||||
import org.mifosng.platform.api.data.OfficeLookup;
|
||||
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.client.service.ClientReadPlatformService;
|
||||
import org.mifosng.platform.client.service.ClientWritePlatformService;
|
||||
@@ -57,6 +58,9 @@ public class ClientsApiResource {
|
||||
|
||||
@Autowired
|
||||
private OfficeReadPlatformService officeReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
private ApiJsonSerializerService apiJsonSerializerService;
|
||||
|
||||
@GET
|
||||
@Consumes({MediaType.APPLICATION_JSON})
|
||||
@@ -83,7 +87,7 @@ public class ClientsApiResource {
|
||||
|
||||
Collection<ClientData> clients = this.clientReadPlatformService.retrieveAllIndividualClients(extraCriteria);
|
||||
|
||||
return this.apiDataConversionService.convertClientDataToJson(prettyPrint, responseParameters, clients.toArray(new ClientData[clients.size()]));
|
||||
return this.apiJsonSerializerService.serializeClientDataToJson(prettyPrint, responseParameters, clients);
|
||||
}
|
||||
|
||||
private String getClientCriteria(String sqlSearch, Integer officeId,
|
||||
@@ -150,7 +154,7 @@ public class ClientsApiResource {
|
||||
responseParameters.add("allowedOffices");
|
||||
}
|
||||
|
||||
return this.apiDataConversionService.convertClientDataToJson(prettyPrint, responseParameters, clientData);
|
||||
return this.apiJsonSerializerService.serializeClientDataToJson(prettyPrint, responseParameters, clientData);
|
||||
}
|
||||
|
||||
@GET
|
||||
@@ -171,7 +175,7 @@ public class ClientsApiResource {
|
||||
|
||||
ClientData clientData = this.clientReadPlatformService.retrieveNewClientDetails();
|
||||
|
||||
return this.apiDataConversionService.convertClientDataToJson(prettyPrint, responseParameters, clientData);
|
||||
return this.apiJsonSerializerService.serializeClientDataToJson(prettyPrint, responseParameters, clientData);
|
||||
}
|
||||
|
||||
@POST
|
||||
@@ -230,7 +234,7 @@ public class ClientsApiResource {
|
||||
|
||||
ClientLoanAccountSummaryCollectionData clientAccount = this.clientReadPlatformService.retrieveClientAccountDetails(clientId);
|
||||
|
||||
return this.apiDataConversionService.convertClientLoanAccountSummaryCollectionDataToJson(prettyPrint, responseParameters, clientAccount);
|
||||
return this.apiJsonSerializerService.serializeClientLoanAccountSummaryCollectionDataToJson(prettyPrint, responseParameters, clientAccount);
|
||||
}
|
||||
|
||||
@GET
|
||||
|
||||
@@ -23,6 +23,7 @@ import org.mifosng.platform.api.data.ClientLookup;
|
||||
import org.mifosng.platform.api.data.EntityIdentifier;
|
||||
import org.mifosng.platform.api.data.GroupData;
|
||||
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.client.service.ClientReadPlatformService;
|
||||
import org.mifosng.platform.group.service.GroupReadPlatformService;
|
||||
@@ -48,13 +49,16 @@ public class GroupsApiResource {
|
||||
@Autowired
|
||||
private ApiDataConversionService apiDataConversionService;
|
||||
|
||||
@Autowired
|
||||
private ApiJsonSerializerService apiJsonSerializerService;
|
||||
|
||||
@GET
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public String retrieveAllGroups(@Context final UriInfo uriInfo){
|
||||
|
||||
Set<String> typicalResponseParameters = new HashSet<String>(
|
||||
Arrays.asList("id", "name", "externalId", "clientMembers")
|
||||
Arrays.asList("id", "name", "externalId")
|
||||
);
|
||||
|
||||
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
@@ -66,11 +70,7 @@ public class GroupsApiResource {
|
||||
|
||||
Collection<GroupData> groups = this.groupReadPlatformService.retrieveAllGroups();
|
||||
|
||||
for (GroupData group : groups){
|
||||
group.setClientMembers(this.groupReadPlatformService.retrieveClientMembers(group.getId()));
|
||||
}
|
||||
|
||||
return this.apiDataConversionService.convertGroupDataToJson(prettyPrint, responseParameters, groups.toArray(new GroupData[groups.size()]));
|
||||
return this.apiJsonSerializerService.serializeGroupDataToJson(prettyPrint, responseParameters, groups);
|
||||
}
|
||||
|
||||
@GET
|
||||
@@ -103,7 +103,7 @@ public class GroupsApiResource {
|
||||
responseParameters.add("allowedClients");
|
||||
}
|
||||
|
||||
return this.apiDataConversionService.convertGroupDataToJson(prettyPrint, responseParameters, group);
|
||||
return this.apiJsonSerializerService.serializeGroupDataToJson(prettyPrint, responseParameters, group);
|
||||
}
|
||||
|
||||
@GET
|
||||
@@ -112,7 +112,7 @@ public class GroupsApiResource {
|
||||
@Produces({MediaType.APPLICATION_JSON})
|
||||
public String newGroupDetails(@Context final UriInfo uriInfo) {
|
||||
|
||||
Set<String> typicalResponseParameters = new HashSet<String>(Arrays.asList("id", "name", "externalId", "clientMembers", "allowedClients"));
|
||||
Set<String> typicalResponseParameters = new HashSet<String>(Arrays.asList("id", "name", "externalId", "allowedClients"));
|
||||
|
||||
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
if (responseParameters.isEmpty()) {
|
||||
@@ -122,7 +122,7 @@ public class GroupsApiResource {
|
||||
|
||||
GroupData groupData = this.groupReadPlatformService.retrieveNewGroupDetails();
|
||||
|
||||
return this.apiDataConversionService.convertGroupDataToJson(prettyPrint, responseParameters, groupData);
|
||||
return this.apiJsonSerializerService.serializeGroupDataToJson(prettyPrint, responseParameters, groupData);
|
||||
}
|
||||
|
||||
@POST
|
||||
@@ -160,5 +160,4 @@ public class GroupsApiResource {
|
||||
|
||||
return Response.ok().entity(entityIdentifier).build();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
-10
@@ -22,9 +22,6 @@ 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.ChargeData;
|
||||
import org.mifosng.platform.api.data.ClientData;
|
||||
import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData;
|
||||
import org.mifosng.platform.api.data.GroupData;
|
||||
import org.mifosng.platform.api.data.LoanAccountData;
|
||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.NewLoanData;
|
||||
@@ -33,13 +30,6 @@ import org.mifosng.platform.api.data.NoteData;
|
||||
public interface ApiDataConversionService {
|
||||
|
||||
//
|
||||
String convertClientDataToJson(boolean prettyPrint, Set<String> responseParameters, ClientData... clients);
|
||||
|
||||
String convertClientLoanAccountSummaryCollectionDataToJson(boolean prettyPrint, Set<String> responseParameters,
|
||||
ClientLoanAccountSummaryCollectionData clientAccountsData);
|
||||
|
||||
String convertGroupDataToJson(boolean prettyPrint, Set<String> responseParameters, GroupData... groups);
|
||||
|
||||
String convertNoteDataToJson(boolean prettyPrint, Set<String> responseParameters, NoteData note);
|
||||
|
||||
String convertNoteDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<NoteData> notes);
|
||||
|
||||
-104
@@ -39,9 +39,6 @@ import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand;
|
||||
import org.mifosng.platform.api.commands.UserCommand;
|
||||
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.GroupData;
|
||||
import org.mifosng.platform.api.data.LoanAccountData;
|
||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.NewLoanData;
|
||||
@@ -225,107 +222,6 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
||||
return json;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String convertClientLoanAccountSummaryCollectionDataToJson(final boolean prettyPrint, final Set<String> responseParameters,
|
||||
final ClientLoanAccountSummaryCollectionData clientAccountsData) {
|
||||
final Set<String> supportedParameters = new HashSet<String>(
|
||||
Arrays.asList("pendingApprovalLoans", "awaitingDisbursalLoans", "openLoans", "closedLoans",
|
||||
"anyLoanCount", "pendingApprovalLoanCount", "awaitingDisbursalLoanCount", "activeLoanCount", "closedLoanCount")
|
||||
);
|
||||
|
||||
final Set<String> parameterNamesToSkip = new HashSet<String>();
|
||||
|
||||
if (!responseParameters.isEmpty()) {
|
||||
if (!supportedParameters.containsAll(responseParameters)) {
|
||||
throw new UnsupportedParameterException(new ArrayList<String>(responseParameters));
|
||||
}
|
||||
|
||||
parameterNamesToSkip.addAll(supportedParameters);
|
||||
parameterNamesToSkip.removeAll(responseParameters);
|
||||
}
|
||||
|
||||
ExclusionStrategy strategy = new ParameterListExclusionStrategy(parameterNamesToSkip);
|
||||
|
||||
GsonBuilder builder = new GsonBuilder().addSerializationExclusionStrategy(strategy);
|
||||
builder.registerTypeAdapter(LocalDate.class, new JodaLocalDateAdapter());
|
||||
if (prettyPrint) {
|
||||
builder.setPrettyPrinting();
|
||||
}
|
||||
Gson gsonDeserializer = builder.create();
|
||||
|
||||
return gsonDeserializer.toJson(clientAccountsData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String convertClientDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final ClientData... clients) {
|
||||
final Set<String> supportedParameters = new HashSet<String>(
|
||||
Arrays.asList("id", "officeId", "officeName", "externalId", "firstname", "lastname", "joinedDate", "displayName", "allowedOffices")
|
||||
);
|
||||
|
||||
final Set<String> parameterNamesToSkip = new HashSet<String>();
|
||||
|
||||
if (!responseParameters.isEmpty()) {
|
||||
if (!supportedParameters.containsAll(responseParameters)) {
|
||||
throw new UnsupportedParameterException(new ArrayList<String>(responseParameters));
|
||||
}
|
||||
|
||||
parameterNamesToSkip.addAll(supportedParameters);
|
||||
parameterNamesToSkip.removeAll(responseParameters);
|
||||
}
|
||||
|
||||
ExclusionStrategy strategy = new ParameterListExclusionStrategy(parameterNamesToSkip);
|
||||
|
||||
GsonBuilder builder = new GsonBuilder().addSerializationExclusionStrategy(strategy);
|
||||
builder.registerTypeAdapter(LocalDate.class, new JodaLocalDateAdapter());
|
||||
if (prettyPrint) {
|
||||
builder.setPrettyPrinting();
|
||||
}
|
||||
Gson gsonDeserializer = builder.create();
|
||||
|
||||
String json = "";
|
||||
if (clients != null && clients.length == 1) {
|
||||
json = gsonDeserializer.toJson(clients[0]);
|
||||
} else {
|
||||
json = gsonDeserializer.toJson(clients);
|
||||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String convertGroupDataToJson(boolean prettyPrint, Set<String> responseParameters, GroupData... groups) {
|
||||
final Set<String> supportedParameters = new HashSet<String>(
|
||||
Arrays.asList("id", "name", "externalId", "clientMembers", "allowedClients")
|
||||
);
|
||||
|
||||
final Set<String> parameterNamesToSkip = new HashSet<String>();
|
||||
|
||||
if (!responseParameters.isEmpty()) {
|
||||
if (!supportedParameters.containsAll(responseParameters)) {
|
||||
throw new UnsupportedParameterException(new ArrayList<String>(responseParameters));
|
||||
}
|
||||
|
||||
parameterNamesToSkip.addAll(supportedParameters);
|
||||
parameterNamesToSkip.removeAll(responseParameters);
|
||||
}
|
||||
|
||||
ExclusionStrategy strategy = new ParameterListExclusionStrategy(parameterNamesToSkip);
|
||||
GsonBuilder builder = new GsonBuilder().addSerializationExclusionStrategy(strategy);
|
||||
if (prettyPrint) {
|
||||
builder.setPrettyPrinting();
|
||||
}
|
||||
Gson gsonDeserializer = builder.create();
|
||||
String json = "";
|
||||
|
||||
if (groups != null && groups.length == 1) {
|
||||
json = gsonDeserializer.toJson(groups[0]);
|
||||
} else {
|
||||
json = gsonDeserializer.toJson(groups);
|
||||
}
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChargeCommand convertJsonToChargeCommand(Long resourceIdentifier, String json) {
|
||||
if (StringUtils.isBlank(json)) {
|
||||
|
||||
+13
@@ -6,11 +6,14 @@ 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.ClientData;
|
||||
import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData;
|
||||
import org.mifosng.platform.api.data.ConfigurationData;
|
||||
import org.mifosng.platform.api.data.DepositAccountData;
|
||||
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.GroupData;
|
||||
import org.mifosng.platform.api.data.LoanProductData;
|
||||
import org.mifosng.platform.api.data.OfficeData;
|
||||
import org.mifosng.platform.api.data.OfficeTransactionData;
|
||||
@@ -63,4 +66,14 @@ public interface ApiJsonSerializerService {
|
||||
String serializeDepositAccountDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<DepositAccountData> accounts);
|
||||
|
||||
String serializeDepositAccountDataToJson(boolean prettyPrint, Set<String> responseParameters, DepositAccountData account);
|
||||
|
||||
String serializeClientDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<ClientData> clients);
|
||||
|
||||
String serializeClientDataToJson(boolean prettyPrint, Set<String> responseParameters, ClientData clientData);
|
||||
|
||||
String serializeClientLoanAccountSummaryCollectionDataToJson(boolean prettyPrint, Set<String> responseParameters, ClientLoanAccountSummaryCollectionData clientAccount);
|
||||
|
||||
String serializeGroupDataToJson(boolean prettyPrint, Set<String> responseParameters, Collection<GroupData> groups);
|
||||
|
||||
String serializeGroupDataToJson(boolean prettyPrint, Set<String> responseParameters, GroupData group);
|
||||
}
|
||||
+48
@@ -8,11 +8,14 @@ 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.ClientData;
|
||||
import org.mifosng.platform.api.data.ClientLoanAccountSummaryCollectionData;
|
||||
import org.mifosng.platform.api.data.ConfigurationData;
|
||||
import org.mifosng.platform.api.data.DepositAccountData;
|
||||
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.GroupData;
|
||||
import org.mifosng.platform.api.data.LoanProductData;
|
||||
import org.mifosng.platform.api.data.OfficeData;
|
||||
import org.mifosng.platform.api.data.OfficeTransactionData;
|
||||
@@ -76,6 +79,20 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ
|
||||
)
|
||||
);
|
||||
|
||||
private static final Set<String> CLIENT_DATA_PARAMETERS = new HashSet<String>(
|
||||
Arrays.asList("id", "officeId", "officeName", "externalId", "firstname", "lastname", "joinedDate", "displayName", "allowedOffices")
|
||||
);
|
||||
|
||||
private static final Set<String> CLIENT_ACCOUNTS_DATA_PARAMETERS = new HashSet<String>(
|
||||
Arrays.asList("pendingApprovalLoans", "awaitingDisbursalLoans", "openLoans", "closedLoans",
|
||||
"anyLoanCount", "pendingApprovalLoanCount", "awaitingDisbursalLoanCount", "activeLoanCount", "closedLoanCount")
|
||||
);
|
||||
|
||||
private static final Set<String> GROUP_DATA_PARAMETERS = new HashSet<String>(
|
||||
Arrays.asList("id", "name", "externalId", "clientMembers", "allowedClients")
|
||||
);
|
||||
|
||||
|
||||
private final GoogleGsonSerializerHelper helper;
|
||||
|
||||
@Autowired
|
||||
@@ -214,4 +231,35 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ
|
||||
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(SAVINGS_DEPOSIT_ACCOUNT_DATA_PARAMETERS, prettyPrint, responseParameters);
|
||||
return helper.serializedJsonFrom(gsonDeserializer, account);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serializeClientDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final Collection<ClientData> clients) {
|
||||
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(CLIENT_DATA_PARAMETERS, prettyPrint, responseParameters);
|
||||
return helper.serializedJsonFrom(gsonDeserializer, clients.toArray(new ClientData[clients.size()]));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serializeClientDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final ClientData client) {
|
||||
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(CLIENT_DATA_PARAMETERS, prettyPrint, responseParameters);
|
||||
return helper.serializedJsonFrom(gsonDeserializer, client);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serializeClientLoanAccountSummaryCollectionDataToJson(final boolean prettyPrint, final Set<String> responseParameters,
|
||||
final ClientLoanAccountSummaryCollectionData clientAccount) {
|
||||
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(CLIENT_ACCOUNTS_DATA_PARAMETERS, prettyPrint, responseParameters);
|
||||
return helper.serializedJsonFrom(gsonDeserializer, clientAccount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serializeGroupDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final Collection<GroupData> groups) {
|
||||
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(GROUP_DATA_PARAMETERS, prettyPrint, responseParameters);
|
||||
return helper.serializedJsonFrom(gsonDeserializer, groups.toArray(new GroupData[groups.size()]));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serializeGroupDataToJson(final boolean prettyPrint, final Set<String> responseParameters, final GroupData group) {
|
||||
final Gson gsonDeserializer = helper.createGsonBuilderWithParameterExclusionSerializationStrategy(GROUP_DATA_PARAMETERS, prettyPrint, responseParameters);
|
||||
return helper.serializedJsonFrom(gsonDeserializer, group);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user