Skip to content

Commit 9b1b301

Browse files
author
Ronny Bräunlich
committed
improve validation slightly
1 parent 4890c29 commit 9b1b301

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

src/main/java/de/codecentric/spring/additionalvalidation/controller/ValidationController.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.springframework.web.bind.annotation.RequestMapping;
1515
import org.springframework.web.bind.annotation.RequestMethod;
1616
import org.springframework.web.bind.annotation.RestController;
17+
import org.springframework.web.context.annotation.RequestScope;
1718

1819
import java.util.stream.Collectors;
1920

@@ -29,9 +30,7 @@ public ValidationController(StringValueValidator stringValueValidator) {
2930

3031
@RequestMapping(value = "/validation", method = RequestMethod.POST)
3132
public ResponseEntity<?> acceptData(@Validated @RequestBody Data data, Errors errors, @RequestHeader(HttpHeaders.ACCEPT_LANGUAGE) String language) {
32-
if (!"de-DE".equals(language)) {
33-
stringValueValidator.validate(data, errors);
34-
}
33+
stringValueValidator.validate(language, data, errors);
3534
if (errors.hasErrors()) {
3635
return new ResponseEntity<>(createErrorString(errors), HttpStatus.BAD_REQUEST);
3736
}
Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
package de.codecentric.spring.additionalvalidation.validator;
22

3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
35
import de.codecentric.spring.additionalvalidation.controller.Data;
46

7+
import org.springframework.beans.factory.annotation.Autowired;
58
import org.springframework.stereotype.Component;
69
import org.springframework.validation.Errors;
710

11+
import javax.servlet.http.HttpServletRequest;
12+
813
@Component
914
public class StringValueValidator {
1015

11-
public void validate(Data data, Errors errors) {
12-
if (data.getSomeStringValue().length() > 140) {
13-
errors.reject("someStringValue");
16+
public void validate(String language, Data data, Errors errors) {
17+
if (!"de-DE".equals(language)) {
18+
if (data.getSomeStringValue().length() > 140) {
19+
errors.reject("someStringValue");
20+
}
1421
}
1522
}
1623
}

src/test/java/de/codecentric/spring/additionalvalidation/ValidationControllerTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,24 @@ public void shouldAcceptLongerStringForDe() throws Exception {
9999
.andExpect(status().isBadRequest());
100100
}
101101

102+
@Test
103+
public void shouldSwitchLanguageBetweenTwoRequests() throws Exception {
104+
this.mockMvc.perform(post("/validation")
105+
.contentType(MediaType.APPLICATION_JSON_UTF8)
106+
.header(HttpHeaders.ACCEPT_LANGUAGE, "en-GB")
107+
.content("{" +
108+
"\"someStringValue\":\"MSsX0DHN2FKHCjkkyMuCnj9PNQ10wD0QmN863rQZOPZIXiJg2vvRMdC9AJDDXeX5AVnglYG2lkHtVv9L47gI40IBdKS4MrgPe13GaS0iKgZeukJJS3zcOHywx39QyjejadI46wSmhi8si\"," +
109+
"\"someIntValue\":1" +
110+
"}"))
111+
.andExpect(status().isBadRequest());
112+
this.mockMvc.perform(post("/validation")
113+
.contentType(MediaType.APPLICATION_JSON_UTF8)
114+
.header(HttpHeaders.ACCEPT_LANGUAGE, "de-DE")
115+
.content("{" +
116+
"\"someStringValue\":\"MSsX0DHN2FKHCjkkyMuCnj9PNQ10wD0QmN863rQZOPZIXiJg2vvRMdC9AJDDXeX5AVnglYG2lkHtVv9L47gI40IBdKS4MrgPe13GaS0iKgZeukJJS3zcOHywx39QyjejadI46wSmhi8si\"," +
117+
"\"someIntValue\":1" +
118+
"}"))
119+
.andExpect(status().isOk());
120+
}
121+
102122
}

0 commit comments

Comments
 (0)