From 343322168e463a0fab656270313c1c589619aaf3 Mon Sep 17 00:00:00 2001 From: "Hani M. K" Date: Sun, 5 Aug 2018 21:52:41 +0300 Subject: [PATCH 1/3] spring mvc test spring mvc test --- spring-mvc-test/.classpath | 30 +++++ spring-mvc-test/pom.xml | 126 ++++++++++++++++++ .../com/hmkcode/controllers/Controller.java | 27 ++++ .../src/main/java/com/hmkcode/model/Link.java | 31 +++++ .../src/main/webapp/WEB-INF/rest-servlet.xml | 18 +++ .../src/main/webapp/WEB-INF/web.xml | 25 ++++ spring-mvc-test/src/main/webapp/index.html | 11 ++ .../java/com/hmkcode/test/TestController.java | 53 ++++++++ .../src/test/resources/rest-servlet.xml | 19 +++ 9 files changed, 340 insertions(+) create mode 100644 spring-mvc-test/.classpath create mode 100644 spring-mvc-test/pom.xml create mode 100644 spring-mvc-test/src/main/java/com/hmkcode/controllers/Controller.java create mode 100644 spring-mvc-test/src/main/java/com/hmkcode/model/Link.java create mode 100644 spring-mvc-test/src/main/webapp/WEB-INF/rest-servlet.xml create mode 100644 spring-mvc-test/src/main/webapp/WEB-INF/web.xml create mode 100644 spring-mvc-test/src/main/webapp/index.html create mode 100644 spring-mvc-test/src/test/java/com/hmkcode/test/TestController.java create mode 100644 spring-mvc-test/src/test/resources/rest-servlet.xml diff --git a/spring-mvc-test/.classpath b/spring-mvc-test/.classpath new file mode 100644 index 0000000..3003973 --- /dev/null +++ b/spring-mvc-test/.classpath @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-mvc-test/pom.xml b/spring-mvc-test/pom.xml new file mode 100644 index 0000000..f7b699a --- /dev/null +++ b/spring-mvc-test/pom.xml @@ -0,0 +1,126 @@ + + 4.0.0 + + com.hmkcode + spring-mvc-test + 1.0-SNAPSHOT + war + + spring-mvc-test + http://maven.apache.org + + + UTF-8 + 5.0.8.RELEASE + 4.12 + 4.0.1 + 2.9.6 + + + + + + + + org.springframework + spring-context + ${spring.version} + + + + org.springframework + spring-core + ${spring.version} + + + + org.springframework + spring-beans + ${spring.version} + + + + org.springframework + spring-web + ${spring.version} + + + + org.springframework + spring-webmvc + ${spring.version} + + + + org.springframework + spring-expression + ${spring.version} + + + org.springframework + spring-test + ${spring.version} + test + + + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + junit + junit + ${junit.version} + test + + + + + commons-logging + commons-logging + 1.2 + + + + + javax.servlet + javax.servlet-api + ${javax.servlet.version} + provided + + + + + org.hamcrest + hamcrest-library + 1.3 + test + + + com.jayway.jsonpath + json-path + 2.2.0 + test + + + + + + + + org.eclipse.jetty + jetty-maven-plugin + 9.4.11.v20180605 + + + + diff --git a/spring-mvc-test/src/main/java/com/hmkcode/controllers/Controller.java b/spring-mvc-test/src/main/java/com/hmkcode/controllers/Controller.java new file mode 100644 index 0000000..710db0f --- /dev/null +++ b/spring-mvc-test/src/main/java/com/hmkcode/controllers/Controller.java @@ -0,0 +1,27 @@ +package com.hmkcode.controllers; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import com.hmkcode.model.Link; + +@RestController +@RequestMapping("api") +public class Controller { + + @RequestMapping(value = "/get", method = RequestMethod.GET) + public @ResponseBody Link get(){ + System.out.println("Get!"); + + Link link = new Link(); + link.setTitle("HMKCODE BLOG!"); + link.setUrl("hmkcode.com"); + + return link; + + } + +} diff --git a/spring-mvc-test/src/main/java/com/hmkcode/model/Link.java b/spring-mvc-test/src/main/java/com/hmkcode/model/Link.java new file mode 100644 index 0000000..d3a1548 --- /dev/null +++ b/spring-mvc-test/src/main/java/com/hmkcode/model/Link.java @@ -0,0 +1,31 @@ +package com.hmkcode.model; + +public class Link { + + private String title; + private String url; + + public Link(){ + + } + public Link(String title, String url){ + this.title = title; + this.url = url; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getUrl() { + return url; + } + public void setUrl(String url) { + this.url = url; + } + @Override + public String toString() { + return "Link [title=" + title + ", url=" + url + "]"; + } +} diff --git a/spring-mvc-test/src/main/webapp/WEB-INF/rest-servlet.xml b/spring-mvc-test/src/main/webapp/WEB-INF/rest-servlet.xml new file mode 100644 index 0000000..8072b08 --- /dev/null +++ b/spring-mvc-test/src/main/webapp/WEB-INF/rest-servlet.xml @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/spring-mvc-test/src/main/webapp/WEB-INF/web.xml b/spring-mvc-test/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..a3148c4 --- /dev/null +++ b/spring-mvc-test/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,25 @@ + + + SPRING MVC + + index.html + + + + + rest + org.springframework.web.servlet.DispatcherServlet + + + rest + /rest/* + + + + + + \ No newline at end of file diff --git a/spring-mvc-test/src/main/webapp/index.html b/spring-mvc-test/src/main/webapp/index.html new file mode 100644 index 0000000..c0533a2 --- /dev/null +++ b/spring-mvc-test/src/main/webapp/index.html @@ -0,0 +1,11 @@ + + + + +Spring MVC Test + + +

