001/*
002 * Licensed under the Apache License, Version 2.0 (the "License");
003 * you may not use this file except in compliance with the License.
004 * You may obtain a copy of the License at
005 *
006 *     http://www.apache.org/licenses/LICENSE-2.0
007 *
008 * Unless required by applicable law or agreed to in writing, software
009 * distributed under the License is distributed on an "AS IS" BASIS,
010 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
011 * See the License for the specific language governing permissions and
012 * limitations under the License.
013 */
014package org.gbif.api.util.validators.email;
015
016import java.lang.annotation.Documented;
017import java.lang.annotation.Retention;
018import java.lang.annotation.RetentionPolicy;
019import java.lang.annotation.Target;
020
021import javax.validation.Constraint;
022import javax.validation.Payload;
023
024import static java.lang.annotation.ElementType.CONSTRUCTOR;
025import static java.lang.annotation.ElementType.FIELD;
026import static java.lang.annotation.ElementType.METHOD;
027import static java.lang.annotation.ElementType.PARAMETER;
028import static java.lang.annotation.ElementType.TYPE_USE;
029
030/** Annotation to indicate that an email has to be valid. */
031@Target({METHOD, FIELD, CONSTRUCTOR, PARAMETER, TYPE_USE})
032@Retention(RetentionPolicy.RUNTIME)
033@Constraint(validatedBy = EmailConstraintValidator.class)
034@Documented
035public @interface ValidEmail {
036
037  String message() default "must be a valid email." + " found: ${validatedValue}";
038
039  Class<?>[] groups() default {};
040
041  Class<? extends Payload>[] payload() default {};
042
043  /** Indicates if null values are accepted. */
044  boolean required() default false;
045}