/* * Copyright 2010 Google Inc. Copyright 2016 Manfred Tremmel * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package de.knightsoftnet.validators.client.impl; import de.knightsoftnet.validators.client.impl.metadata.BeanMetadata; import de.knightsoftnet.validators.client.impl.metadata.ValidationGroupsMetadata; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.ValidationException; /** * Defines GWT version of {@link javax.validation.Validator}. This used by generate a specific * Validator for a given class G. * * @param <G> the type of bean for this validator */ public interface GwtSpecificValidator<G> { /** * Helper method used to first expand the Default group sequence and then perform validation of a * bean using the specific group(s). * * @param context GWT validation context. * @param object Object being validated. * @param violations Set of violations to add to. * @param groups What group(s) to validate. */ <T> void expandDefaultAndValidateClassGroups(GwtValidationContext<T> context, G object, Set<ConstraintViolation<T>> violations, Group... groups); /** * Helper method used to first expand the Default group sequence and then perform validation of a * bean using the specific group(s). * * @param context GWT validation context. * @param object Object being validated. * @param propertyName The name of the property being validated. * @param violations Set of violations to add to. * @param groups What group(s) to validate. */ <T> void expandDefaultAndValidatePropertyGroups(GwtValidationContext<T> context, G object, String propertyName, Set<ConstraintViolation<T>> violations, Group... groups); /** * Helper method used to first expand the Default group sequence and then perform validation of a * bean using the specific group(s). * * @param context GWT validation context. * @param beanType Class being validated. * @param propertyName The name of the property being validated. * @param value The value of the property to use. * @param violations Set of violations to add to. * @param groups What group(s) to validate. */ <T> void expandDefaultAndValidateValueGroups(GwtValidationContext<T> context, Class<G> beanType, String propertyName, Object value, Set<ConstraintViolation<T>> violations, Group... groups); /** * @return The metadata for the bean class associated with this valdiator. */ BeanMetadata getBeanMetadata(); /** * Return the descriptor object describing bean constraints. The returned object (and associated * objects including <code>ConstraintDescriptor</code>s) are immutable. * * @param validationGroupsMetadata The validation groups metadata for the validator. * @return the bean descriptor for the class associated with this validator. * * @throws IllegalArgumentException if clazz is null * @throws ValidationException if a non recoverable error happens during the metadata discovery or * if some constraints are invalid. */ GwtBeanDescriptor<G> getConstraints(ValidationGroupsMetadata validationGroupsMetadata) throws ValidationException; /** * Validates all constraints on <code>object</code>. * * @param <T> the type of the RootBean for this validation context * * @param context The gwt validation context * @param object object to validate * @param groups group or list of groups targeted for validation (default to * {@link javax.validation.groups.Default}) * * @return constraint violations or an empty Set if none * * @throws IllegalArgumentException if object is null or if null is passed to the varargs groups * @throws ValidationException if a non recoverable error happens during the validation process */ <T> Set<ConstraintViolation<T>> validate(GwtValidationContext<T> context, G object, Class<?>... groups) throws ValidationException; /** * Helper method used to perform validation of a bean using specific group(s). Does not expand the * Default group seqeunce if it is redefined. * * @param context GWT validation context. * @param object Object being validated. * @param violations Set of violations to add to. * @param groups What group(s) to validate. */ <T> void validateClassGroups(GwtValidationContext<T> context, G object, Set<ConstraintViolation<T>> violations, Class<?>... groups); /** * Validates all constraints placed on the property of <code>object</code> named * <code>propertyName</code>. * * @param <T> the type of the RootBean for this validation context * * @param context The gwt validation context * @param object object to validate * @param propertyName property to validate (ie field and getter constraints) * @param groups group or list of groups targeted for validation (default to * {@link javax.validation.groups.Default}) * * @return constraint violations or an empty Set if none * * @throws IllegalArgumentException if <code>object</code> is null, if <code>propertyName</code> * null, empty or not a valid object property or if null is passed to the varargs groups * @throws ValidationException if a non recoverable error happens during the validation process */ <T> Set<ConstraintViolation<T>> validateProperty(GwtValidationContext<T> context, G object, String propertyName, Class<?>... groups) throws ValidationException; /** * Helper method used to perform validation of a bean property using specific group(s). * * @param context GWT validation context. * @param object Object with property being validated. * @param propertyName Name of property to validate. * @param violations Set of violations to add to. * @param groups What group(s) to validate. */ <T> void validatePropertyGroups(GwtValidationContext<T> context, G object, String propertyName, Set<ConstraintViolation<T>> violations, Class<?>... groups); /** * Validates all constraints placed on the property named <code>propertyName</code> of the class * <code>beanType</code> where the property value is <code>value</code>. * <p/> * <code>ConstraintViolation</code> objects return null for * {@link ConstraintViolation#getRootBean()} and {@link ConstraintViolation#getLeafBean()} * * @param <T> the type of the RootBean for this validation context * * @param context The gwt validation context * @param beanType the bean type * @param propertyName property to validate * @param value property value to validate * @param groups group or list of groups targeted for validation (default to * {@link javax.validation.groups.Default}) * * @return constraint violations or an empty Set if none * * @throws IllegalArgumentException if <code>beanType</code> is null, if <code>propertyName</code> * null, empty or not a valid object property or if null is passed to the varargs groups * @throws ValidationException if a non recoverable error happens during the validation process */ <T> Set<ConstraintViolation<T>> validateValue(GwtValidationContext<T> context, Class<G> beanType, String propertyName, Object value, Class<?>... groups) throws ValidationException; /** * Helper method used to perform validation of a class property with a specified value using * specific group(s). * * @param context GWT validation context. * @param beanType Class with property being validated. * @param propertyName Name of property to validate. * @param value The value of the property to use. * @param violations Set of violations to add to. * @param groups What group(s) to validate. */ <T> void validateValueGroups(GwtValidationContext<T> context, Class<G> beanType, String propertyName, Object value, Set<ConstraintViolation<T>> violations, Class<?>... groups); }