Set<ConstraintDescriptor<?>> constraints = property.findConstraints().unorderedAndMatchingGroups(groups).getConstraintDescriptors();
.lookingAt(scope) .declaredOn(declaredOnTypes.toArray(new ElementType[]{})) .unorderedAndMatchingGroups(matchingGroups.toArray(new Class<?>[]{})); results.addAll(finder.getConstraintDescriptors());
property.findConstraints().unorderedAndMatchingGroups(groups != null ? groups : new Class[]{Default.class}).getConstraintDescriptors(), orderedAnnotations );
property.findConstraints().unorderedAndMatchingGroups(groups != null ? groups : new Class[]{Default.class}).getConstraintDescriptors(), orderedAnnotations );
property.findConstraints().unorderedAndMatchingGroups(groups != null ? groups : new Class[]{Default.class}).getConstraintDescriptors(), orderedAnnotations );
for(ConstraintDescriptor<?> tempConstraint : targetBean.findConstraints().getConstraintDescriptors()) { for(Class<?> group : tempConstraint.getGroups()) { metadata.addAll(this.getReflectorMetadataTreeAsSet(group,factoryDescriptor));
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "d") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_EXECUTABLEDESCRIPTOR, id = "g") public void testFindConstraintsForConstructor() { ConstructorDescriptor parameterConstrainedDescriptor = Executables.parameterConstrainedConstructor(); assertTrue( parameterConstrainedDescriptor.findConstraints() .getConstraintDescriptors() .isEmpty(), "Should have no constraints" ); ConstructorDescriptor returnValueConstrainedDescriptor = Executables.returnValueConstrainedConstructor(); assertTrue( returnValueConstrainedDescriptor.findConstraints() .getConstraintDescriptors() .isEmpty(), "Should have no constraints" ); ConstructorDescriptor crossParameterConstrainedDescriptor = Executables.crossParameterConstrainedConstructor(); assertTrue( crossParameterConstrainedDescriptor.findConstraints() .getConstraintDescriptors() .isEmpty(), "Should have no constraints" ); } }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "d") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_EXECUTABLEDESCRIPTOR, id = "g") public void testFindConstraintsForMethod() { MethodDescriptor parameterConstrainedDescriptor = Executables.parameterConstrainedMethod(); assertTrue( parameterConstrainedDescriptor.findConstraints() .getConstraintDescriptors() .isEmpty(), "Should have no constraints" ); MethodDescriptor returnValueConstrainedDescriptor = Executables.returnValueConstrainedMethod(); assertTrue( returnValueConstrainedDescriptor.findConstraints() .getConstraintDescriptors() .isEmpty(), "Should have no constraints" ); MethodDescriptor crossParameterConstrainedDescriptor = Executables.crossParameterConstrainedMethod(); assertTrue( crossParameterConstrainedDescriptor.findConstraints() .getConstraintDescriptors() .isEmpty(), "Should have no constraints" ); }
@Test @SpecAssertion(section = "3.4.1", id = "b") public void testGroupMembership() { Validator validator = TestUtil.getValidatorUnderTest(); BeanDescriptor descriptor = validator.getConstraintsForClass( MiniaturePart.class ); // PreManufacturing belongs implicitly to All PropertyDescriptor propertyDescriptor = descriptor.getConstraintsForProperty( "partNumber" ); Set<ConstraintDescriptor<?>> descriptorsForGroup = propertyDescriptor.findConstraints() .unorderedAndMatchingGroups( All.class ) .getConstraintDescriptors(); assertEquals( descriptorsForGroup.size(), 1, "Wrong number of descriptors" ); assertEquals( descriptorsForGroup.iterator().next().getAnnotation().annotationType(), Digits.class ); // PostManufacturing belongs implicitly to All propertyDescriptor = descriptor.getConstraintsForProperty( "qaChecked" ); descriptorsForGroup = propertyDescriptor.findConstraints() .unorderedAndMatchingGroups( All.class ) .getConstraintDescriptors(); assertEquals( descriptorsForGroup.size(), 1, "Wrong number of descriptors" ); assertEquals( descriptorsForGroup.iterator().next().getAnnotation().annotationType(), AssertTrue.class ); propertyDescriptor = descriptor.getConstraintsForProperty( "size" ); descriptorsForGroup = propertyDescriptor.findConstraints() .unorderedAndMatchingGroups( All.class ) .getConstraintDescriptors(); assertEquals( descriptorsForGroup.size(), 1, "Wrong number of descriptors" ); assertEquals( descriptorsForGroup.iterator().next().getAnnotation().annotationType(), Max.class ); }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "g") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_EXECUTABLEDESCRIPTOR, id = "c") public void testFindConstraintsForMethodLookingAt() { CrossParameterDescriptor descriptor = Executables.methodOverridingCrossParameterConstrainedMethod() .getCrossParameterDescriptor(); Set<ConstraintDescriptor<?>> constraints = descriptor.findConstraints() .lookingAt( Scope.LOCAL_ELEMENT ) .getConstraintDescriptors(); assertEquals( constraints.size(), 0, "Should have no local constraints" ); constraints = descriptor.findConstraints() .lookingAt( Scope.HIERARCHY ) .getConstraintDescriptors(); assertEquals( constraints.size(), 1, "Should have constraints" ); ConstraintDescriptor<?> constraint = constraints.iterator().next(); assertEquals( constraint.getAnnotation().annotationType(), MyCrossParameterConstraint.class, "Wrong constraint type" ); }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "g") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_EXECUTABLEDESCRIPTOR, id = "c") public void testFindConstraintsForMethodDefinedOnSuperTypeLookingAt() { CrossParameterDescriptor descriptor = Executables.crossParameterConstrainedMethodFromSuperType() .getCrossParameterDescriptor(); Set<ConstraintDescriptor<?>> constraints = descriptor.findConstraints() .lookingAt( Scope.LOCAL_ELEMENT ) .getConstraintDescriptors(); assertEquals( constraints.size(), 0, "Should have no local constraints" ); constraints = descriptor.findConstraints() .lookingAt( Scope.HIERARCHY ) .getConstraintDescriptors(); assertEquals( constraints.size(), 1, "Should have constraints" ); ConstraintDescriptor<?> constraint = constraints.iterator().next(); assertEquals( constraint.getAnnotation().annotationType(), MyCrossParameterConstraint.class, "Wrong constraint type" ); }
@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.CONSTRAINTDECLARATIONVALIDATIONPROCESS_GROUPSEQUENCE_GROUPINHERITANCE, id = "b") public void testGroupMembership() { Validator validator = TestUtil.getValidatorUnderTest(); BeanDescriptor descriptor = validator.getConstraintsForClass( MiniaturePart.class ); // PreManufacturing belongs implicitly to All PropertyDescriptor propertyDescriptor = descriptor.getConstraintsForProperty( "partNumber" ); Set<ConstraintDescriptor<?>> descriptorsForGroup = propertyDescriptor.findConstraints() .unorderedAndMatchingGroups( All.class ) .getConstraintDescriptors(); assertEquals( descriptorsForGroup.size(), 1, "Wrong number of descriptors" ); assertEquals( descriptorsForGroup.iterator().next().getAnnotation().annotationType(), Digits.class ); // PostManufacturing belongs implicitly to All propertyDescriptor = descriptor.getConstraintsForProperty( "qaChecked" ); descriptorsForGroup = propertyDescriptor.findConstraints() .unorderedAndMatchingGroups( All.class ) .getConstraintDescriptors(); assertEquals( descriptorsForGroup.size(), 1, "Wrong number of descriptors" ); assertEquals( descriptorsForGroup.iterator().next().getAnnotation().annotationType(), AssertTrue.class ); propertyDescriptor = descriptor.getConstraintsForProperty( "size" ); descriptorsForGroup = propertyDescriptor.findConstraints() .unorderedAndMatchingGroups( All.class ) .getConstraintDescriptors(); assertEquals( descriptorsForGroup.size(), 1, "Wrong number of descriptors" ); assertEquals( descriptorsForGroup.iterator().next().getAnnotation().annotationType(), Max.class ); }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "d") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "g") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_EXECUTABLEDESCRIPTOR, id = "g") public void testFindConstraintsForMethodDefinedOnSuperTypeLookingAt() { MethodDescriptor crossParameterConstrainedDescriptor = Executables.crossParameterConstrainedMethodFromSuperType(); assertEquals( crossParameterConstrainedDescriptor.findConstraints() .lookingAt( Scope.LOCAL_ELEMENT ) .getConstraintDescriptors() .size(), 0, "Should have no local constraints" ); assertTrue( crossParameterConstrainedDescriptor.findConstraints().lookingAt( Scope.HIERARCHY ) .getConstraintDescriptors() .isEmpty(), "Should have no hierarchy constraint" ); }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "d") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "g") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_EXECUTABLEDESCRIPTOR, id = "g") public void testFindConstraintsForMethodLookingAt() { MethodDescriptor crossParameterConstrainedDescriptor = Executables.methodOverridingCrossParameterConstrainedMethod(); assertEquals( crossParameterConstrainedDescriptor.findConstraints() .lookingAt( Scope.LOCAL_ELEMENT ) .getConstraintDescriptors() .size(), 0, "Should have no local constraints" ); assertTrue( crossParameterConstrainedDescriptor.findConstraints().lookingAt( Scope.HIERARCHY ) .getConstraintDescriptors() .isEmpty(), "Should have no hierarchy constraints" ); }
Collection<ValidatorDescriptor> processBeanAttribute(FacesContext context, ValueDescriptor descriptor, Class<?>... groups) { PropertyDescriptor constraintsForProperty = getValidator(context).getConstraintsForClass(descriptor.getBeanType()).getConstraintsForProperty( descriptor.getName()); if (null != constraintsForProperty) { ConstraintFinder propertyConstraints = constraintsForProperty.findConstraints(); if (null != groups && groups.length > 0) { // Filter groups, if required propertyConstraints = propertyConstraints.unorderedAndMatchingGroups(groups); } Set<ConstraintDescriptor<?>> constraints = propertyConstraints // or the requested list of groups) .getConstraintDescriptors(); // ContextHolder is an arbitrary object, it will depend on the implementation Set<ValidatorDescriptor> descriptors = new HashSet<ValidatorDescriptor>(constraints.size()); processConstraints(context, constraints, descriptors); return descriptors; } else { return Collections.emptySet(); } }
@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 = 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 ); }
public ConstraintIterator(Validator validator, Property property, Class<?>... groups) { BeanDescriptor beanDesc = validator.getConstraintsForClass(property.getOwner()); if (beanDesc != null) { PropertyDescriptor propDesc = beanDesc.getConstraintsForProperty(property.getName()); if (propDesc != null) { // TODO use hasConstraintDesc to optimize...? Set<ConstraintDescriptor<?>> constraints = propDesc.findConstraints() .unorderedAndMatchingGroups(groups) .getConstraintDescriptors(); if (constraints != null) { stack.add(constraints.iterator()); findNext(); } } } }
public ConstraintIterator(Validator validator, Property property, Class<?>... groups) { BeanDescriptor beanDesc = validator.getConstraintsForClass(property.getOwner()); if (beanDesc != null) { PropertyDescriptor propDesc = beanDesc.getConstraintsForProperty(property.getName()); if (propDesc != null) { // TODO use hasConstraintDesc to optimize...? Set<ConstraintDescriptor<?>> constraints = propDesc.findConstraints() .unorderedAndMatchingGroups(groups) .getConstraintDescriptors(); if (constraints != null) { stack.add(constraints.iterator()); findNext(); } } } }