@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "b") public void testGetContainerElementMetaDataIfNotAContainerElement() { PropertyDescriptor descriptor = getPropertyDescriptor( EmployeeImpl.class, "intern" ); Set<ContainerElementTypeDescriptor> containerElementTypeDescriptors = descriptor.getConstrainedContainerElementTypes(); assertEquals( containerElementTypeDescriptors.size(), 0 ); }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "b") public void testGetContainerElementMetaDataForContainerElementWithoutConstraintAndValid() { PropertyDescriptor descriptor = getPropertyDescriptor( EmployeeImpl.class, "zoneId" ); Set<ContainerElementTypeDescriptor> containerElementTypeDescriptors = descriptor.getConstrainedContainerElementTypes(); assertEquals( containerElementTypeDescriptors.size(), 0 ); }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "a") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "a") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "c") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "d") public void testGetContainerElementMetaDataForColleagues() { PropertyDescriptor descriptor = getPropertyDescriptor( EmployeeImpl.class, "colleagues" ); Set<ContainerElementTypeDescriptor> containerElementTypeDescriptors = descriptor.getConstrainedContainerElementTypes(); assertEquals( containerElementTypeDescriptors.size(), 1 ); ContainerElementTypeDescriptor iterableContainerElementTypeDescriptor = getContainerElementDescriptor( containerElementTypeDescriptors, Set.class, 0 ); assertEquals( iterableContainerElementTypeDescriptor.getElementClass(), Employee.class ); assertEquals( iterableContainerElementTypeDescriptor.getConstraintDescriptors().size(), 0 ); assertEquals( iterableContainerElementTypeDescriptor.getConstrainedContainerElementTypes().size(), 0 ); assertTrue( iterableContainerElementTypeDescriptor.isCascaded() ); assertEquals( iterableContainerElementTypeDescriptor.getGroupConversions().size(), 1 ); }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "a") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "a") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "c") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "d") public void testGetContainerElementMetaDataForDivision() { PropertyDescriptor descriptor = getPropertyDescriptor( EmployeeImpl.class, "division" ); Set<ContainerElementTypeDescriptor> containerElementTypeDescriptors = descriptor.getConstrainedContainerElementTypes(); assertEquals( containerElementTypeDescriptors.size(), 1 ); ContainerElementTypeDescriptor iterableContainerElementTypeDescriptor = getContainerElementDescriptor( containerElementTypeDescriptors, Optional.class, 0 ); assertEquals( iterableContainerElementTypeDescriptor.getElementClass(), String.class ); assertConstraintDescriptors( iterableContainerElementTypeDescriptor.getConstraintDescriptors(), NotBlank.class ); assertEquals( iterableContainerElementTypeDescriptor.getConstrainedContainerElementTypes().size(), 0 ); assertFalse( iterableContainerElementTypeDescriptor.isCascaded() ); assertEquals( iterableContainerElementTypeDescriptor.getGroupConversions().size(), 0 ); }
@Test @SpecAssertion(section = Sections.CONSTRAINTMETADATA_ELEMENTDESCRIPTOR, id = "a") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "a") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "c") @SpecAssertion(section = Sections.CONSTRAINTMETADATA_CONTAINERDESCRIPTOR, id = "d") public void testGetContainerElementMetaDataForRoles() { PropertyDescriptor descriptor = getPropertyDescriptor( EmployeeImpl.class, "roles" ); Set<ContainerElementTypeDescriptor> containerElementTypeDescriptors = descriptor.getConstrainedContainerElementTypes(); assertEquals( containerElementTypeDescriptors.size(), 2 ); ContainerElementTypeDescriptor iterableContainerElementTypeDescriptor = getContainerElementDescriptor( containerElementTypeDescriptors, Iterable.class, 0 ); assertEquals( iterableContainerElementTypeDescriptor.getElementClass(), String.class ); assertConstraintDescriptors( iterableContainerElementTypeDescriptor.getConstraintDescriptors(), NotNull.class ); assertEquals( iterableContainerElementTypeDescriptor.getConstrainedContainerElementTypes().size(), 0 ); assertFalse( iterableContainerElementTypeDescriptor.isCascaded() ); assertEquals( iterableContainerElementTypeDescriptor.getGroupConversions().size(), 0 ); ContainerElementTypeDescriptor setContainerElementTypeDescriptor = getContainerElementDescriptor( containerElementTypeDescriptors, Set.class, 0 ); assertEquals( setContainerElementTypeDescriptor.getElementClass(), String.class ); assertConstraintDescriptors( setContainerElementTypeDescriptor.getConstraintDescriptors(), NotBlank.class, NotEmpty.class ); assertEquals( setContainerElementTypeDescriptor.getConstrainedContainerElementTypes().size(), 0 ); assertFalse( setContainerElementTypeDescriptor.isCascaded() ); assertEquals( setContainerElementTypeDescriptor.getGroupConversions().size(), 0 ); }
PropertyDescriptor descriptor = getPropertyDescriptor( EmployeeImpl.class, "addresses" ); Set<ContainerElementTypeDescriptor> containerElementTypeDescriptors = descriptor.getConstrainedContainerElementTypes();
PropertyDescriptor descriptor = getPropertyDescriptor( ComplexOrder.class, "orderLines" ); Set<ContainerElementTypeDescriptor> containerElementTypes = descriptor.getConstrainedContainerElementTypes();
@SuppressWarnings("rawtypes") private <T> void validatePropertyElementConstraints( final MinijaxConstraintValidatorContext<T> context, final PropertyDescriptor property, final Object value) { for (final ContainerElementTypeDescriptor descriptor : property.getConstrainedContainerElementTypes()) { for (final ConstraintDescriptor constraint : descriptor.getConstraintDescriptors()) { final ConstraintValidator validator = ((MinijaxConstraintDescriptor) constraint).getValidator(); if (value instanceof List) { validateList(context, constraint, validator, (List) value); } else if (value instanceof Iterable) { validateIterable(context, constraint, validator, (Iterable) value); } else if (value instanceof Map && descriptor.getTypeArgumentIndex() == 0) { validateMapKeys(context, constraint, validator, (Map<?, ?>) value); } else if (value instanceof Map) { validateMapValues(context, constraint, validator, (Map<?, ?>) value); } else if (value instanceof Optional) { validateOptional(context, constraint, validator, (Optional) value); } } } }