.declaredOn(declaredOnTypes.toArray(new ElementType[]{})) .unorderedAndMatchingGroups(matchingGroups.toArray(new Class<?>[]{}));
@SuppressWarnings("unchecked") private <T> Set<ConstraintViolation<T>> validate(Map<Class<?>,Map<String,Map<Object,Set<ConstraintViolation<?>>>>> validationCache, T object, Class<?>... groups) { //get the bean descriptor BeanDescriptor bean = this.getConstraintsForClass(object.getClass()); //create empty constraint violation set Set<ConstraintViolation<T>> violations = new HashSet<ConstraintViolation<T>>(); //validate class level properties for(ConstraintDescriptor<?> descriptor : bean.findConstraints().declaredOn(ElementType.TYPE).unorderedAndMatchingGroups(groups).getConstraintDescriptors()) { violations.addAll(this.validateConstraint((Class<T>)object.getClass(), descriptor, object)); } //validate each constrained property individually for(PropertyDescriptor property : bean.getConstrainedProperties()) { violations.addAll(this.validateProperty(validationCache, object, property.getPropertyName(), groups)); } //update root objects for all violations for(ConstraintViolation<T> violation : violations) { if(violation instanceof ConstraintViolationImpl) { ConstraintViolationImpl<T> impl = (ConstraintViolationImpl<T>)violation; impl.setRootBean(object); impl.setRootBeanClass((Class<T>)object.getClass()); } } return violations; }
@Test @SpecAssertion(section = "5.2", id = "e") public void testDeclaredOn() { Validator validator = TestUtil.getValidatorUnderTest(); BeanDescriptor beanDescriptor = validator.getConstraintsForClass( SubClass.class ); assertNotNull( beanDescriptor ); Set<ConstraintDescriptor<?>> descriptors = beanDescriptor.getConstraintsForProperty( "myField" ) .findConstraints() .lookingAt( Scope.HIERARCHY ) .declaredOn( ElementType.TYPE ) .getConstraintDescriptors(); assertTrue( descriptors.size() == 0 ); descriptors = beanDescriptor.getConstraintsForProperty( "myField" ) .findConstraints() .lookingAt( Scope.HIERARCHY ) .declaredOn( ElementType.METHOD ) .getConstraintDescriptors(); assertTrue( descriptors.size() == 0 ); descriptors = beanDescriptor.getConstraintsForProperty( "myField" ) .findConstraints() .lookingAt( Scope.HIERARCHY ) .declaredOn( ElementType.FIELD ) .getConstraintDescriptors(); assertTrue( descriptors.size() == 2 ); }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "d") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "f") public void testDeclaredOn() { Validator validator = TestUtil.getValidatorUnderTest(); BeanDescriptor beanDescriptor = validator.getConstraintsForClass( SubClass.class ); assertNotNull( beanDescriptor ); Set<ConstraintDescriptor<?>> descriptors = beanDescriptor.getConstraintsForProperty( "myField" ) .findConstraints() .lookingAt( Scope.HIERARCHY ) .declaredOn( ElementType.TYPE ) .getConstraintDescriptors(); assertTrue( descriptors.size() == 0 ); descriptors = beanDescriptor.getConstraintsForProperty( "myField" ) .findConstraints() .lookingAt( Scope.HIERARCHY ) .declaredOn( ElementType.METHOD ) .getConstraintDescriptors(); assertTrue( descriptors.size() == 0 ); descriptors = beanDescriptor.getConstraintsForProperty( "myField" ) .findConstraints() .lookingAt( Scope.HIERARCHY ) .declaredOn( ElementType.FIELD ) .getConstraintDescriptors(); assertTrue( descriptors.size() == 2 ); }
private boolean isGetterConstrained(Method method, BeanDescriptor beanDescriptor) { String propertyName = ReflectionHelper.getPropertyName( method ); PropertyDescriptor propertyDescriptor = beanDescriptor.getConstraintsForProperty( propertyName ); return propertyDescriptor != null && propertyDescriptor.findConstraints() .declaredOn( ElementType.METHOD ) .hasConstraints(); }
private boolean isGetterConstrained(BeanDescriptor beanDescriptor, Method method, String property) { PropertyDescriptor propertyDescriptor = beanDescriptor.getConstraintsForProperty( property ); return propertyDescriptor != null && propertyDescriptor.findConstraints() .declaredOn( ElementType.METHOD ) .hasConstraints(); }