@Override public boolean isValid(String value, ConstraintValidatorContext context) { if (value == null) { return true; } final boolean valid = Arrays.asList(strings).contains(value); if (!valid) { HibernateConstraintValidatorContext hibernateContext = context.unwrap(HibernateConstraintValidatorContext.class); hibernateContext.disableDefaultConstraintViolation(); hibernateContext.addExpressionVariable("validValues", Joiner.on(" ").join(strings)) .buildConstraintViolationWithTemplate(hibernateContext.getDefaultConstraintMessageTemplate()) .addConstraintViolation(); } return valid; } }
/** * @param collection the collection to validate * @param constraintValidatorContext context in which the constraint is evaluated * * @return true if the input collection is null or does not contain duplicate elements */ @Override public boolean isValid(Collection collection, ConstraintValidatorContext constraintValidatorContext) { if ( collection == null || collection.size() < 2 ) { return true; } List<Object> duplicates = findDuplicates( collection ); if ( duplicates.isEmpty() ) { return true; } if ( constraintValidatorContext instanceof HibernateConstraintValidatorContext ) { constraintValidatorContext.unwrap( HibernateConstraintValidatorContext.class ) .addMessageParameter( "duplicates", duplicates.stream().map( String::valueOf ).collect( Collectors.joining( ", " ) ) ) .withDynamicPayload( CollectionHelper.toImmutableList( duplicates ) ); } return false; }
private void setMessageTemplate(ConstraintValidatorContext context, String messageTemplate, String value) { HibernateConstraintValidatorContext hibernateContext = context.unwrap(HibernateConstraintValidatorContext.class); hibernateContext.disableDefaultConstraintViolation(); hibernateContext.addExpressionVariable("value", value).buildConstraintViolationWithTemplate(messageTemplate).addConstraintViolation(); } }
public boolean isValid(Date value, ConstraintValidatorContext context) { Date now = GregorianCalendar.getInstance().getTime(); if ( value.before( now ) ) { HibernateConstraintValidatorContext hibernateContext = context.unwrap( HibernateConstraintValidatorContext.class ); hibernateContext.disableDefaultConstraintViolation(); hibernateContext.addExpressionVariable( "now", now ) .buildConstraintViolationWithTemplate( "Must be after ${now}" ) .addConstraintViolation(); return false; } return true; }
@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); }
@Override public boolean isValid(final WithId<?> value, final ConstraintValidatorContext context) { if (value == null) { return true; } final PropertyAccessor bean = new BeanWrapperImpl(value); final String propertyValue = String.valueOf(bean.getPropertyValue(property)); @SuppressWarnings({"rawtypes", "unchecked"}) final Class<WithId> modelClass = (Class) value.getKind().modelClass; @SuppressWarnings("unchecked") final Set<String> ids = dataManager.fetchIdsByPropertyValue(modelClass, property, propertyValue); final boolean isUnique = ids.isEmpty() || value.getId().map(id -> ids.contains(id)).orElse(false); if (!isUnique) { if (ids.stream().allMatch(id -> consideredValidByException(modelClass, id))) { return true; } context.disableDefaultConstraintViolation(); context.unwrap(HibernateConstraintValidatorContext.class).addExpressionVariable("nonUnique", propertyValue) .buildConstraintViolationWithTemplate(context.getDefaultConstraintMessageTemplate()) .addPropertyNode(property).addConstraintViolation(); } return isUnique; }
/** * @param object the object to check * @param constraintContext The JSR-303 validation context. * @return {@code true} if this value is valid for the given constraint. */ public boolean isValid(T object, ConstraintValidatorContext constraintContext) { return isValid(object, constraintContext.unwrap(HibernateConstraintValidatorContext.class).getConstraintValidatorPayload(ValidationPayload.class)); }
default boolean reportValidationStatus(final Object validationResult, final ConstraintValidatorContext constraintValidatorContext) { if(validationSuccessful(validationResult)) { return true; } constraintValidatorContext .unwrap(HibernateConstraintValidatorContext.class) .withDynamicPayload(validationResult); return false; } }
@Override public boolean isValid(CharSequence value, ConstraintValidatorContext constraintValidatorContext) { if ( value == null ) { return true; } if ( constraintValidatorContext instanceof HibernateConstraintValidatorContext ) { constraintValidatorContext.unwrap( HibernateConstraintValidatorContext.class ).addMessageParameter( "regexp", escapedRegexp ); } Matcher m = pattern.matcher( value ); return m.matches(); } }
/** * @param object the object to check * @param constraintContext The JSR-303 validation context. * @return {@code true} if this value is valid for the given constraint. */ public boolean isValid(T object, ConstraintValidatorContext constraintContext) { return isValid(object, constraintContext.unwrap(HibernateConstraintValidatorContext.class).getConstraintValidatorPayload(ValidationPayload.class)); }
default boolean reportValidationStatus(final Object validationResult, final ConstraintValidatorContext constraintValidatorContext) { if(validationSuccessful(validationResult)) { return true; } constraintValidatorContext .unwrap(HibernateConstraintValidatorContext.class) .withDynamicPayload(validationResult); return false; } }
@Override public boolean isValid(CharSequence value, ConstraintValidatorContext constraintValidatorContext) { if ( value == null ) { return true; } if ( constraintValidatorContext instanceof HibernateConstraintValidatorContext ) { constraintValidatorContext.unwrap( HibernateConstraintValidatorContext.class ).addMessageParameter( "regexp", escapedRegexp ); } Matcher m = pattern.matcher( value ); return m.matches(); } }
/** * @param object the object to check * @param constraintContext The JSR-303 validation context. * @return {@code true} if this value is valid for the given constraint. */ public boolean isValid(T object, ConstraintValidatorContext constraintContext) { return isValid(object, constraintContext.unwrap(HibernateConstraintValidatorContext.class).getConstraintValidatorPayload(ValidationPayload.class)); }
default boolean reportValidationStatus(final Object validationResult, final ConstraintValidatorContext constraintValidatorContext) { if(validationSuccessful(validationResult)) { return true; } constraintValidatorContext .unwrap(HibernateConstraintValidatorContext.class) .withDynamicPayload(validationResult); return false; } }
@Override public boolean isValid(Object[] arguments, ConstraintValidatorContext constraintValidatorContext) { if ( constraintValidatorContext instanceof HibernateConstraintValidatorContext ) { constraintValidatorContext.unwrap( HibernateConstraintValidatorContext.class ).addMessageParameter( "script", escapedScript ); } List<String> parameterNames = ( (ConstraintValidatorContextImpl) constraintValidatorContext ) .getMethodParameterNames(); Map<String, Object> bindings = getBindings( arguments, parameterNames ); return scriptAssertContext.evaluateScriptAssertExpression( bindings ); }
boolean isValid(final T value, final ValidationPayload payload, final ConstraintValidatorContext constraintValidatorContext); }
@Override public boolean isValid(Object[] arguments, ConstraintValidatorContext constraintValidatorContext) { if ( constraintValidatorContext instanceof HibernateConstraintValidatorContext ) { constraintValidatorContext.unwrap( HibernateConstraintValidatorContext.class ).addMessageParameter( "script", escapedScript ); } List<String> parameterNames = ( (ConstraintValidatorContextImpl) constraintValidatorContext ) .getMethodParameterNames(); Map<String, Object> bindings = getBindings( arguments, parameterNames ); return scriptAssertContext.evaluateScriptAssertExpression( bindings ); }
boolean isValid(final T value, final ValidationPayload payload, final ConstraintValidatorContext constraintValidatorContext); }
@Override public boolean isValid(Object value, ConstraintValidatorContext constraintValidatorContext) { if ( constraintValidatorContext instanceof HibernateConstraintValidatorContext ) { constraintValidatorContext.unwrap( HibernateConstraintValidatorContext.class ).addMessageParameter( "script", escapedScript ); } boolean validationResult = scriptAssertContext.evaluateScriptAssertExpression( value, alias ); if ( !validationResult && !reportOn.isEmpty() ) { constraintValidatorContext.disableDefaultConstraintViolation(); constraintValidatorContext.buildConstraintViolationWithTemplate( message ).addPropertyNode( reportOn ).addConstraintViolation(); } return validationResult; }
boolean isValid(final T value, final ValidationPayload payload, final ConstraintValidatorContext constraintValidatorContext); }