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 org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonFilter;
@XmlRootElement(name = "permission")
@JsonIgnoreProperties({ "orgId" })
@JsonFilter("permissionFilter")
public class PermissionData implements Serializable {
@@ -5,9 +5,11 @@ import java.util.Collection;
import javax.xml.bind.annotation.XmlRootElement;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.map.annotate.JsonFilter;
@XmlRootElement(name = "role")
@JsonIgnoreProperties({ "orgId" })
@JsonFilter("roleFilter")
public class RoleData {
@@ -24,22 +24,23 @@ public class PermissionApiResource {
private String allowedFieldList = "";
private String filterName = "permissionFilter";
@Autowired
private PermissionReadPlatformService permissionReadPlatformService;
@Autowired
private PermissionReadPlatformService permissionReadPlatformService;
@Autowired
private ApiJSONFormattingService jsonFormattingService;
@GET
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON})
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON })
public String retrieveAllPermissions(@Context UriInfo uriInfo) {
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 = "id,name,description,code,groupType";
return this.jsonFormattingService.convertRequest(permissions, filterName,
allowedFieldList, selectedFields, uriInfo.getQueryParameters());
Collection<PermissionData> permissions = this.permissionReadPlatformService
.retrieveAllPermissions();
String selectedFields = "";
return this.jsonFormattingService.convertRequest(permissions,
filterName, allowedFieldList, selectedFields,
uriInfo.getQueryParameters());
}
}
@@ -72,7 +72,7 @@ public class RoleApiResource {
RoleData role = new RoleData();
role.setAvailablePermissions(allPermissions);
String selectedFields = "allowedFieldList";
String selectedFields = allowedFieldList;
return this.jsonFormattingService.convertRequest(role, filterName,
allowedFieldList, selectedFields, uriInfo.getQueryParameters());
}
@@ -102,9 +102,7 @@ public class RoleApiResource {
role.setAvailablePermissions(availablePermissions);
}
// TODO - setting selectedFields just to not show org_id, can be set be
// to "" after org_id is removed
String selectedFields = "id,name,description,selectedPermissions";
String selectedFields = "";
return this.jsonFormattingService.convertRequest(role, filterName,
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.impl.SimpleBeanPropertyFilter;
import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
import org.mifosng.platform.api.ReportingApiResource;
import org.mifosng.platform.exceptions.PlatformInternalServerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -23,8 +22,9 @@ import org.springframework.stereotype.Service;
@Service
public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
private final static Logger logger = LoggerFactory.getLogger(ApiJSONFormattingServiceImpl.class);
private final static Logger logger = LoggerFactory
.getLogger(ApiJSONFormattingServiceImpl.class);
@Override
public String convertRequest(Object dataObject, String filterName,
String allowedFieldList, String selectedFields,
@@ -47,7 +47,7 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
paramFieldsSet.add(st.nextToken().trim());
}
Set<String> selectedFieldsSet = new HashSet<String>();
st = new StringTokenizer(fields, ",");
st = new StringTokenizer(selectedFields, ",");
while (st.hasMoreTokens()) {
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 {
fieldList = selectedFields;
@@ -98,17 +96,52 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
filterFields.add(st.nextToken().trim());
}
if (filterType.equals("I")) {
filters = new SimpleFilterProvider().addFilter(filterName,
SimpleBeanPropertyFilter
.filterOutAllExcept(filterFields));
if (filterName.equals("roleFilter")) {
Set<String> permissionFields = new HashSet<String>();
//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 {
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;
if (prettyOutput) {
jsonWriter = new ObjectMapper()