/*
 * Jakarta Bean Validation API
 *
 * License: Apache License, Version 2.0
 * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
 */
package javax.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 javax.validation.ClockProvider;
import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.constraints.Past.List;

The annotated element must be an instant, date or time in the past.

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

Supported types are:

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

null elements are considered valid.

Author:Emmanuel Bernard
/** * The annotated element must be an instant, date or time in the past. * <p> * <i>Now</i> 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. * <p> * Supported types are: * <ul> * <li>{@code java.util.Date}</li> * <li>{@code java.util.Calendar}</li> * <li>{@code java.time.Instant}</li> * <li>{@code java.time.LocalDate}</li> * <li>{@code java.time.LocalDateTime}</li> * <li>{@code java.time.LocalTime}</li> * <li>{@code java.time.MonthDay}</li> * <li>{@code java.time.OffsetDateTime}</li> * <li>{@code java.time.OffsetTime}</li> * <li>{@code java.time.Year}</li> * <li>{@code java.time.YearMonth}</li> * <li>{@code java.time.ZonedDateTime}</li> * <li>{@code java.time.chrono.HijrahDate}</li> * <li>{@code java.time.chrono.JapaneseDate}</li> * <li>{@code java.time.chrono.MinguoDate}</li> * <li>{@code java.time.chrono.ThaiBuddhistDate}</li> * </ul> * <p> * {@code null} elements are considered valid. * * @author Emmanuel Bernard */
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Repeatable(List.class) @Documented @Constraint(validatedBy = { }) public @interface Past { String message() default "{javax.validation.constraints.Past.message}"; Class<?>[] groups() default { }; Class<? extends Payload>[] payload() default { };
Defines several Past annotations on the same element.
See Also:
/** * Defines several {@link Past} annotations on the same element. * * @see Past */
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) @Retention(RUNTIME) @Documented @interface List { Past[] value(); } }