001
002 /*
003 * Copyright (C) 2011 Archie L. Cobbs. All rights reserved.
004 *
005 * $Id: SelfValidates.java 2 2011-02-05 21:51:43Z archie.cobbs $
006 */
007
008 package org.dellroad.stuff.validation;
009
010 import java.lang.annotation.Documented;
011 import java.lang.annotation.ElementType;
012 import java.lang.annotation.Retention;
013 import java.lang.annotation.RetentionPolicy;
014 import java.lang.annotation.Target;
015
016 import javax.validation.Constraint;
017 import javax.validation.Payload;
018
019 /**
020 * Validation constraint that when applied to classes that implement the {@link SelfValidating} interface
021 * allows custom validation by the class itself via {@link SelfValidating#checkValid SelfValidating.checkValid()}.
022 */
023 @Documented
024 @Constraint(validatedBy = SelfValidatingValidator.class)
025 @Target(ElementType.TYPE)
026 @Retention(RetentionPolicy.RUNTIME)
027 public @interface SelfValidates {
028
029 String message() default "{org.dellroad.stuff.validation.SelfValidates.message}";
030
031 Class<?>[] groups() default {};
032
033 Class<? extends Payload>[] payload() default {};
034 }
035