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(); + + } +} + 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..93a8614 --- /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 configTest() { + 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 @@ + + + + + + + + + +