@Override public ValidatorFactory create(CreationalContext<ValidatorFactory> ctx) { Configuration<?> config = getConfiguration(); config.constraintValidatorFactory( createConstraintValidatorFactory( config ) ); config.messageInterpolator( createMessageInterpolator( config ) ); config.traversableResolver( createTraversableResolver( config ) ); config.parameterNameProvider( createParameterNameProvider( config ) ); config.clockProvider( createClockProvider( config ) ); addValueExtractorBeans( config ); return config.buildValidatorFactory(); }
@Test(expectedExceptions = ValidationException.class) @SpecAssertion(section = Sections.CONSTRAINTSDEFINITIONIMPLEMENTATION_VALIDATIONIMPLEMENTATION, id = "n") @SpecAssertion(section = Sections.EXCEPTION, id = "a") public void testClockProviderExceptionsGetWrappedInValidationException() { ExceptionThrowingClockProvider clockProvider = new ExceptionThrowingClockProvider(); Configuration<?> config = TestUtil.getConfigurationUnderTest().clockProvider( clockProvider ); ValidatorFactory factory = config.buildValidatorFactory(); Validator v = factory.getValidator(); Person person = new Person(); person.setBirthday( Instant.now().minus( Duration.ofDays( 3 ) ) ); v.validate( person ); }
@Test @SpecAssertion(section = Sections.VALIDATIONAPI_BOOTSTRAPPING_VALIDATORFACTORY, id = "f") public void testCustomClockProviderFromValidatorFactory() { Configuration<?> configuration = TestUtil.getConfigurationUnderTest(); CustomClockProvider clockProvider = new CustomClockProvider(); configuration.clockProvider( clockProvider ); ValidatorFactory factory = configuration.buildValidatorFactory(); assertSame( factory.getClockProvider(), clockProvider ); }
@Test @SpecAssertion(section = Sections.BUILTINCONSTRAINTS_PAST, id = "a") public void clockProviderIsUsedForRelativePartials() { Calendar cal = GregorianCalendar.getInstance( TimeZone.getTimeZone( TZ_BERLIN ) ); cal.set( 2016, 6, 6 ); cal.set( Calendar.HOUR_OF_DAY, 14 ); cal.set( Calendar.MINUTE, 45 ); PastRelativePartialDummyEntity dummy = new PastRelativePartialDummyEntity( ZonedDateTime.of( 2016, 6, 6, 14, 45, 0, 0, TZ_BERLIN ) ); FixedClockProvider clockProvider = new FixedClockProvider( ZonedDateTime.of( 2016, 8, 15, 16, 15, 0, 0, TZ_BERLIN ) ); ValidatorFactory validatorFactory = TestUtil.getConfigurationUnderTest() .clockProvider( clockProvider ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator(); assertNumberOfViolations( validator.validate( dummy ), 0 ); clockProvider = new FixedClockProvider( ZonedDateTime.of( 2014, 4, 4, 9, 45, 0, 0, TZ_BERLIN ) ); validatorFactory = TestUtil.getConfigurationUnderTest() .clockProvider( clockProvider ) .buildValidatorFactory(); validator = validatorFactory.getValidator(); Set<ConstraintViolation<PastRelativePartialDummyEntity>> violations = validator.validate( dummy ); assertNumberOfViolations( violations, 3 ); assertThat( violations ).containsOnlyPaths( pathWith() .property( "localTime" ), pathWith() .property( "monthDay" ), pathWith() .property( "offsetTime" ) ); }
@SpecAssertions({ @SpecAssertion(section = Sections.VALIDATIONAPI_BOOTSTRAPPING_XMLCONFIGURATION, id = "d"), @SpecAssertion(section = Sections.VALIDATIONAPI_BOOTSTRAPPING_XMLCONFIGURATION, id = "j") }) public void testClockProviderSpecifiedInValidationXmlCanBeOverridden() { Configuration<?> configuration = Validation .byDefaultProvider() .configure(); configuration = configuration.clockProvider( new ConfigurationDefinedClockProvider() ); Validator validator = configuration.buildValidatorFactory().getValidator(); User user = new User(); user.setBirthday( ZonedDateTime.of( 1980, 11, 10, 9, 16, 0, 0, ZoneId.of( "Europe/Paris" ) ) ); Set<ConstraintViolation<User>> constraintViolations = validator.validate( user ); assertCorrectConstraintTypes( constraintViolations, Past.class ); }
@Test @SpecAssertion(section = Sections.BUILTINCONSTRAINTS_PASTORPRESENT, id = "a") public void clockProviderIsUsedForRelativePartials() { Calendar cal = GregorianCalendar.getInstance( TimeZone.getTimeZone( TZ_BERLIN ) ); cal.set( 2016, 6, 6 ); cal.set( Calendar.HOUR_OF_DAY, 14 ); cal.set( Calendar.MINUTE, 45 ); PastOrPresentRelativePartialDummyEntity dummy = new PastOrPresentRelativePartialDummyEntity( ZonedDateTime.of( 2016, 6, 6, 14, 45, 0, 0, TZ_BERLIN ) ); FixedClockProvider clockProvider = new FixedClockProvider( ZonedDateTime.of( 2016, 8, 15, 16, 15, 0, 0, TZ_BERLIN ) ); ValidatorFactory validatorFactory = TestUtil.getConfigurationUnderTest() .clockProvider( clockProvider ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator(); assertNumberOfViolations( validator.validate( dummy ), 0 ); clockProvider = new FixedClockProvider( ZonedDateTime.of( 2014, 4, 4, 9, 45, 0, 0, TZ_BERLIN ) ); validatorFactory = TestUtil.getConfigurationUnderTest() .clockProvider( clockProvider ) .buildValidatorFactory(); validator = validatorFactory.getValidator(); Set<ConstraintViolation<PastOrPresentRelativePartialDummyEntity>> violations = validator.validate( dummy ); assertNumberOfViolations( violations, 3 ); assertThat( violations ).containsOnlyPaths( pathWith() .property( "localTime" ), pathWith() .property( "monthDay" ), pathWith() .property( "offsetTime" ) ); }
@Test @SpecAssertion(section = Sections.BUILTINCONSTRAINTS_FUTURE, id = "a") public void clockProviderIsUsedForRelativePartials() { FutureRelativePartialDummyEntity dummy = new FutureRelativePartialDummyEntity( ZonedDateTime.of( 2016, 6, 6, 14, 45, 0, 0, TZ_BERLIN ) ); FixedClockProvider clockProvider = new FixedClockProvider( ZonedDateTime.of( 2015, 2, 15, 4, 0, 0, 0, TZ_BERLIN ) ); ValidatorFactory validatorFactory = TestUtil.getConfigurationUnderTest() .clockProvider( clockProvider ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator(); assertNumberOfViolations( validator.validate( dummy ), 0 ); clockProvider = new FixedClockProvider( ZonedDateTime.of( 2016, 8, 17, 17, 45, 0, 0, TZ_BERLIN ) ); validatorFactory = TestUtil.getConfigurationUnderTest() .clockProvider( clockProvider ) .buildValidatorFactory(); validator = validatorFactory.getValidator(); Set<ConstraintViolation<FutureRelativePartialDummyEntity>> violations = validator.validate( dummy ); assertNumberOfViolations( violations, 3 ); assertThat( violations ).containsOnlyPaths( pathWith() .property( "localTime" ), pathWith() .property( "monthDay" ), pathWith() .property( "offsetTime" ) ); }
@Test @SpecAssertion(section = Sections.BUILTINCONSTRAINTS_FUTUREORPRESENT, id = "a") public void clockProviderIsUsedForRelativePartials() { FutureOrPresentRelativePartialDummyEntity dummy = new FutureOrPresentRelativePartialDummyEntity( ZonedDateTime.of( 2016, 6, 6, 14, 45, 0, 0, TZ_BERLIN ) ); FixedClockProvider clockProvider = new FixedClockProvider( ZonedDateTime.of( 2015, 2, 15, 4, 0, 0, 0, TZ_BERLIN ) ); ValidatorFactory validatorFactory = TestUtil.getConfigurationUnderTest() .clockProvider( clockProvider ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator(); assertNumberOfViolations( validator.validate( dummy ), 0 ); clockProvider = new FixedClockProvider( ZonedDateTime.of( 2016, 8, 17, 17, 45, 0, 0, TZ_BERLIN ) ); validatorFactory = TestUtil.getConfigurationUnderTest() .clockProvider( clockProvider ) .buildValidatorFactory(); validator = validatorFactory.getValidator(); Set<ConstraintViolation<FutureOrPresentRelativePartialDummyEntity>> violations = validator.validate( dummy ); assertNumberOfViolations( violations, 3 ); assertThat( violations ).containsOnlyPaths( pathWith() .property( "localTime" ), pathWith() .property( "monthDay" ), pathWith() .property( "offsetTime" ) ); }
@Test @SpecAssertion(section = Sections.VALIDATIONAPI_BOOTSTRAPPING_VALIDATORFACTORY, id = "f") public void testCustomClockProviderViaConfiguration() { // use the default configuration Validator validator = TestUtil.getValidatorUnderTest(); Person person = new Person(); person.setBirthday( Instant.now().minus( Duration.ofDays( 15 ) ) ); Set<ConstraintViolation<Person>> constraintViolations = validator.validate( person ); assertNumberOfViolations( constraintViolations, 0 ); person.setBirthday( Instant.now().plus( Duration.ofDays( 15 ) ) ); constraintViolations = validator.validate( person ); assertThat( constraintViolations ).containsOnlyPaths( pathWith() .property( "birthday" ) ); // get a new validator with a custom configuration validator = TestUtil.getConfigurationUnderTest() .clockProvider( new FixedClockProvider( ZonedDateTime.now().plus( Duration.ofDays( 60 ) ) ) ) .buildValidatorFactory() .getValidator(); person.setBirthday( Instant.now().plus( Duration.ofDays( 15 ) ) ); constraintViolations = validator.validate( person ); assertNumberOfViolations( constraintViolations, 0 ); person.setBirthday( Instant.now().plus( Duration.ofDays( 90 ) ) ); constraintViolations = validator.validate( person ); assertThat( constraintViolations ).containsOnlyPaths( pathWith() .property( "birthday" ) ); }
.clockProvider( new FixedClockProvider( reference ) ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator();
.clockProvider( new FixedClockProvider( reference ) ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator();
.clockProvider( new FixedClockProvider( reference ) ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator();
.clockProvider( new FixedClockProvider( reference ) ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator();
@Override public ValidatorFactory create(CreationalContext<ValidatorFactory> ctx) { Configuration<?> config = getConfiguration(); config.constraintValidatorFactory( createConstraintValidatorFactory( config ) ); config.messageInterpolator( createMessageInterpolator( config ) ); config.traversableResolver( createTraversableResolver( config ) ); config.parameterNameProvider( createParameterNameProvider( config ) ); config.clockProvider( createClockProvider( config ) ); addValueExtractorBeans( config ); return config.buildValidatorFactory(); }
.clockProvider( clockProvider ) .buildValidatorFactory(); validator = validatorFactory.getValidator();
.clockProvider( clockProvider ) .buildValidatorFactory(); validator = validatorFactory.getValidator();
.clockProvider( clockProvider ) .buildValidatorFactory(); validator = validatorFactory.getValidator();
.clockProvider( clockProvider ) .buildValidatorFactory(); validator = validatorFactory.getValidator();
.clockProvider( new FixedClockProvider( reference ) ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator();
.clockProvider( new FixedClockProvider( reference ) ) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator();