下面列出了怎么用javax.validation.ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public boolean isValid(final HelperBean bean, final ConstraintValidatorContext context) {
context.disableDefaultConstraintViolation();
// build a custom property path
ConstraintViolationBuilder builder =
context.buildConstraintViolationWithTemplate(getEscapeHelper().stripJavaEl(bean.getMessage()));
NodeBuilderCustomizableContext nodeBuilder = null;
for (String part : bean.getPath().split("\\.")) {
if (nodeBuilder == null) {
nodeBuilder = builder.addPropertyNode(part);
}
else {
nodeBuilder = nodeBuilder.addPropertyNode(part);
}
}
if (nodeBuilder != null) {
nodeBuilder.addConstraintViolation();
}
return false;
}
@Test
public void shouldAscertainPropertyUniqueness() {
final HibernateConstraintValidatorContext context = mock(HibernateConstraintValidatorContext.class);
when(context.unwrap(HibernateConstraintValidatorContext.class)).thenReturn(context);
when(context.addExpressionVariable(eq("nonUnique"), anyString())).thenReturn(context);
when(context.getDefaultConstraintMessageTemplate()).thenReturn("template");
final ConstraintViolationBuilder builder = mock(ConstraintViolationBuilder.class);
when(context.buildConstraintViolationWithTemplate("template")).thenReturn(builder);
when(builder.addPropertyNode(anyString())).thenReturn(mock(NodeBuilderCustomizableContext.class));
assertThat(validator.isValid(connection, context)).isEqualTo(validity);
}
@Before
public void setupMocks() {
constraintViolationBuilder = mock(ConstraintValidatorContext.ConstraintViolationBuilder.class);
nodeBuilderCustomizableContext =
mock(ConstraintValidatorContext.ConstraintViolationBuilder.NodeBuilderCustomizableContext.class);
validatorContext = mock(ConstraintValidatorContext.class);
when(validatorContext.buildConstraintViolationWithTemplate(any())).thenReturn(constraintViolationBuilder);
when(constraintViolationBuilder.addPropertyNode(any())).thenReturn(nodeBuilderCustomizableContext);
when(nodeBuilderCustomizableContext.addConstraintViolation()).thenReturn(validatorContext);
doNothing().when(validatorContext).disableDefaultConstraintViolation();
}