From 21e3d749636603513105a0ffbfc9f2370a88f1d5 Mon Sep 17 00:00:00 2001 From: amedviediev Date: Tue, 26 Jan 2016 00:06:58 +0200 Subject: [PATCH 1/4] Source code for the article "Returning Custom Status Codes from Spring MVC Controllers" --- spring-mvc-custom-status-codes/.gitignore | 13 ++++++ spring-mvc-custom-status-codes/pom.xml | 44 +++++++++++++++++++ .../CustomStatusCodesApplication.java | 11 +++++ .../java/com/baeldung/ExampleController.java | 24 ++++++++++ .../java/com/baeldung/ForbiddenException.java | 9 ++++ .../src/main/resources/application.properties | 0 6 files changed, 101 insertions(+) create mode 100644 spring-mvc-custom-status-codes/.gitignore create mode 100644 spring-mvc-custom-status-codes/pom.xml create mode 100644 spring-mvc-custom-status-codes/src/main/java/com/baeldung/CustomStatusCodesApplication.java create mode 100644 spring-mvc-custom-status-codes/src/main/java/com/baeldung/ExampleController.java create mode 100644 spring-mvc-custom-status-codes/src/main/java/com/baeldung/ForbiddenException.java create mode 100644 spring-mvc-custom-status-codes/src/main/resources/application.properties diff --git a/spring-mvc-custom-status-codes/.gitignore b/spring-mvc-custom-status-codes/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/spring-mvc-custom-status-codes/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/spring-mvc-custom-status-codes/pom.xml b/spring-mvc-custom-status-codes/pom.xml new file mode 100644 index 0000000000..3fce332645 --- /dev/null +++ b/spring-mvc-custom-status-codes/pom.xml @@ -0,0 +1,44 @@ + + + 4.0.0 + + com.baeldung + custom-status-codes + 0.0.1-SNAPSHOT + jar + + spring-mvc-custom-status-codes + Returning Custom Status Codes from Spring MVC Controllers + + + org.springframework.boot + spring-boot-starter-parent + 1.3.2.RELEASE + + + + + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + 1.3.2.RELEASE + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/spring-mvc-custom-status-codes/src/main/java/com/baeldung/CustomStatusCodesApplication.java b/spring-mvc-custom-status-codes/src/main/java/com/baeldung/CustomStatusCodesApplication.java new file mode 100644 index 0000000000..2baf4b122f --- /dev/null +++ b/spring-mvc-custom-status-codes/src/main/java/com/baeldung/CustomStatusCodesApplication.java @@ -0,0 +1,11 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class CustomStatusCodesApplication { + public static void main(String[] args) { + SpringApplication.run(CustomStatusCodesApplication.class, args); + } +} diff --git a/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ExampleController.java b/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ExampleController.java new file mode 100644 index 0000000000..2d8f699776 --- /dev/null +++ b/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ExampleController.java @@ -0,0 +1,24 @@ +package com.baeldung; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class ExampleController { + + @RequestMapping(value = "/controller", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity sendViaResponseEntity() { + return new ResponseEntity(HttpStatus.NOT_ACCEPTABLE); + } + + @RequestMapping(value = "/exception", method = RequestMethod.GET) + @ResponseBody + public ResponseEntity sendViaException() { + throw new ForbiddenException(); + } +} diff --git a/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ForbiddenException.java b/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ForbiddenException.java new file mode 100644 index 0000000000..858d428681 --- /dev/null +++ b/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ForbiddenException.java @@ -0,0 +1,9 @@ +package com.baeldung; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(value = HttpStatus.FORBIDDEN, reason="To show an example of a custom message") +public class ForbiddenException extends RuntimeException { + +} diff --git a/spring-mvc-custom-status-codes/src/main/resources/application.properties b/spring-mvc-custom-status-codes/src/main/resources/application.properties new file mode 100644 index 0000000000..e69de29bb2 From 453d9953858aa8ef9b5c0e54a3c7887e6fd36f9d Mon Sep 17 00:00:00 2001 From: amedviediev Date: Sat, 30 Jan 2016 23:05:06 +0200 Subject: [PATCH 2/4] - Updated source code for the article "Returning Custom Status Codes from Spring MVC Controllers" to be included in the spring-rest project --- spring-mvc-custom-status-codes/.gitignore | 13 ------ spring-mvc-custom-status-codes/pom.xml | 44 ------------------- .../CustomStatusCodesApplication.java | 11 ----- .../src/main/resources/application.properties | 0 .../controller/status}/ExampleController.java | 2 +- .../status}/ForbiddenException.java | 2 +- 6 files changed, 2 insertions(+), 70 deletions(-) delete mode 100644 spring-mvc-custom-status-codes/.gitignore delete mode 100644 spring-mvc-custom-status-codes/pom.xml delete mode 100644 spring-mvc-custom-status-codes/src/main/java/com/baeldung/CustomStatusCodesApplication.java delete mode 100644 spring-mvc-custom-status-codes/src/main/resources/application.properties rename {spring-mvc-custom-status-codes/src/main/java/com/baeldung => spring-rest/src/main/java/org/baeldung/web/controller/status}/ExampleController.java (94%) rename {spring-mvc-custom-status-codes/src/main/java/com/baeldung => spring-rest/src/main/java/org/baeldung/web/controller/status}/ForbiddenException.java (85%) diff --git a/spring-mvc-custom-status-codes/.gitignore b/spring-mvc-custom-status-codes/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/spring-mvc-custom-status-codes/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/spring-mvc-custom-status-codes/pom.xml b/spring-mvc-custom-status-codes/pom.xml deleted file mode 100644 index 3fce332645..0000000000 --- a/spring-mvc-custom-status-codes/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - 4.0.0 - - com.baeldung - custom-status-codes - 0.0.1-SNAPSHOT - jar - - spring-mvc-custom-status-codes - Returning Custom Status Codes from Spring MVC Controllers - - - org.springframework.boot - spring-boot-starter-parent - 1.3.2.RELEASE - - - - - UTF-8 - 1.8 - - - - - org.springframework.boot - spring-boot-starter-web - 1.3.2.RELEASE - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - - diff --git a/spring-mvc-custom-status-codes/src/main/java/com/baeldung/CustomStatusCodesApplication.java b/spring-mvc-custom-status-codes/src/main/java/com/baeldung/CustomStatusCodesApplication.java deleted file mode 100644 index 2baf4b122f..0000000000 --- a/spring-mvc-custom-status-codes/src/main/java/com/baeldung/CustomStatusCodesApplication.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class CustomStatusCodesApplication { - public static void main(String[] args) { - SpringApplication.run(CustomStatusCodesApplication.class, args); - } -} diff --git a/spring-mvc-custom-status-codes/src/main/resources/application.properties b/spring-mvc-custom-status-codes/src/main/resources/application.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ExampleController.java b/spring-rest/src/main/java/org/baeldung/web/controller/status/ExampleController.java similarity index 94% rename from spring-mvc-custom-status-codes/src/main/java/com/baeldung/ExampleController.java rename to spring-rest/src/main/java/org/baeldung/web/controller/status/ExampleController.java index 2d8f699776..ceda138768 100644 --- a/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ExampleController.java +++ b/spring-rest/src/main/java/org/baeldung/web/controller/status/ExampleController.java @@ -1,4 +1,4 @@ -package com.baeldung; +package org.baeldung.web.controller.status; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ForbiddenException.java b/spring-rest/src/main/java/org/baeldung/web/controller/status/ForbiddenException.java similarity index 85% rename from spring-mvc-custom-status-codes/src/main/java/com/baeldung/ForbiddenException.java rename to spring-rest/src/main/java/org/baeldung/web/controller/status/ForbiddenException.java index 858d428681..1d4aff2ebf 100644 --- a/spring-mvc-custom-status-codes/src/main/java/com/baeldung/ForbiddenException.java +++ b/spring-rest/src/main/java/org/baeldung/web/controller/status/ForbiddenException.java @@ -1,4 +1,4 @@ -package com.baeldung; +package org.baeldung.web.controller.status; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ResponseStatus; From de3b09bfd1d72942b333b73c4ff735d5fcf17f04 Mon Sep 17 00:00:00 2001 From: amedviediev Date: Mon, 1 Feb 2016 20:38:01 +0200 Subject: [PATCH 3/4] - Added test code for the article "Returning Custom Status Codes from Spring MVC Controllers" --- .../status/ExampleControllerTest.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java diff --git a/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java b/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java new file mode 100644 index 0000000000..8d4f583a08 --- /dev/null +++ b/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java @@ -0,0 +1,43 @@ +package com.baeldung; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = WebConfig.class) +@WebAppConfiguration +public class ExampleControllerTest { + + private MockMvc mockMvc; + + @Autowired + private WebApplicationContext webApplicationContext; + + @Before + public void setUp() { + mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); + } + + @Test + public void whenGetRequestSentToController_thenReturnsStatusNotAcceptable() throws Exception { + mockMvc.perform(get("/controller")) + .andExpect(status().isNotAcceptable()); + } + + @Test + public void whenGetRequestSentToException_thenReturnsStatusForbidden() throws Exception { + mockMvc.perform(get("/exception")) + .andExpect(status().isForbidden()); + } +} From dfc96b2dd101a98d214e9b289f05b6a0cc885d25 Mon Sep 17 00:00:00 2001 From: amedviediev Date: Tue, 2 Feb 2016 20:15:51 +0200 Subject: [PATCH 4/4] - Fixed tests --- spring-rest/pom.xml | 4 ---- .../web/controller/status/ExampleControllerTest.java | 5 +++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml index e2cf9d7c3e..54ac868b95 100644 --- a/spring-rest/pom.xml +++ b/spring-rest/pom.xml @@ -33,7 +33,6 @@ org.springframework spring-web - ${org.springframework.version} commons-logging @@ -44,12 +43,10 @@ org.springframework spring-webmvc - ${org.springframework.version} org.springframework spring-oxm - ${org.springframework.version} @@ -229,7 +226,6 @@ - 4.2.4.RELEASE 4.0.3.RELEASE diff --git a/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java b/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java index 8d4f583a08..1344d2d40e 100644 --- a/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java +++ b/spring-rest/src/test/java/org/baeldung/web/controller/status/ExampleControllerTest.java @@ -1,13 +1,14 @@ -package com.baeldung; +package org.baeldung.web.controller.status; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import org.baeldung.config.WebConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc;