dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #28045
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 13980: support exclude in web-api filtering
------------------------------------------------------------
revno: 13980
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2014-02-11 11:22:08 +0700
message:
support exclude in web-api filtering
modified:
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebUtils.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java 2014-02-10 08:47:17 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java 2014-02-11 04:22:08 +0000
@@ -84,16 +84,16 @@
// GET
//--------------------------------------------------------------------------
- @RequestMapping( value = "/filtered", method = RequestMethod.GET )
+ @RequestMapping(value = "/filtered", method = RequestMethod.GET)
public void getJacksonClassMap(
- @RequestParam( required = false ) String include,
- @RequestParam( required = false ) String exclude,
+ @RequestParam(required = false) String include,
+ @RequestParam(required = false) String exclude,
@RequestParam Map<String, String> parameters, HttpServletResponse response ) throws IOException
{
if ( include == null && exclude == null )
{
- JacksonUtils.toJson( response.getOutputStream(), ReflectionUtils.getJacksonClassMap( getEntityClass() ) );
- return;
+ // JacksonUtils.toJson( response.getOutputStream(), ReflectionUtils.getJacksonClassMap( getEntityClass() ) );
+ // return;
}
WebOptions options = new WebOptions( parameters );
@@ -105,7 +105,7 @@
postProcessEntities( entityList );
postProcessEntities( entityList, options, parameters );
- List<Object> objects = WebUtils.filterFields( entityList, include );
+ List<Object> objects = WebUtils.filterFields( entityList, include, exclude );
Map<String, Object> output = Maps.newLinkedHashMap();
if ( options.hasPaging() )
@@ -118,7 +118,7 @@
JacksonUtils.toJson( response.getOutputStream(), output );
}
- @RequestMapping( method = RequestMethod.GET )
+ @RequestMapping(method = RequestMethod.GET)
public String getObjectList( @RequestParam Map<String, String> parameters, Model model, HttpServletRequest request ) throws Exception
{
WebOptions options = new WebOptions( parameters );
@@ -145,7 +145,7 @@
return StringUtils.uncapitalize( getEntitySimpleName() ) + "List";
}
- @RequestMapping( value = "/query/{query}", method = RequestMethod.GET )
+ @RequestMapping(value = "/query/{query}", method = RequestMethod.GET)
public String query( @PathVariable String query, @RequestParam Map<String, String> parameters, Model model, HttpServletRequest request ) throws Exception
{
WebOptions options = new WebOptions( parameters );
@@ -174,8 +174,8 @@
return StringUtils.uncapitalize( getEntitySimpleName() ) + "List";
}
- @RequestMapping( value = "/{uid}", method = RequestMethod.GET )
- public String getObject( @PathVariable( "uid" ) String uid, @RequestParam Map<String, String> parameters,
+ @RequestMapping(value = "/{uid}", method = RequestMethod.GET)
+ public String getObject( @PathVariable("uid") String uid, @RequestParam Map<String, String> parameters,
Model model, HttpServletRequest request, HttpServletResponse response ) throws Exception
{
WebOptions options = new WebOptions( parameters );
@@ -205,7 +205,7 @@
return StringUtils.uncapitalize( getEntitySimpleName() );
}
- @RequestMapping( value = "/search/{query}", method = RequestMethod.GET )
+ @RequestMapping(value = "/search/{query}", method = RequestMethod.GET)
public String search( @PathVariable String query, @RequestParam Map<String, String> parameters,
Model model, HttpServletRequest request, HttpServletResponse response ) throws Exception
{
@@ -235,13 +235,13 @@
// POST
//--------------------------------------------------------------------------
- @RequestMapping( method = RequestMethod.POST, consumes = { "application/xml", "text/xml" } )
+ @RequestMapping(method = RequestMethod.POST, consumes = { "application/xml", "text/xml" })
public void postXmlObject( HttpServletResponse response, HttpServletRequest request, InputStream input ) throws Exception
{
throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() );
}
- @RequestMapping( method = RequestMethod.POST, consumes = "application/json" )
+ @RequestMapping(method = RequestMethod.POST, consumes = "application/json")
public void postJsonObject( HttpServletResponse response, HttpServletRequest request, InputStream input ) throws Exception
{
throw new HttpRequestMethodNotSupportedException( RequestMethod.POST.toString() );
@@ -251,16 +251,16 @@
// PUT
//--------------------------------------------------------------------------
- @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, consumes = { "application/xml", "text/xml" } )
- @ResponseStatus( value = HttpStatus.NO_CONTENT )
- public void putXmlObject( HttpServletResponse response, HttpServletRequest request, @PathVariable( "uid" ) String uid, InputStream input ) throws Exception
+ @RequestMapping(value = "/{uid}", method = RequestMethod.PUT, consumes = { "application/xml", "text/xml" })
+ @ResponseStatus(value = HttpStatus.NO_CONTENT)
+ public void putXmlObject( HttpServletResponse response, HttpServletRequest request, @PathVariable("uid") String uid, InputStream input ) throws Exception
{
throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() );
}
- @RequestMapping( value = "/{uid}", method = RequestMethod.PUT, consumes = "application/json" )
- @ResponseStatus( value = HttpStatus.NO_CONTENT )
- public void putJsonObject( HttpServletResponse response, HttpServletRequest request, @PathVariable( "uid" ) String uid, InputStream input ) throws Exception
+ @RequestMapping(value = "/{uid}", method = RequestMethod.PUT, consumes = "application/json")
+ @ResponseStatus(value = HttpStatus.NO_CONTENT)
+ public void putJsonObject( HttpServletResponse response, HttpServletRequest request, @PathVariable("uid") String uid, InputStream input ) throws Exception
{
throw new HttpRequestMethodNotSupportedException( RequestMethod.PUT.toString() );
}
@@ -269,9 +269,9 @@
// DELETE
//--------------------------------------------------------------------------
- @RequestMapping( value = "/{uid}", method = RequestMethod.DELETE )
- @ResponseStatus( value = HttpStatus.NO_CONTENT )
- public void deleteObject( HttpServletResponse response, HttpServletRequest request, @PathVariable( "uid" ) String uid ) throws Exception
+ @RequestMapping(value = "/{uid}", method = RequestMethod.DELETE)
+ @ResponseStatus(value = HttpStatus.NO_CONTENT)
+ public void deleteObject( HttpServletResponse response, HttpServletRequest request, @PathVariable("uid") String uid ) throws Exception
{
throw new HttpRequestMethodNotSupportedException( RequestMethod.DELETE.toString() );
}
@@ -420,7 +420,7 @@
private String entitySimpleName;
- @SuppressWarnings( "unchecked" )
+ @SuppressWarnings("unchecked")
protected Class<T> getEntityClass()
{
if ( entityClass == null )
@@ -452,7 +452,7 @@
return entitySimpleName;
}
- @SuppressWarnings( "unchecked" )
+ @SuppressWarnings("unchecked")
protected T getEntityInstance()
{
try
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebUtils.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebUtils.java 2014-02-10 10:55:32 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/utils/WebUtils.java 2014-02-11 04:22:08 +0000
@@ -255,16 +255,43 @@
return prefixes;
}
- public static <T extends IdentifiableObject> List<Object> filterFields( List<T> objects, String fields )
+ public static <T extends IdentifiableObject> List<Object> filterFields( List<T> objects, String include, String exclude )
{
List<Object> output = Lists.newArrayList();
- if ( objects.isEmpty() || fields == null )
+ if ( objects.isEmpty() )
{
return output;
}
- Map<String, Map> fieldMap = parseFieldExpression( fields );
+ Map<String, Map> fieldMap = Maps.newHashMap();
+
+ if ( include == null && exclude == null )
+ {
+ Map<String, ReflectionUtils.MethodDescriptor> classMap = ReflectionUtils.getJacksonClassMap( objects.get( 0 ).getClass() );
+
+ for ( String key : classMap.keySet() )
+ {
+ fieldMap.put( key, Maps.newHashMap() );
+ }
+ }
+ else if ( include == null )
+ {
+ Map<String, ReflectionUtils.MethodDescriptor> classMap = ReflectionUtils.getJacksonClassMap( objects.get( 0 ).getClass() );
+ Map<String, Map> excludeMap = parseFieldExpression( exclude );
+
+ for ( String key : classMap.keySet() )
+ {
+ if ( !excludeMap.containsKey( key ) )
+ {
+ fieldMap.put( key, Maps.newHashMap() );
+ }
+ }
+ }
+ else
+ {
+ fieldMap = parseFieldExpression( include );
+ }
for ( Object object : objects )
{