Spring MVC Test | MockMVC

+GET JSON + + \ No newline at end of file diff --git a/spring-mvc-test/src/test/java/com/hmkcode/test/TestController.java b/spring-mvc-test/src/test/java/com/hmkcode/test/TestController.java new file mode 100644 index 0000000..38922ff --- /dev/null +++ b/spring-mvc-test/src/test/java/com/hmkcode/test/TestController.java @@ -0,0 +1,53 @@ +package com.hmkcode.test; + +import javax.servlet.ServletContext; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockServletContext; +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; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = "/rest-servlet.xml") +@WebAppConfiguration +public class TestController { + + @Autowired + private WebApplicationContext wac; + + private MockMvc mockMvc; + @Before + public void setup() throws Exception { + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); + } + @Ignore + @Test + public void givenWac_whenServletContext_thenItProvidesGreetController() { + ServletContext servletContext = wac.getServletContext(); + + Assert.assertNotNull(servletContext); + Assert.assertTrue(servletContext instanceof MockServletContext); + Assert.assertNotNull(wac.getBean("controller")); + } + + @Test + public void test() throws Exception{ + this.mockMvc.perform(get("/api/get")) + .andExpect(status().isOk()) + .andDo(print()); + + } +} diff --git a/spring-mvc-test/src/test/resources/rest-servlet.xml b/spring-mvc-test/src/test/resources/rest-servlet.xml new file mode 100644 index 0000000..88698ec --- /dev/null +++ b/spring-mvc-test/src/test/resources/rest-servlet.xml @@ -0,0 +1,19 @@ + + + + + + + + + + From ce2f73f92dcaf4b13ec3b30bfe50bbc30aa17362 Mon Sep 17 00:00:00 2001 From: "Hani M. K" Date: Tue, 14 Aug 2018 21:07:28 +0300 Subject: [PATCH 2/3] update method name update test method name --- .../src/test/java/com/hmkcode/test/TestController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-test/src/test/java/com/hmkcode/test/TestController.java b/spring-mvc-test/src/test/java/com/hmkcode/test/TestController.java index 38922ff..93a8614 100644 --- a/spring-mvc-test/src/test/java/com/hmkcode/test/TestController.java +++ b/spring-mvc-test/src/test/java/com/hmkcode/test/TestController.java @@ -35,7 +35,7 @@ public void setup() throws Exception { } @Ignore @Test - public void givenWac_whenServletContext_thenItProvidesGreetController() { + public void configTest() { ServletContext servletContext = wac.getServletContext(); Assert.assertNotNull(servletContext); From c13c5146f6211377b2d6fd33de91ae12036d48bd Mon Sep 17 00:00:00 2001 From: "Hani M. K" Date: Sat, 27 Feb 2021 20:29:58 +0300 Subject: [PATCH 3/3] spring-exception-controlleradvice spring-exception-controlleradvice --- spring-exception-controlleradvice/.classpath | 39 ++++++++++++++++ spring-exception-controlleradvice/pom.xml | 45 +++++++++++++++++++ .../src/main/java/com/hmkcode/App.java | 15 +++++++ .../com/hmkcode/controllers/Controller.java | 21 +++++++++ .../hmkcode/exception/ControllerAdvisor.java | 26 +++++++++++ 5 files changed, 146 insertions(+) create mode 100644 spring-exception-controlleradvice/.classpath create mode 100644 spring-exception-controlleradvice/pom.xml create mode 100644 spring-exception-controlleradvice/src/main/java/com/hmkcode/App.java create mode 100644 spring-exception-controlleradvice/src/main/java/com/hmkcode/controllers/Controller.java create mode 100644 spring-exception-controlleradvice/src/main/java/com/hmkcode/exception/ControllerAdvisor.java diff --git a/spring-exception-controlleradvice/.classpath b/spring-exception-controlleradvice/.classpath new file mode 100644 index 0000000..d67f3e2 --- /dev/null +++ b/spring-exception-controlleradvice/.classpath @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-exception-controlleradvice/pom.xml b/spring-exception-controlleradvice/pom.xml new file mode 100644 index 0000000..3086b49 --- /dev/null +++ b/spring-exception-controlleradvice/pom.xml @@ -0,0 +1,45 @@ + + 4.0.0 + + com.hmkcode + spring-exception-controlleradvice + 1.0-SNAPSHOT + jar + + spring-boot + http://maven.apache.org + + + UTF-8 + 1.8 + 1.8 + + + org.springframework.boot + spring-boot-starter-parent + 2.4.2 + + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 3.0.0 + + com.hmkcode.App + + + + + diff --git a/spring-exception-controlleradvice/src/main/java/com/hmkcode/App.java b/spring-exception-controlleradvice/src/main/java/com/hmkcode/App.java new file mode 100644 index 0000000..c977ea6 --- /dev/null +++ b/spring-exception-controlleradvice/src/main/java/com/hmkcode/App.java @@ -0,0 +1,15 @@ +package com.hmkcode; + +import org.springframework.boot.*; +import org.springframework.boot.autoconfigure.*; +import org.springframework.stereotype.*; + +@Controller +@SpringBootApplication +public class App { + + + public static void main(String[] args) throws Exception { + SpringApplication.run(App.class, args); + } +} \ No newline at end of file diff --git a/spring-exception-controlleradvice/src/main/java/com/hmkcode/controllers/Controller.java b/spring-exception-controlleradvice/src/main/java/com/hmkcode/controllers/Controller.java new file mode 100644 index 0000000..f51e398 --- /dev/null +++ b/spring-exception-controlleradvice/src/main/java/com/hmkcode/controllers/Controller.java @@ -0,0 +1,21 @@ +package com.hmkcode.controllers; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + + +@RestController +public class Controller { + + + @RequestMapping("/ok") + public @ResponseBody String ok() throws Exception { + return "OK"; + } + + @RequestMapping("/exception") + public @ResponseBody String exception() throws Exception { + throw new Exception("Error"); + } +} diff --git a/spring-exception-controlleradvice/src/main/java/com/hmkcode/exception/ControllerAdvisor.java b/spring-exception-controlleradvice/src/main/java/com/hmkcode/exception/ControllerAdvisor.java new file mode 100644 index 0000000..027ab1f --- /dev/null +++ b/spring-exception-controlleradvice/src/main/java/com/hmkcode/exception/ControllerAdvisor.java @@ -0,0 +1,26 @@ +package com.hmkcode.exception; + + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.http.HttpStatus; + +@ControllerAdvice +public class ControllerAdvisor { + + + @ExceptionHandler(Exception.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + + public @ResponseBody String generalException(final Exception exception, + final HttpServletRequest request) { + + return exception.getMessage()+" while calling: "+request.getRequestURI(); + + } +} +