filtering permissions/roles - working - but rethinking filters just a little bit - not much!

This commit is contained in:
John Woodlock
2012-05-26 14:15:04 +10:00
parent 5bc12548aa
commit 992379c702
5 changed files with 65 additions and 29 deletions
@@ -4,9 +4,11 @@ import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonFilter; import org.codehaus.jackson.map.annotate.JsonFilter;
@XmlRootElement(name = "permission") @XmlRootElement(name = "permission")
@JsonIgnoreProperties({ "orgId" })
@JsonFilter("permissionFilter") @JsonFilter("permissionFilter")
public class PermissionData implements Serializable { public class PermissionData implements Serializable {
@@ -5,9 +5,11 @@ import java.util.Collection;
import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlRootElement;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonFilter; import org.codehaus.jackson.map.annotate.JsonFilter;
@XmlRootElement(name = "role") @XmlRootElement(name = "role")
@JsonIgnoreProperties({ "orgId" })
@JsonFilter("roleFilter") @JsonFilter("roleFilter")
public class RoleData { public class RoleData {
@@ -24,22 +24,23 @@ public class PermissionApiResource {
private String allowedFieldList = ""; private String allowedFieldList = "";
private String filterName = "permissionFilter"; private String filterName = "permissionFilter";
@Autowired @Autowired
private PermissionReadPlatformService permissionReadPlatformService; private PermissionReadPlatformService permissionReadPlatformService;
@Autowired @Autowired
private ApiJSONFormattingService jsonFormattingService; private ApiJSONFormattingService jsonFormattingService;
@GET @GET
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({MediaType.APPLICATION_JSON}) @Produces({ MediaType.APPLICATION_JSON })
public String retrieveAllPermissions(@Context UriInfo uriInfo) { public String retrieveAllPermissions(@Context UriInfo uriInfo) {
Collection<PermissionData> permissions = this.permissionReadPlatformService.retrieveAllPermissions(); Collection<PermissionData> permissions = this.permissionReadPlatformService
.retrieveAllPermissions();
//TODO - setting selectedFields just to not show org_id, can be set be to "" after org_id is removed String selectedFields = "";
String selectedFields = "id,name,description,code,groupType"; return this.jsonFormattingService.convertRequest(permissions,
return this.jsonFormattingService.convertRequest(permissions, filterName, filterName, allowedFieldList, selectedFields,
allowedFieldList, selectedFields, uriInfo.getQueryParameters()); uriInfo.getQueryParameters());
} }
} }
@@ -72,7 +72,7 @@ public class RoleApiResource {
RoleData role = new RoleData(); RoleData role = new RoleData();
role.setAvailablePermissions(allPermissions); role.setAvailablePermissions(allPermissions);
String selectedFields = "allowedFieldList"; String selectedFields = allowedFieldList;
return this.jsonFormattingService.convertRequest(role, filterName, return this.jsonFormattingService.convertRequest(role, filterName,
allowedFieldList, selectedFields, uriInfo.getQueryParameters()); allowedFieldList, selectedFields, uriInfo.getQueryParameters());
} }
@@ -102,9 +102,7 @@ public class RoleApiResource {
role.setAvailablePermissions(availablePermissions); role.setAvailablePermissions(availablePermissions);
} }
// TODO - setting selectedFields just to not show org_id, can be set be String selectedFields = "";
// to "" after org_id is removed
String selectedFields = "id,name,description,selectedPermissions";
return this.jsonFormattingService.convertRequest(role, filterName, return this.jsonFormattingService.convertRequest(role, filterName,
allowedFieldList, selectedFields, uriInfo.getQueryParameters()); allowedFieldList, selectedFields, uriInfo.getQueryParameters());
} }
@@ -14,7 +14,6 @@ import org.codehaus.jackson.map.ObjectWriter;
import org.codehaus.jackson.map.ser.FilterProvider; import org.codehaus.jackson.map.ser.FilterProvider;
import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter; import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider; import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
import org.mifosng.platform.api.ReportingApiResource;
import org.mifosng.platform.exceptions.PlatformInternalServerException; import org.mifosng.platform.exceptions.PlatformInternalServerException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -23,7 +22,8 @@ import org.springframework.stereotype.Service;
@Service @Service
public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService { public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
private final static Logger logger = LoggerFactory.getLogger(ApiJSONFormattingServiceImpl.class); private final static Logger logger = LoggerFactory
.getLogger(ApiJSONFormattingServiceImpl.class);
@Override @Override
public String convertRequest(Object dataObject, String filterName, public String convertRequest(Object dataObject, String filterName,
@@ -47,7 +47,7 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
paramFieldsSet.add(st.nextToken().trim()); paramFieldsSet.add(st.nextToken().trim());
} }
Set<String> selectedFieldsSet = new HashSet<String>(); Set<String> selectedFieldsSet = new HashSet<String>();
st = new StringTokenizer(fields, ","); st = new StringTokenizer(selectedFields, ",");
while (st.hasMoreTokens()) { while (st.hasMoreTokens()) {
selectedFieldsSet.add(st.nextToken().trim()); selectedFieldsSet.add(st.nextToken().trim());
} }
@@ -63,8 +63,6 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
} }
} }
} }
logger.info("passed fields and is selected fields - Fieldlist: " + fieldList);
} }
} else { } else {
fieldList = selectedFields; fieldList = selectedFields;
@@ -98,17 +96,52 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
filterFields.add(st.nextToken().trim()); filterFields.add(st.nextToken().trim());
} }
if (filterType.equals("I")) { if (filterName.equals("roleFilter")) {
filters = new SimpleFilterProvider().addFilter(filterName,
SimpleBeanPropertyFilter Set<String> permissionFields = new HashSet<String>();
.filterOutAllExcept(filterFields)); //Ask keith which ones to show
permissionFields.add("id");
permissionFields.add("name");
permissionFields.add("description");
permissionFields.add("code");
permissionFields.add("groupType");
if (filterType.equals("I")) {
filters = new SimpleFilterProvider()
.addFilter(
filterName,
SimpleBeanPropertyFilter
.filterOutAllExcept(filterFields))
.addFilter(
"permissionFilter",
SimpleBeanPropertyFilter
.filterOutAllExcept(permissionFields));
} else {
filters = new SimpleFilterProvider()
.addFilter(
filterName,
SimpleBeanPropertyFilter
.serializeAllExcept(filterFields))
.addFilter(
"permissionFilter",
SimpleBeanPropertyFilter
.filterOutAllExcept(permissionFields));
}
} else { } else {
filters = new SimpleFilterProvider().addFilter(filterName,
SimpleBeanPropertyFilter
.serializeAllExcept(filterFields));
}
if (filterType.equals("I")) {
filters = new SimpleFilterProvider().addFilter(filterName,
SimpleBeanPropertyFilter
.filterOutAllExcept(filterFields));
} else {
filters = new SimpleFilterProvider().addFilter(filterName,
SimpleBeanPropertyFilter
.serializeAllExcept(filterFields));
}
}
ObjectWriter jsonWriter = null; ObjectWriter jsonWriter = null;
if (prettyOutput) { if (prettyOutput) {
jsonWriter = new ObjectMapper() jsonWriter = new ObjectMapper()