Package org.hibernate.validator.test.internal.xml.mixedconfiguration

Source Code of org.hibernate.validator.test.internal.xml.mixedconfiguration.InheritanceMappingsTest

/*
* 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.internal.xml.mixedconfiguration;

import java.lang.annotation.Annotation;
import java.util.Set;
import javax.validation.Configuration;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.constraints.NotNull;

import org.testng.annotations.Test;

import org.hibernate.validator.test.internal.xml.mixedconfiguration.annotation.Competition;
import org.hibernate.validator.test.internal.xml.mixedconfiguration.annotation.Fixture;
import org.hibernate.validator.test.internal.xml.mixedconfiguration.annotation.PersonCompetition;
import org.hibernate.validator.test.internal.xml.mixedconfiguration.annotation.TeamCompetition;
import org.hibernate.validator.testutil.DummyTraversableResolver;
import org.hibernate.validator.testutil.ValidatorUtil;

import static org.testng.AssertJUnit.assertEquals;
import static org.testng.FileAssert.fail;


/**
* See HV-265
*
* @author Hardy Ferentschik
*/
public class InheritanceMappingsTest {

  @Test
  public void defaultConfigurationNoExplicitAnnotationDefinition1() {
    validateAnnotatedFixture(
        new PersonCompetition(),
        ValidatorUtil.getValidator()
    );
  }

  @Test
  public void defaultConfigurationNoExplicitAnnotationDefinition2() {
    validateAnnotatedFixture(
        new TeamCompetition(),
        ValidatorUtil.getValidator()
    );
  }

  @Test
  public void customConfigurationNoExplicitAnnotationDefinition1() {
    validateAnnotatedFixture(
        new PersonCompetition(),
        configure( "annotation-mappings.xml" )
    );
  }

  @Test
  public void customConfigurationNoExplicitAnnotationDefinition2() {
    validateAnnotatedFixture(
        new TeamCompetition(),
        configure( "annotation-mappings.xml" )
    );
  }

  @Test
  public void customConfigurationExplicitXmlDefinition() {
    validateXmlDefinedFixture(
        new org.hibernate.validator.test.internal.xml.mixedconfiguration.xml.PersonCompetition(),
        configure( "xml-mappings.xml" )
    );
  }

  @Test
  public void customConfigurationNoExplicitXmlDefinition() {
    validateXmlDefinedFixture(
        new org.hibernate.validator.test.internal.xml.mixedconfiguration.xml.TeamCompetition(),
        configure( "xml-mappings.xml" )
    );
  }

  private Validator configure(String mappingsUrl) {
    Configuration<?> configuration = ValidatorUtil.getConfiguration();
    configuration.traversableResolver( new DummyTraversableResolver() );
    configuration.addMapping( InheritanceMappingsTest.class.getResourceAsStream( mappingsUrl ) );

    ValidatorFactory validatorFactory = configuration.buildValidatorFactory();
    return validatorFactory.getValidator();
  }

  private void validateFixture(IFixture fixture, Validator validator) {
    Set<ConstraintViolation<IFixture>> violations = validator.validate( fixture );

    for ( ConstraintViolation<IFixture> violation : violations ) {
      if ( violation.getLeafBean() instanceof ICompetition
          && "detail.competition.name".equals( violation.getPropertyPath().toString() ) ) {
        assertEquals( violation.getLeafBean(), fixture.getCompetition() );
        Annotation annotation = violation.getConstraintDescriptor().getAnnotation();
        assertEquals( annotation.annotationType(), NotNull.class );
        return;
      }
    }
    fail( "@NotNull constraint violation for 'detail.competition.name' not detected" );
  }

  private void validateAnnotatedFixture(Competition competition,
                      Validator validator) {
    Fixture fixture = new Fixture();
    fixture.setCompetition( competition );
    validateFixture( fixture, validator );
  }

  private void validateXmlDefinedFixture(org.hibernate.validator.test.internal.xml.mixedconfiguration.xml.Competition competition,
                       Validator validator) {
    org.hibernate.validator.test.internal.xml.mixedconfiguration.xml.Fixture fixture = new org.hibernate.validator.test.internal.xml.mixedconfiguration.xml.Fixture();
    fixture.setCompetition( competition );
    validateFixture( fixture, validator );
  }
}
TOP

Related Classes of org.hibernate.validator.test.internal.xml.mixedconfiguration.InheritanceMappingsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.