vvmk преди 8 години
родител
ревизия
b7d39e9ba7

+ 3
- 2
src/main/java/io/zipcoder/tc_spring_poll_application/controllers/PollController.java Целия файл

@@ -10,6 +10,7 @@ import org.springframework.http.ResponseEntity;
10 10
 import org.springframework.web.bind.annotation.*;
11 11
 import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
12 12
 
13
+import javax.validation.Valid;
13 14
 import java.net.URI;
14 15
 import java.util.Optional;
15 16
 
@@ -37,7 +38,7 @@ public class PollController {
37 38
     }
38 39
 
39 40
     @RequestMapping(value = "/polls", method = RequestMethod.POST)
40
-    public ResponseEntity<Poll> createPoll(@RequestBody Poll poll) {
41
+    public ResponseEntity<Poll> createPoll(@RequestBody @Valid Poll poll) {
41 42
         Poll createdPoll = pollRepository.save(poll);
42 43
 
43 44
         URI newPollUri;
@@ -69,7 +70,7 @@ public class PollController {
69 70
     }
70 71
 
71 72
     @RequestMapping(value = "/polls/{pollId}", method = RequestMethod.PUT)
72
-    public ResponseEntity<Poll> updatePoll(@RequestBody Poll poll, @PathVariable Long pollId) {
73
+    public ResponseEntity<Poll> updatePoll(@RequestBody @Valid Poll poll, @PathVariable Long pollId) {
73 74
         verifyPoll(pollId);
74 75
         return new ResponseEntity<>(pollRepository.save(poll), HttpStatus.OK);
75 76
     }

+ 5
- 0
src/main/java/io/zipcoder/tc_spring_poll_application/domain/Poll.java Целия файл

@@ -1,6 +1,8 @@
1 1
 package io.zipcoder.tc_spring_poll_application.domain;
2 2
 
3 3
 import javax.persistence.*;
4
+import javax.validation.constraints.NotEmpty;
5
+import javax.validation.constraints.Size;
4 6
 import java.util.Set;
5 7
 
6 8
 /**
@@ -12,17 +14,20 @@ import java.util.Set;
12 14
 @Entity
13 15
 public class Poll {
14 16
 
17
+
15 18
     @Id
16 19
     @GeneratedValue
17 20
     @Column(name = "POLL_ID")
18 21
     private Long Id;
19 22
 
20 23
     @Column(name = "QUESTION")
24
+    @NotEmpty
21 25
     private String question;
22 26
 
23 27
     @OneToMany(cascade = CascadeType.ALL)
24 28
     @JoinColumn(name = "POLL_ID")
25 29
     @OrderBy
30
+    @Size(min=2, max = 6)
26 31
     private Set<Option> options;
27 32
 
28 33
     public Poll() {

+ 32
- 0
src/main/java/io/zipcoder/tc_spring_poll_application/error/RestExceptionHandler.java Целия файл

@@ -0,0 +1,32 @@
1
+package io.zipcoder.tc_spring_poll_application.error;
2
+
3
+import io.zipcoder.tc_spring_poll_application.exception.ResourceNotFoundException;
4
+import org.springframework.http.HttpStatus;
5
+import org.springframework.http.ResponseEntity;
6
+import org.springframework.web.bind.annotation.ControllerAdvice;
7
+import org.springframework.web.bind.annotation.ExceptionHandler;
8
+
9
+import javax.servlet.http.HttpServletRequest;
10
+import java.util.Arrays;
11
+import java.util.Date;
12
+
13
+/**
14
+ * project: spring-demo
15
+ * package: io.zipcoder.tc_spring_poll_application.error
16
+ * author: https://github.com/vvmk
17
+ * date: 4/7/18
18
+ */
19
+@ControllerAdvice
20
+public class RestExceptionHandler {
21
+    @ExceptionHandler(ResourceNotFoundException.class)
22
+    public ResponseEntity<?> handleResourceNotFoundException(ResourceNotFoundException rnfe,
23
+                                                             HttpServletRequest request) {
24
+        ErrorDetail err = new ErrorDetail();
25
+        err.setTimestamp(new Date().getTime());
26
+        err.setStatus(HttpStatus.NOT_FOUND.value());
27
+        err.setDetail(rnfe.getMessage());
28
+        err.setDeveloperMessage(Arrays.toString(rnfe.getStackTrace()));
29
+        err.setTitle(rnfe.getClass().toString());
30
+        return new ResponseEntity<>(err, HttpStatus.NOT_FOUND);
31
+    }
32
+}

+ 0
- 2
src/test/java/io/zipcoder/tc_spring_poll_application/controllers/PollControllerTest.java Целия файл

@@ -143,8 +143,6 @@ public class PollControllerTest {
143 143
 
144 144
     @Test
145 145
     public void testVerifyPoll() {
146
-
147
-
148 146
         try {
149 147
             pollCtrl.verifyPoll(exists);
150 148
         } catch (ResourceNotFoundException rnfe) {