org.hibernate.validator.internal.constraintvalidators.bv.future.FutureValidatorForInstant Maven / Gradle / Ivy
/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or .
*/
package org.hibernate.validator.internal.constraintvalidators.bv.future;
import java.time.Instant;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.constraints.Future;
import org.hibernate.validator.constraintvalidation.HibernateConstraintValidatorContext;
import org.hibernate.validator.internal.util.IgnoreJava6Requirement;
import org.hibernate.validator.spi.time.TimeProvider;
/**
* Check that the {@code java.time.Instant} passed is in the future.
*
* @author Khalid Alqinyah
*/
@IgnoreJava6Requirement
public class FutureValidatorForInstant implements ConstraintValidator {
@Override
public void initialize(Future constraintAnnotation) {
}
@Override
public boolean isValid(Instant value, ConstraintValidatorContext context) {
// null values are valid
if ( value == null ) {
return true;
}
TimeProvider timeProvider = context.unwrap( HibernateConstraintValidatorContext.class )
.getTimeProvider();
long now = timeProvider.getCurrentTime();
return value.toEpochMilli() > now;
}
}