@Override public boolean isValid(Object value, ConstraintValidatorContext context) { List<Field> fieldsErros = new ArrayList<>(); Arrays.asList(value.getClass().getDeclaredFields()).forEach(f -> { f.setAccessible(true); try { if (!f.getName().equals(ID) && f.get(value) == null) { fieldsErros.add(f); context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()) .addPropertyNode(f.getName()) .addConstraintViolation(); } } catch (IllegalAccessException ex) { throw new IllegalStateException(ex); } }); return fieldsErros.isEmpty(); } }
@Override public boolean isValid(Object value, ConstraintValidatorContext context) { List<Field> fieldsErros = new ArrayList<>(); Arrays.asList(value.getClass().getDeclaredFields()).forEach(f -> { f.setAccessible(true); try { if (!f.getName().equals(ID) && f.get(value) == null) { fieldsErros.add(f); context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()) .addPropertyNode(f.getName()) .addConstraintViolation(); } } catch (IllegalAccessException ex) { throw new IllegalStateException(ex); } }); return fieldsErros.isEmpty(); } }
ctx.buildConstraintViolationWithTemplate(ctx.getDefaultConstraintMessageTemplate()) .addNode(dependFieldName) .addConstraintViolation();
@Override public boolean isValid(List<String> list, ConstraintValidatorContext context) { context.disableDefaultConstraintViolation(); boolean valid = true; for (int i = 0; i < list.size(); i++) { if ("X".equals(list.get(i))) { context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()).addBeanNode().inIterable().atIndex(i).addConstraintViolation(); valid = false; } } return valid; } }
@Override public boolean isValid(ValidPerson value, ConstraintValidatorContext context) { if (value.expectsAutowiredValidator) { assertNotNull(this.environment); } boolean valid = (value.name == null || !value.address.street.contains(value.name)); if (!valid && "Phil".equals(value.name)) { context.buildConstraintViolationWithTemplate( context.getDefaultConstraintMessageTemplate()).addPropertyNode("address").addConstraintViolation().disableDefaultConstraintViolation(); } return valid; } }
@Override public boolean isValid(List<String> list, ConstraintValidatorContext context) { context.disableDefaultConstraintViolation(); boolean valid = true; for (int i = 0; i < list.size(); i++) { if ("X".equals(list.get(i))) { context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()).addBeanNode().inIterable().atIndex(i).addConstraintViolation(); valid = false; } } return valid; } }
@Override public boolean isValid(ValidPerson value, ConstraintValidatorContext context) { if (value.expectsAutowiredValidator) { assertNotNull(this.environment); } boolean valid = (value.name == null || !value.address.street.contains(value.name)); if (!valid && "Phil".equals(value.name)) { context.buildConstraintViolationWithTemplate( context.getDefaultConstraintMessageTemplate()).addPropertyNode("address").addConstraintViolation().disableDefaultConstraintViolation(); } return valid; } }
ConstraintViolationBuilder cvb = context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()); cvb.addNode(someField).addConstraintViolation();
ConstraintViolationBuilder cvb = context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()); cvb.addNode(firstFieldName).addConstraintViolation(); ConstraintViolationBuilder cvb = context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()); cvb.addNode(someField).addConstraintViolation(secondFieldName);
/** * Adds a violation in the context. * @param context the context */ @VisibleForTesting void addViolation(ConstraintValidatorContext context) { context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()) .addConstraintViolation(); } }
@Override public IConstraintValidationContext addDefaultError() { addErrors().buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()).addConstraintViolation(); return this; }
/** * Adds a violation with the property name in the context. * @param context the context * @param property the property name */ @VisibleForTesting void addViolation(ConstraintValidatorContext context, String property) { context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()) .addPropertyNode(property) .addConstraintViolation(); } }
@Override public boolean isValid(String value, ConstraintValidatorContext context) { context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate( context.getDefaultConstraintMessageTemplate() ) .addParameterNode( 0 ) .addConstraintViolation(); return false; } }
/** * Adds a violation with the field in the context. * @param context the context * @param fieldName the field name. */ @VisibleForTesting void addViolation(ConstraintValidatorContext context, String fieldName) { context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()) .addPropertyNode(fieldName) .inIterable() .addConstraintViolation(); }
@Before public void setup() throws Exception { doNothing().when(context).disableDefaultConstraintViolation(); when(context.getDefaultConstraintMessageTemplate()).thenReturn("foobar"); when(context.buildConstraintViolationWithTemplate(eq("foobar"))) .thenReturn(contextBuilder); when(contextBuilder.addPropertyNode(anyString())) .thenReturn(contextBuilderContext); when(contextBuilderContext.addConstraintViolation()) .thenReturn(constraintValidatorContext); }
/** * We must show error for the list of items of validated poll, so * we must change the node name in error message to do it. * * @param context to add error message for the title fields */ private void addConstraintViolatedErrorMessage(ConstraintValidatorContext context) { String message = context.getDefaultConstraintMessageTemplate(); context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate(message) .addNode(pollItemsFieldName) .addConstraintViolation(); } }
/** * We must show error for the title of validated poll, so * we must change the node name in error message to do it. * * @param context to add error message for the title fields */ private void addConstraintViolatedErrorMessage(ConstraintValidatorContext context) { String message = context.getDefaultConstraintMessageTemplate(); context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate(message) .addNode(titleFieldName) .addConstraintViolation(); } }
@SuppressWarnings("deprecation") @Override public boolean isValid(MyObject value, ConstraintValidatorContext context) { context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate( context.getDefaultConstraintMessageTemplate() ) .addNode( "myNode1" ) .addConstraintViolation(); context.buildConstraintViolationWithTemplate( context.getDefaultConstraintMessageTemplate() ) .addNode( "myNode2" ) .addNode( "myNode3" ).inIterable().atKey( "key" ) .addConstraintViolation(); return false; } }
@Override public boolean isValid(PushNotification notification, ConstraintValidatorContext context) { context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()) .addPropertyNode("expirationAmount") .addConstraintViolation(); return notification == null || notification.getExpirationType() == null || (notification.getExpirationAmount() >= 0 && notification.getExpirationAmount() <= notification.getExpirationType().getMaxAmount()); } }
@Override public boolean isValid(PushNotification notification, ConstraintValidatorContext context) { context.disableDefaultConstraintViolation(); context.buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()) .addPropertyNode("expirationAmount") .addConstraintViolation(); return notification == null || notification.getExpirationType() == null || (notification.getExpirationAmount() >= 0 && notification.getExpirationAmount() <= notification.getExpirationType().getMaxAmount()); } }