in util-validator/src/main/scala/com/twitter/util/validation/ScalaValidator.scala [64:155]
def withDescriptorCacheSize(size: Long): ScalaValidator.Builder =
Builder(
descriptorCacheSize = size,
messageInterpolator = this.messageInterpolator,
constraintMappings = this.constraintMappings
)
def withMessageInterpolator(
messageInterpolator: MessageInterpolator
): ScalaValidator.Builder =
Builder(
descriptorCacheSize = this.descriptorCacheSize,
messageInterpolator = Some(messageInterpolator),
constraintMappings = this.constraintMappings
)
/**
* Register a Set of [[ConstraintMapping]].
*
* @note Java users please see the version which takes a [[java.util.Set]]
*/
def withConstraintMappings(
constraintMappings: Set[ConstraintMapping]
): ScalaValidator.Builder =
Builder(
descriptorCacheSize = this.descriptorCacheSize,
messageInterpolator = this.messageInterpolator,
constraintMappings = constraintMappings
)
/**
* Register a Set of [[ConstraintMapping]].
*
* @note Scala users please see the version which takes a [[Set]]
*/
def withConstraintMappings(
constraintMappings: java.util.Set[ConstraintMapping]
): ScalaValidator.Builder =
Builder(
descriptorCacheSize = this.descriptorCacheSize,
messageInterpolator = this.messageInterpolator,
constraintMappings = constraintMappings.asScala.toSet
)
/**
* Register a [[ConstraintMapping]].
*/
def withConstraintMapping(
constraintMapping: ConstraintMapping
): ScalaValidator.Builder =
Builder(
descriptorCacheSize = this.descriptorCacheSize,
messageInterpolator = this.messageInterpolator,
constraintMappings = Set(constraintMapping)
)
def validator: ScalaValidator = {
val configuration: HibernateValidatorConfiguration =
Validation
.byProvider[
HibernateValidatorConfiguration,
ValidationProvider[HibernateValidatorConfiguration]](
classOf[HibernateValidator]
.asInstanceOf[Class[ValidationProvider[HibernateValidatorConfiguration]]])
.configure()
// add user-configured message interpolator
messageInterpolator.map { interpolator =>
configuration.messageInterpolator(interpolator)
}
// add user-configured constraint mappings
constraintMappings.foreach { constraintMapping =>
val hibernateConstraintMapping: org.hibernate.validator.cfg.ConstraintMapping =
configuration.createConstraintMapping()
hibernateConstraintMapping
.constraintDefinition(constraintMapping.annotationType.asInstanceOf[Class[Annotation]])
.includeExistingValidators(constraintMapping.includeExistingValidators)
.validatedBy(constraintMapping.constraintValidator
.asInstanceOf[Class[_ <: ConstraintValidator[Annotation, _]]])
configuration.addMapping(hibernateConstraintMapping)
}
val validatorFactory =
configuration.buildValidatorFactory
new ScalaValidator(
this.descriptorCacheSize,
new ValidatorFactoryInspector(validatorFactory.asInstanceOf[ValidatorFactoryImpl]),
validatorFactory.getValidator
)
}