package com.github.rojanu.validation;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Ordering;
import com.google.common.collect.Sets;
import java.util.Set;
import javax.validation.ConstraintViolation;
public class ConstraintViolations {
private ConstraintViolations() { /* singleton */ }
public static <T> String format(ConstraintViolation<T> v) {
return String.format("%s %s (was %s)",
v.getPropertyPath(),
v.getMessage(),
v.getInvalidValue());
}
public static <T> ImmutableList<String> format(Set<ConstraintViolation<T>> violations) {
final Set<String> errors = Sets.newHashSet();
for (ConstraintViolation<?> v : violations) {
errors.add(format(v));
}
return ImmutableList.copyOf(Ordering.natural().sortedCopy(errors));
}
public static ImmutableList<String> formatUntyped(Set<ConstraintViolation<?>> violations) {
final Set<String> errors = Sets.newHashSet();
for (ConstraintViolation<?> v : violations) {
errors.add(format(v));
}
return ImmutableList.copyOf(Ordering.natural().sortedCopy(errors));
}
public static <T> ImmutableSet<ConstraintViolation<?>> copyOf(Set<ConstraintViolation<T>> violations) {
final ImmutableSet.Builder<ConstraintViolation<?>> builder = ImmutableSet.builder();
for (ConstraintViolation<T> violation : violations) {
builder.add(violation);
}
return builder.build();
}
}