filtering permissions plus fix to json response builder

This commit is contained in:
John Woodlock
2012-05-26 09:58:12 +10:00
parent 704ad6fe96
commit e48f0247d5
3 changed files with 25 additions and 7 deletions
@@ -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;
@@ -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<PermissionData> 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());
}
}
@@ -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;
}
}
}