-
Notifications
You must be signed in to change notification settings - Fork 569
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
HV-1497 Extend the ConstraintValidator contract with a new initialize…
…() method Allows to pass an initialization context when initializing a constraint validator. Subsequent cleanups around script assert validators.
- Loading branch information
1 parent
d9ed413
commit ddb5219
Showing
17 changed files
with
306 additions
and
127 deletions.
There are no files selected for viewing
42 changes: 42 additions & 0 deletions
42
.../main/java/org/hibernate/validator/constraintvalidation/HibernateConstraintValidator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
* 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.constraintvalidation; | ||
|
||
import java.lang.annotation.Annotation; | ||
|
||
import javax.validation.ConstraintValidator; | ||
import javax.validation.ConstraintValidatorContext; | ||
import javax.validation.ConstraintValidatorFactory; | ||
import javax.validation.metadata.ConstraintDescriptor; | ||
|
||
import org.hibernate.validator.Incubating; | ||
|
||
/** | ||
* Hibernate Validator specific extension to the {@link ConstraintValidator} contract. | ||
* | ||
* @author Marko Bekhta | ||
* @since 6.0.5 | ||
*/ | ||
@Incubating | ||
public interface HibernateConstraintValidator<A extends Annotation, T> extends ConstraintValidator<A, T> { | ||
|
||
/** | ||
* Initializes the validator in preparation for {@link #isValid(Object, ConstraintValidatorContext)} calls. | ||
* It is an alternative to {@link #initialize(Annotation)} method. Should be used if any additional information | ||
* except annotation is needed to initialize a validator. | ||
* Note, when using {@link HibernateConstraintValidator} user should only override one of the methods, either | ||
* {@link #initialize(Annotation)} or {@link #initialize(ConstraintDescriptor, HibernateConstraintValidatorInitializationContext)}. | ||
* It is guaranteed that in a case of the {@link HibernateConstraintValidator}, only the | ||
* {@link #initialize(ConstraintDescriptor, HibernateConstraintValidatorInitializationContext)} will be called during initialization. | ||
* | ||
* @param constraintDescriptor a constraint descriptor for a given constraint declaration | ||
* @param initializationContext an initialization context for a current {@link ConstraintValidatorFactory} | ||
*/ | ||
default void initialize(ConstraintDescriptor<A> constraintDescriptor, HibernateConstraintValidatorInitializationContext initializationContext) { | ||
initialize( constraintDescriptor.getAnnotation() ); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
...ate/validator/constraintvalidation/HibernateConstraintValidatorInitializationContext.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
/* | ||
* 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.constraintvalidation; | ||
|
||
import org.hibernate.validator.Incubating; | ||
import org.hibernate.validator.spi.scripting.ScriptEvaluator; | ||
import org.hibernate.validator.spi.scripting.ScriptEvaluatorFactory; | ||
import org.hibernate.validator.spi.scripting.ScriptEvaluatorNotFoundException; | ||
|
||
/** | ||
* Provides contextual data and operations when initializing a constraint validator. | ||
* | ||
* @author Marko Bekhta | ||
* @since 6.0.5 | ||
*/ | ||
@Incubating | ||
public interface HibernateConstraintValidatorInitializationContext { | ||
|
||
/** | ||
* Returns a {@link ScriptEvaluator} created by the {@link ScriptEvaluatorFactory} | ||
* passed at bootstrap. | ||
* | ||
* @param languageName the name of the scripting language | ||
* | ||
* @return a script executor for the given language. Never null. | ||
* | ||
* @throws ScriptEvaluatorNotFoundException in case no {@link ScriptEvaluator} was | ||
* found for a given {@code languageName} | ||
*/ | ||
ScriptEvaluator getScriptEvaluatorForLanguage(String languageName); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.