/* * Hibernate Validator, declare and validate application constraints * * License: Apache License, Version 2.0 * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>. */ package org.hibernate.validator.test.cfg; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static org.hibernate.validator.testutil.ConstraintViolationAssert.assertCorrectConstraintTypes; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validator; import javax.validation.constraints.AssertTrue; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import org.hibernate.validator.cfg.defs.AssertTrueDef; import org.hibernate.validator.cfg.defs.MinDef; import org.hibernate.validator.cfg.defs.NotNullDef; import org.hibernate.validator.spi.cfg.ConstraintMappingContributor; import org.hibernate.validator.testutil.TestForIssue; import org.testng.annotations.Test; import org.hibernate.validator.testutil.ValidationXmlTestHelper; import org.hibernate.validator.testutils.ValidatorUtil; /** * Tests the contribution of constraint mappings via a contributor configured in {@code META-INF/validation.xml}. * * @author Gunnar Morling */ public class ConstraintMappingContributorConfiguredInValidationXmlTest { @Test @TestForIssue(jiraKey = "HV-955") public void shouldApplyConstraintMappingsFromContributorConfiguredInValidationXml() { runWithCustomValidationXml( "constraint-mapping-contributor-validation.xml", new Runnable() { @Override public void run() { Validator validator = ValidatorUtil.getValidator(); Set<? extends ConstraintViolation<?>> violations = validator.validate( new Marathon() ); assertCorrectConstraintTypes( violations, NotNull.class, Min.class ); violations = validator.validate( new Runner() ); assertCorrectConstraintTypes( violations, AssertTrue.class ); } } ); } private void runWithCustomValidationXml(String validationXmlName, Runnable runnable) { new ValidationXmlTestHelper( ConstraintMappingContributorConfiguredInValidationXmlTest.class ). runWithCustomValidationXml( validationXmlName, runnable ); } public static class MyConstraintMappingContributor1 implements ConstraintMappingContributor { @Override public void createConstraintMappings(ConstraintMappingBuilder builder) { builder.addConstraintMapping() .type( Marathon.class ) .property( "name", METHOD ) .constraint( new NotNullDef() ) .property( "numberOfHelpers", FIELD ) .constraint( new MinDef().value( 1 ) ); } } public static class MyConstraintMappingContributor2 implements ConstraintMappingContributor { @Override public void createConstraintMappings(ConstraintMappingBuilder builder) { builder.addConstraintMapping() .type( Runner.class ) .property( "paidEntryFee", FIELD ) .constraint( new AssertTrueDef() ); } } }