All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hibernate.validator.internal.engine.validationcontext.ValidationContextBuilder Maven / Gradle / Ivy

There is a newer version: 8.0.1.Final
Show newest version
/*
 * Hibernate Validator, declare and validate application constraints
 *
 * License: Apache License, Version 2.0
 * See the license.txt file in the root directory or .
 */
package org.hibernate.validator.internal.engine.validationcontext;

import java.lang.reflect.Executable;

import jakarta.validation.ConstraintValidatorFactory;
import jakarta.validation.TraversableResolver;

import org.hibernate.validator.constraintvalidation.HibernateConstraintValidatorInitializationContext;
import org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager;
import org.hibernate.validator.internal.engine.path.PathImpl;
import org.hibernate.validator.internal.metadata.aggregated.BeanMetaData;

/**
 * Builder for creating {@link AbstractValidationContext}s suited for the different kinds of validation.
 *
 * @author Gunnar Morling
 * @author Marko Bekhta
 */
public class ValidationContextBuilder {

	private final ConstraintValidatorManager constraintValidatorManager;
	private final ConstraintValidatorFactory constraintValidatorFactory;
	private final TraversableResolver traversableResolver;
	private final HibernateConstraintValidatorInitializationContext constraintValidatorInitializationContext;
	private final ValidatorScopedContext validatorScopedContext;

	public ValidationContextBuilder(
			ConstraintValidatorManager constraintValidatorManager,
			ConstraintValidatorFactory constraintValidatorFactory,
			ValidatorScopedContext validatorScopedContext,
			TraversableResolver traversableResolver,
			HibernateConstraintValidatorInitializationContext constraintValidatorInitializationContext) {
		this.constraintValidatorManager = constraintValidatorManager;
		this.constraintValidatorFactory = constraintValidatorFactory;
		this.traversableResolver = traversableResolver;
		this.constraintValidatorInitializationContext = constraintValidatorInitializationContext;
		this.validatorScopedContext = validatorScopedContext;
	}

	public  BaseBeanValidationContext forValidate(Class rootBeanClass, BeanMetaData rootBeanMetaData, T rootBean) {
		return new BeanValidationContext<>(
				constraintValidatorManager,
				constraintValidatorFactory,
				validatorScopedContext,
				traversableResolver,
				constraintValidatorInitializationContext,
				rootBean,
				rootBeanClass,
				rootBeanMetaData
		);
	}

	public  BaseBeanValidationContext forValidateProperty(Class rootBeanClass, BeanMetaData rootBeanMetaData, T rootBean, PathImpl propertyPath) {
		return new PropertyValidationContext<>(
				constraintValidatorManager,
				constraintValidatorFactory,
				validatorScopedContext,
				traversableResolver,
				constraintValidatorInitializationContext,
				rootBean,
				rootBeanClass,
				rootBeanMetaData,
				propertyPath.getLeafNode().getName()
		);
	}

	public  BaseBeanValidationContext forValidateValue(Class rootBeanClass, BeanMetaData rootBeanMetaData, PathImpl propertyPath) {
		return new PropertyValidationContext<>(
				constraintValidatorManager,
				constraintValidatorFactory,
				validatorScopedContext,
				traversableResolver,
				constraintValidatorInitializationContext,
				null, //root bean
				rootBeanClass,
				rootBeanMetaData,
				propertyPath.getLeafNode().getName()
		);
	}

	public  ExecutableValidationContext forValidateParameters(
			Class rootBeanClass,
			BeanMetaData rootBeanMetaData,
			T rootBean,
			Executable executable,
			Object[] executableParameters) {
		return new ParameterExecutableValidationContext<>(
				constraintValidatorManager,
				constraintValidatorFactory,
				validatorScopedContext,
				traversableResolver,
				constraintValidatorInitializationContext,
				rootBean,
				rootBeanClass,
				rootBeanMetaData,
				executable,
				rootBeanMetaData.getMetaDataFor( executable ),
				executableParameters
		);
	}

	public  ExecutableValidationContext forValidateReturnValue(
			Class rootBeanClass,
			BeanMetaData rootBeanMetaData,
			T rootBean,
			Executable executable,
			Object executableReturnValue) {
		return new ReturnValueExecutableValidationContext<>(
				constraintValidatorManager,
				constraintValidatorFactory,
				validatorScopedContext,
				traversableResolver,
				constraintValidatorInitializationContext,
				rootBean,
				rootBeanClass,
				rootBeanMetaData,
				executable,
				rootBeanMetaData.getMetaDataFor( executable ),
				executableReturnValue
		);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy