Skip to content

Instantly share code, notes, and snippets.

@rponte
Created March 6, 2014 01:39
Show Gist options
  • Select an option

  • Save rponte/9380516 to your computer and use it in GitHub Desktop.

Select an option

Save rponte/9380516 to your computer and use it in GitHub Desktop.
package icob.web.interceptor;
import java.util.Iterator;
import java.util.Locale;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Specializes;
import javax.inject.Inject;
import javax.validation.ConstraintViolation;
import javax.validation.MessageInterpolator;
import javax.validation.Path.Node;
import javax.validation.Path.ParameterNode;
import javax.validation.Validator;
import br.com.caelum.vraptor.http.ValuedParameter;
import br.com.caelum.vraptor.validator.beanvalidation.MethodValidator;
@ApplicationScoped
@Specializes
public class CustomMethodValidator
extends MethodValidator {
public CustomMethodValidator() {
this(null, null, null);
}
@Inject
public CustomMethodValidator(Locale locale, MessageInterpolator interpolator, Validator bvalidator) {
super(locale, interpolator, bvalidator);
}
@Override
protected String extractCategory(ValuedParameter[] params, ConstraintViolation<Object> violation) {
Iterator<Node> path = violation.getPropertyPath().iterator();
path.next(); // skip method name
StringBuilder category = new StringBuilder();
category.append(params[path.next().as(ParameterNode.class).getParameterIndex()].getName());
while (path.hasNext()) {
category.append(".").append(path.next());
}
return category.toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment