All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jakarta.validation.constraints.FutureOrPresent Maven / Gradle / Ivy

There is a newer version: 4.0.0
Show newest version
/*
 * Jakarta Bean Validation API
 *
 * License: Apache License, Version 2.0
 * See the license.txt file in the root directory or .
 */
package jakarta.validation.constraints;

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.time.Year;

import jakarta.validation.ClockProvider;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import jakarta.validation.Validator;
import jakarta.validation.ValidatorFactory;
import jakarta.validation.constraints.FutureOrPresent.List;

/**
 * The annotated element must be an instant, date or time in the present or in the future.
 * 

* Now is defined by the {@link ClockProvider} attached to the {@link Validator} or * {@link ValidatorFactory}. The default {@code clockProvider} defines the current time * according to the virtual machine, applying the current default time zone if needed. *

* The notion of present here is defined relatively to the type on which the constraint is * used. For instance, if the constraint is on a {@link Year}, present would mean the whole * current year. *

* Supported types are: *

    *
  • {@code java.util.Date}
  • *
  • {@code java.util.Calendar}
  • *
  • {@code java.time.Instant}
  • *
  • {@code java.time.LocalDate}
  • *
  • {@code java.time.LocalDateTime}
  • *
  • {@code java.time.LocalTime}
  • *
  • {@code java.time.MonthDay}
  • *
  • {@code java.time.OffsetDateTime}
  • *
  • {@code java.time.OffsetTime}
  • *
  • {@code java.time.Year}
  • *
  • {@code java.time.YearMonth}
  • *
  • {@code java.time.ZonedDateTime}
  • *
  • {@code java.time.chrono.HijrahDate}
  • *
  • {@code java.time.chrono.JapaneseDate}
  • *
  • {@code java.time.chrono.MinguoDate}
  • *
  • {@code java.time.chrono.ThaiBuddhistDate}
  • *
*

* {@code null} elements are considered valid. * * @author Guillaume Smet * @since 2.0 */ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Repeatable(List.class) @Documented @Constraint(validatedBy = { }) public @interface FutureOrPresent { String message() default "{jakarta.validation.constraints.FutureOrPresent.message}"; Class[] groups() default { }; Class[] payload() default { }; /** * Defines several {@link FutureOrPresent} annotations on the same element. * * @see FutureOrPresent */ @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Documented @interface List { FutureOrPresent[] value(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy