From e48f0247d577c70267bb451eb5184c9aaea76bc4 Mon Sep 17 00:00:00 2001 From: John Woodlock Date: Sat, 26 May 2012 09:57:32 +1000 Subject: [PATCH] filtering permissions plus fix to json response builder --- .../java/org/mifosng/data/PermissionData.java | 3 +++ .../platform/api/PermissionApiResource.java | 19 ++++++++++++++----- .../ApiJSONFormattingServiceImpl.java | 10 ++++++++-- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/mifosng-data/src/main/java/org/mifosng/data/PermissionData.java b/mifosng-data/src/main/java/org/mifosng/data/PermissionData.java index cdc1cfa20..1c24be75d 100644 --- a/mifosng-data/src/main/java/org/mifosng/data/PermissionData.java +++ b/mifosng-data/src/main/java/org/mifosng/data/PermissionData.java @@ -4,7 +4,10 @@ import java.io.Serializable; import javax.xml.bind.annotation.XmlRootElement; +import org.codehaus.jackson.map.annotate.JsonFilter; + @XmlRootElement(name = "permission") +@JsonFilter("myFilter") public class PermissionData implements Serializable { private Long id; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/PermissionApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/PermissionApiResource.java index 222007d23..b3f6d512f 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/PermissionApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/PermissionApiResource.java @@ -6,11 +6,12 @@ import javax.ws.rs.Consumes; import javax.ws.rs.GET; 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.PermissionData; -import org.mifosng.data.PermissionList; +import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService; import org.mifosng.platform.user.service.PermissionReadPlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; @@ -20,16 +21,24 @@ import org.springframework.stereotype.Component; @Component @Scope("singleton") public class PermissionApiResource { + private String allowedFieldList = ""; @Autowired private PermissionReadPlatformService permissionReadPlatformService; - + + @Autowired + private ApiJSONFormattingService jsonFormattingService; + @GET @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @Produces({MediaType.APPLICATION_JSON}) - public Response retrieveAllPermissions() { + public String retrieveAllPermissions(@Context UriInfo uriInfo) { Collection permissions = this.permissionReadPlatformService.retrieveAllPermissions(); - return Response.ok().entity(new PermissionList(permissions)).build(); + + //TODO - setting selectedFields just to not show org_id, can be set be to "" after org_id is removed + String selectedFields = "id,name,description,code,groupType"; + return this.jsonFormattingService.convertRequest(permissions, + allowedFieldList, selectedFields, uriInfo.getQueryParameters()); } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java index 227352d0e..2647a6769 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java @@ -46,9 +46,15 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService { selectedFieldsSet.add(st.nextToken().trim()); } + Boolean first = true; for (String paramField : paramFieldsSet) { - if (selectedFieldsSet.contains(paramField)) - fieldList += paramField; + if (selectedFieldsSet.contains(paramField)) { + if (first) { + fieldList = paramField; + first = false; + } else + fieldList += "," + paramField; + } } }