001    
002    /*
003     * Copyright (C) 2011 Archie L. Cobbs. All rights reserved.
004     *
005     * $Id: SelfValidatingValidator.java 144 2011-10-13 22:31:52Z archie.cobbs $
006     */
007    
008    package org.dellroad.stuff.validation;
009    
010    import javax.validation.ConstraintValidatorContext;
011    
012    /**
013     * Implements the validation logic for the {@link SelfValidates @SelfValidates} annotation.
014     *
015     * @see SelfValidates
016     */
017    public class SelfValidatingValidator extends AbstractValidator<SelfValidates, SelfValidating> {
018    
019        @Override
020        public boolean isValid(SelfValidating value, ConstraintValidatorContext context) {
021            try {
022                value.checkValid(context);
023                return true;
024            } catch (SelfValidationException e) {
025                String message = e.getMessage();
026                if (message != null)
027                    this.setViolation(context, message);
028                return false;
029            }
030        }
031    }
032