From b96764da56becfc67ba2a3392d57eaedb250174e Mon Sep 17 00:00:00 2001 From: John Woodlock Date: Sat, 26 May 2012 15:36:22 +1000 Subject: [PATCH] filtering configuration (for pretty printing purposes) --- .../org/mifosng/data/ConfigurationData.java | 3 ++ .../api/ConfigurationApiResource.java | 45 ++++++++++++------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/mifosng-data/src/main/java/org/mifosng/data/ConfigurationData.java b/mifosng-data/src/main/java/org/mifosng/data/ConfigurationData.java index e0449503e..824ed27b7 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/ConfigurationData.java +++ b/mifosng-data/src/main/java/org/mifosng/data/ConfigurationData.java @@ -6,7 +6,10 @@ import java.util.List; import javax.xml.bind.annotation.XmlRootElement; +import org.codehaus.jackson.map.annotate.JsonFilter; + @XmlRootElement(name = "configuration") +@JsonFilter("myFilter") public class ConfigurationData implements Serializable { private List selectedCurrencyOptions = new ArrayList(); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/ConfigurationApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/ConfigurationApiResource.java index 6f8ec19a7..6fade6f03 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/ConfigurationApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/ConfigurationApiResource.java @@ -5,11 +5,14 @@ import javax.ws.rs.GET; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriInfo; import org.mifosng.data.ConfigurationData; import org.mifosng.data.command.OrganisationCurrencyCommand; +import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService; import org.mifosng.platform.configuration.service.ConfigurationReadPlatformService; import org.mifosng.platform.configuration.service.ConfigurationWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; @@ -21,30 +24,42 @@ import org.springframework.stereotype.Component; @Scope("singleton") public class ConfigurationApiResource { - @Autowired + private String allowedFieldList = ""; + private String filterName = "myFilter"; + + @Autowired private ConfigurationReadPlatformService configurationReadPlatformService; - + @Autowired private ConfigurationWritePlatformService configurationWritePlatformService; - @GET - @Path("currency") - @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) - @Produces({MediaType.APPLICATION_JSON}) - public Response retrieveCurrencyDataForConfiguration() { + @Autowired + private ApiJSONFormattingService jsonFormattingService; - ConfigurationData configurationData = this.configurationReadPlatformService.retrieveCurrencyConfiguration(); - - return Response.ok().entity(configurationData).build(); + @GET + @Path("currency") + @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) + @Produces({ MediaType.APPLICATION_JSON }) + public String retrieveCurrencyDataForConfiguration(@Context UriInfo uriInfo) { + + ConfigurationData configurationData = this.configurationReadPlatformService + .retrieveCurrencyConfiguration(); + + String selectedFields = ""; + return this.jsonFormattingService.convertRequest(configurationData, + filterName, allowedFieldList, selectedFields, + uriInfo.getQueryParameters()); } @PUT @Path("currency") - @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) - @Produces({ MediaType.APPLICATION_JSON}) - public Response updateAllowedCurrenciesForOrganisation(OrganisationCurrencyCommand command) { - - this.configurationWritePlatformService.updateOrganisationCurrencies(command); + @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) + @Produces({ MediaType.APPLICATION_JSON }) + public Response updateAllowedCurrenciesForOrganisation( + OrganisationCurrencyCommand command) { + + this.configurationWritePlatformService + .updateOrganisationCurrencies(command); return Response.ok().entity(command).build(); }