Skip to content
This repository was archived by the owner on Dec 15, 2018. It is now read-only.

Commit 559def1

Browse files
committed
Updated implementation of the BindingResult interface
1 parent e22ba60 commit 559def1

File tree

5 files changed

+22
-48
lines changed

5 files changed

+22
-48
lines changed

core/src/main/java/org/mvcspec/ozark/binding/BindingResultImpl.java

Lines changed: 13 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,15 @@
1818
import javax.enterprise.inject.Vetoed;
1919
import javax.mvc.binding.BindingError;
2020
import javax.mvc.binding.BindingResult;
21+
import javax.mvc.binding.ParamError;
2122
import javax.mvc.binding.ValidationError;
22-
import java.util.ArrayList;
2323
import java.util.Collections;
2424
import java.util.LinkedHashSet;
2525
import java.util.List;
2626
import java.util.Objects;
2727
import java.util.Set;
2828
import java.util.stream.Collectors;
29-
30-
import static java.util.stream.Collectors.collectingAndThen;
31-
import static java.util.stream.Collectors.toSet;
29+
import java.util.stream.Stream;
3230

3331
/**
3432
* Implementation for {@link javax.mvc.binding.BindingResult} interface.
@@ -54,49 +52,25 @@ public boolean isFailed() {
5452
@Override
5553
public List<String> getAllMessages() {
5654
this.consumed = true;
57-
final List<String> result = new ArrayList<>();
58-
bindingErrors.forEach(error -> result.add(error.getMessage()));
59-
validationErrors.forEach(violation -> result.add(violation.getMessage()));
60-
return Collections.unmodifiableList(result);
61-
}
62-
63-
@Override
64-
public Set<BindingError> getAllBindingErrors() {
65-
this.consumed = true;
66-
return Collections.unmodifiableSet(bindingErrors);
67-
}
68-
69-
@Override
70-
public BindingError getBindingError(String param) {
71-
this.consumed = true;
72-
for (BindingError error : bindingErrors) {
73-
if (param.equals(error.getParamName())) {
74-
return error;
75-
}
76-
}
77-
return null;
78-
}
79-
80-
@Override
81-
public Set<ValidationError> getAllValidationErrors() {
82-
this.consumed = true;
83-
return Collections.unmodifiableSet(validationErrors);
55+
return Stream.concat(bindingErrors.stream(), validationErrors.stream())
56+
.map(ParamError::getMessage)
57+
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
8458
}
8559

8660
@Override
87-
public Set<ValidationError> getValidationErrors(String param) {
61+
public Set<ParamError> getAllErrors() {
8862
this.consumed = true;
89-
return validationErrors.stream()
90-
.filter(ve -> Objects.equals(ve.getParamName(), param))
91-
.collect(collectingAndThen(toSet(), Collections::unmodifiableSet));
63+
return Stream.concat(bindingErrors.stream(), validationErrors.stream())
64+
.collect(Collectors.collectingAndThen(Collectors.toSet(), Collections::unmodifiableSet));
9265
}
9366

9467
@Override
95-
public ValidationError getValidationError(String param) {
68+
public Set<ParamError> getErrors(String param) {
69+
Objects.requireNonNull(param, "Parameter name is required");
9670
this.consumed = true;
97-
return validationErrors.stream()
98-
.filter(ve -> Objects.equals(ve.getParamName(), param))
99-
.findFirst().orElse(null);
71+
return Stream.concat(bindingErrors.stream(), validationErrors.stream())
72+
.filter(paramError -> Objects.equals(paramError.getParamName(), param))
73+
.collect(Collectors.collectingAndThen(Collectors.toSet(), Collections::unmodifiableSet));
10074
}
10175

10276
public void addValidationErrors(Set<ValidationError> validationErrors) {

core/src/main/java/org/mvcspec/ozark/binding/validate/ValidationInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ private void processViolations(InvocationContext ctx, Set<ConstraintViolation<Ob
127127
}
128128

129129
boolean hasBindingError = paramName != null && !paramName.isEmpty() &&
130-
bindingResult.getBindingError(paramName) != null;
130+
bindingResult.getErrors(paramName).size() > 0;
131131

132132
// if there was a binding error, not the user's input but the default value got validated
133133
if (!hasBindingError) {

test/validation-i18n/src/main/java/org/mvcspec/ozark/test/validation/ValidationController.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
package org.mvcspec.ozark.test.validation;
1717

1818
import javax.inject.Inject;
19-
import javax.mvc.Models;
2019
import javax.mvc.Controller;
20+
import javax.mvc.Models;
2121
import javax.mvc.binding.BindingResult;
22-
import javax.mvc.binding.ValidationError;
22+
import javax.mvc.binding.ParamError;
2323
import javax.validation.Valid;
2424
import javax.ws.rs.BeanParam;
2525
import javax.ws.rs.GET;
@@ -51,8 +51,8 @@ public String post(@Valid @BeanParam FormBean form) {
5151

5252
if (bindingResult.isFailed()) {
5353

54-
List<String> errors = bindingResult.getAllValidationErrors().stream()
55-
.map(ValidationError::getMessage)
54+
List<String> errors = bindingResult.getAllErrors().stream()
55+
.map(ParamError::getMessage)
5656
.collect(Collectors.toList());
5757

5858
models.put("errors", errors);

test/validation/src/main/java/org/mvcspec/ozark/test/validation/FormController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
import javax.enterprise.context.RequestScoped;
1919
import javax.inject.Inject;
2020
import javax.mvc.Controller;
21-
import javax.mvc.binding.BindingError;
2221
import javax.mvc.binding.BindingResult;
22+
import javax.mvc.binding.ParamError;
2323
import javax.mvc.binding.ValidationError;
2424
import javax.validation.ConstraintViolation;
2525
import javax.validation.Valid;
@@ -55,7 +55,7 @@ public class FormController {
5555
@Controller
5656
public Response formPost(@Valid @BeanParam FormDataBean form) {
5757
if (br.isFailed()) {
58-
ValidationError validationError = br.getAllValidationErrors().iterator().next();
58+
ValidationError validationError = (ValidationError) br.getAllErrors().iterator().next();
5959
final ConstraintViolation<?> cv = validationError.getViolation();
6060
final String property = cv.getPropertyPath().toString();
6161
error.setProperty(property.substring(property.lastIndexOf('.') + 1));
@@ -71,7 +71,7 @@ public Response formPost(@Valid @BeanParam FormDataBean form) {
7171
@Controller
7272
public Response get(@QueryParam("n") @DefaultValue("25") int n) {
7373
if (br.isFailed()) {
74-
final BindingError be = br.getBindingError("n");
74+
final ParamError be = br.getErrors("n").iterator().next();
7575
error.setProperty(be.getParamName());
7676
error.setMessage(be.getMessage());
7777
return Response.ok("binderror.jsp").build();

test/validation/src/main/java/org/mvcspec/ozark/test/validation/FormControllerProperty.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class FormControllerProperty extends FormControllerBase {
4848
public Response formPost(@Valid @BeanParam FormDataBean form) {
4949
final BindingResult vr = getVr();
5050
if (vr.isFailed()) {
51-
ValidationError validationError = vr.getAllValidationErrors().iterator().next();
51+
ValidationError validationError = (ValidationError) vr.getAllErrors().iterator().next();
5252
final ConstraintViolation<?> cv = validationError.getViolation();
5353
final String property = cv.getPropertyPath().toString();
5454
error.setProperty(property.substring(property.lastIndexOf('.') + 1));

0 commit comments

Comments
 (0)