def withDescriptorCacheSize()

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
      )
    }