@Override
	public boolean isValid(Object value, ConstraintValidatorContext context) {
		if (!new RequiredValidator().isValid(value, context)) {
			return true;
		}

		Date dateValue = (Date) value;

		if (!util.isValid(annotation, dateValue, context)) {
			if (annotation.message().isEmpty()) {
				buildConstraintViolation(context, annotation.value());
			}
			return false;
		}
		if (!util.isValidMin(annotation, dateValue, context)) {
			if (annotation.message().isEmpty()) {
				buildConstraintViolation(context, annotation.min());
			}
			return false;
		}
		if (!util.isValidMax(annotation, dateValue, context)) {
			if (annotation.message().isEmpty()) {
				buildConstraintViolation(context, annotation.max());
			}
			return false;
		}

		return true;
	}