dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #21389
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 10108: FRED-API: set and check json content-type for error messages
------------------------------------------------------------
revno: 10108
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Sat 2013-03-09 19:14:46 +0300
message:
FRED-API: set and check json content-type for error messages
modified:
dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityAdvice.java
dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java
dhis-2/dhis-web/dhis-web-api-fred/src/test/java/org/hisp/dhis/web/webapi/v1/controller/FacilityControllerTest.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-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityAdvice.java'
--- dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityAdvice.java 2013-03-09 15:32:50 +0000
+++ dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityAdvice.java 2013-03-09 16:14:46 +0000
@@ -36,7 +36,9 @@
import org.hisp.dhis.web.webapi.v1.exception.FacilityNotFoundException;
import org.hisp.dhis.web.webapi.v1.exception.UuidFormatException;
import org.hisp.dhis.web.webapi.v1.utils.MessageUtils;
+import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
@@ -59,35 +61,50 @@
@ExceptionHandler( { HttpClientErrorException.class, HttpServerErrorException.class } )
public ResponseEntity<String> statusCodeExceptionHandler( HttpStatusCodeException ex ) throws IOException
{
+ HttpHeaders headers = new HttpHeaders();
+ headers.add( "Content-Type", MediaType.APPLICATION_JSON_VALUE );
+
return new ResponseEntity<String>( MessageUtils.jsonMessage( ex.getStatusText(),
- ex.getMessage() ), ex.getStatusCode() );
+ ex.getMessage() ), headers, ex.getStatusCode() );
}
@ExceptionHandler( { DeleteNotAllowedException.class, HierarchyViolationException.class } )
public ResponseEntity<String> handleForbidden( Exception ex ) throws IOException
{
+ HttpHeaders headers = new HttpHeaders();
+ headers.add( "Content-Type", MediaType.APPLICATION_JSON_VALUE );
+
return new ResponseEntity<String>( MessageUtils.jsonMessage( HttpStatus.FORBIDDEN.toString(),
- ex.getMessage() ), HttpStatus.FORBIDDEN );
+ ex.getMessage() ), headers, HttpStatus.FORBIDDEN );
}
@ExceptionHandler( { ETagVerificationException.class, UuidFormatException.class } )
public ResponseEntity<String> handlePreconditionFailed( Exception ex ) throws IOException
{
+ HttpHeaders headers = new HttpHeaders();
+ headers.add( "Content-Type", MediaType.APPLICATION_JSON_VALUE );
+
return new ResponseEntity<String>( MessageUtils.jsonMessage( HttpStatus.PRECONDITION_FAILED.toString(),
- ex.getMessage() ), HttpStatus.PRECONDITION_FAILED );
+ ex.getMessage() ), headers, HttpStatus.PRECONDITION_FAILED );
}
@ExceptionHandler( { FacilityNotFoundException.class } )
public ResponseEntity<String> handleNotFound( Exception ex ) throws IOException
{
+ HttpHeaders headers = new HttpHeaders();
+ headers.add( "Content-Type", MediaType.APPLICATION_JSON_VALUE );
+
return new ResponseEntity<String>( MessageUtils.jsonMessage( HttpStatus.NOT_FOUND.toString(),
- ex.getMessage() ), HttpStatus.NOT_FOUND );
+ ex.getMessage() ), headers, HttpStatus.NOT_FOUND );
}
@ExceptionHandler( { DuplicateCodeException.class, DuplicateUidException.class, DuplicateUuidException.class } )
public ResponseEntity<String> handleConflict( Exception ex ) throws IOException
{
+ HttpHeaders headers = new HttpHeaders();
+ headers.add( "Content-Type", MediaType.APPLICATION_JSON_VALUE );
+
return new ResponseEntity<String>( MessageUtils.jsonMessage( HttpStatus.CONFLICT.toString(),
- ex.getMessage() ), HttpStatus.CONFLICT );
+ ex.getMessage() ), headers, HttpStatus.CONFLICT );
}
}
=== modified file 'dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java'
--- dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java 2013-03-09 15:32:50 +0000
+++ dhis-2/dhis-web/dhis-web-api-fred/src/main/java/org/hisp/dhis/web/webapi/v1/controller/FacilityController.java 2013-03-09 16:14:46 +0000
@@ -48,6 +48,7 @@
import org.hisp.dhis.web.webapi.v1.exception.FacilityNotFoundException;
import org.hisp.dhis.web.webapi.v1.exception.UuidFormatException;
import org.hisp.dhis.web.webapi.v1.utils.ContextUtils;
+import org.hisp.dhis.web.webapi.v1.utils.MessageUtils;
import org.hisp.dhis.web.webapi.v1.utils.ValidationUtils;
import org.hisp.dhis.web.webapi.v1.validation.group.Create;
import org.hisp.dhis.web.webapi.v1.validation.group.Update;
@@ -618,7 +619,7 @@
// DELETE JSON
//--------------------------------------------------------------------------
- @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
+ @RequestMapping(value = "/{id}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("hasRole('F_FRED_DELETE') or hasRole('ALL')")
public ResponseEntity<String> deleteFacility( @PathVariable String id ) throws HierarchyViolationException, IOException, FacilityNotFoundException
{
@@ -631,7 +632,8 @@
organisationUnitService.deleteOrganisationUnit( organisationUnit );
- return new ResponseEntity<String>( HttpStatus.OK );
+ return new ResponseEntity<String>( MessageUtils.jsonMessage( HttpStatus.OK.toString(),
+ "{}" ), HttpStatus.OK );
}
//--------------------------------------------------------------------------
=== modified file 'dhis-2/dhis-web/dhis-web-api-fred/src/test/java/org/hisp/dhis/web/webapi/v1/controller/FacilityControllerTest.java'
--- dhis-2/dhis-web/dhis-web-api-fred/src/test/java/org/hisp/dhis/web/webapi/v1/controller/FacilityControllerTest.java 2013-03-09 08:30:36 +0000
+++ dhis-2/dhis-web/dhis-web-api-fred/src/test/java/org/hisp/dhis/web/webapi/v1/controller/FacilityControllerTest.java 2013-03-09 16:14:46 +0000
@@ -114,6 +114,7 @@
MockHttpSession session = getSession( "ALL" );
mvc.perform( get( "/v1/facilities/abc123" ).session( session ).accept( MediaType.APPLICATION_JSON ) )
+ .andExpect( content().contentType( MediaType.APPLICATION_JSON ) )
.andExpect( status().isNotFound() );
}
@@ -127,6 +128,7 @@
mvc.perform( get( "/v1/facilities/" + organisationUnit.getUid() ).session( session ).accept( MediaType.APPLICATION_JSON ) )
.andExpect( header().string( "ETag", Matchers.notNullValue() ) )
+ .andExpect( content().contentType( MediaType.APPLICATION_JSON ) )
.andExpect( status().isOk() );
}
@@ -178,6 +180,7 @@
MockHttpSession session = getSession( "ALL" );
mvc.perform( put( "/v1/facilities/INVALID_IDENTIFIER" ).content( "{}" ).session( session ).contentType( MediaType.APPLICATION_JSON ) )
+ .andExpect( content().contentType( MediaType.APPLICATION_JSON ) )
.andExpect( status().isNotFound() );
}
@@ -294,6 +297,7 @@
mvc.perform( put( "/v1/facilities/" + organisationUnit.getUuid() ).content( objectMapper.writeValueAsString( facility ) )
.session( session ).contentType( MediaType.APPLICATION_JSON ) )
+ .andExpect( content().contentType( MediaType.APPLICATION_JSON ) )
.andExpect( status().isPreconditionFailed() );
}
@@ -326,6 +330,7 @@
mvc.perform( post( "/v1/facilities" ).content( "{}" )
.session( session ).contentType( MediaType.APPLICATION_JSON ) )
+ .andExpect( content().contentType( MediaType.APPLICATION_JSON ) )
.andExpect( status().isUnprocessableEntity() );
}
@@ -339,6 +344,7 @@
mvc.perform( post( "/v1/facilities" ).content( objectMapper.writeValueAsString( facility ) )
.session( session ).contentType( MediaType.APPLICATION_JSON ) )
+ .andExpect( content().contentType( MediaType.APPLICATION_JSON ) )
.andExpect( status().isPreconditionFailed() );
}
@@ -449,6 +455,7 @@
MockHttpSession session = getSession( "ALL" );
mvc.perform( delete( "/v1/facilities/INVALID_IDENTIFIER" ).session( session ) )
+ .andExpect( content().contentType( MediaType.APPLICATION_JSON ) )
.andExpect( status().isNotFound() );
}
@@ -461,6 +468,7 @@
MockHttpSession session = getSession( "ALL" );
mvc.perform( delete( "/v1/facilities/" + organisationUnit.getUid() ).session( session ) )
+ .andExpect( content().contentType( MediaType.APPLICATION_JSON ) )
.andExpect( status().isOk() );
}
@@ -473,6 +481,7 @@
MockHttpSession session = getSession( "ALL" );
mvc.perform( delete( "/v1/facilities/" + organisationUnit.getUuid() ).session( session ) )
+ .andExpect( content().contentType( MediaType.APPLICATION_JSON ) )
.andExpect( status().isOk() );
}