| Modifier and Type | Class and Description |
|---|---|
| private class |
| Access | Constructor and Description |
|---|---|
| public | CrossParameterConstraintValidatorContextImpl(List<String> methodParameterNames, ClockProvider clockProvider, PathImpl propertyPath, ConstraintDescriptor<?> constraintDescriptor, Object constraintValidatorPayload, ExpressionLanguageFeatureLevel constraintExpressionLanguageFeatureLevel, ExpressionLanguageFeatureLevel customViolationExpressionLanguageFeatureLevel)
|
| Modifier and Type | Method and Description |
|---|---|
| public final HibernateConstraintViolationBuilder | buildConstraintViolationWithTemplate(String
new un-interpolated constraint message messageTemplate)
Returns a constraint violation builder building a violation report
allowing to optionally associate it to a sub path.
|
| public List | |
| public <T> T | unwrap(Class<T>
the class of the object to be returned type)Overrides org. Implements jakarta. |
| methodParameterNames | back to summary |
|---|---|
| private final List<String> methodParameterNames | |
| CrossParameterConstraintValidatorContextImpl | back to summary |
|---|---|
| public CrossParameterConstraintValidatorContextImpl(List<String> methodParameterNames, ClockProvider clockProvider, PathImpl propertyPath, ConstraintDescriptor<?> constraintDescriptor, Object constraintValidatorPayload, ExpressionLanguageFeatureLevel constraintExpressionLanguageFeatureLevel, ExpressionLanguageFeatureLevel customViolationExpressionLanguageFeatureLevel) | |
| buildConstraintViolationWithTemplate | back to summary |
|---|---|
| public final HibernateConstraintViolationBuilder buildConstraintViolationWithTemplate(String messageTemplate) Doc from jakarta. Returns a constraint violation builder building a violation report allowing to optionally associate it to a sub path. The violation message will be interpolated.
To create the
If
To create a different
//assuming the following domain model
public class User {
public Map<String,Address> getAddresses() { ... }
}
public class Address {
public String getStreet() { ... }
public Country getCountry() { ... }
}
public class Country {
public String getName() { ... }
}
//From a property-level constraint on User.addresses
//Build a constraint violation on the default path - i.e. the "addresses" property
context.buildConstraintViolationWithTemplate( "this detail is wrong" )
.addConstraintViolation();
//From a class level constraint on Address
//Build a constraint violation on the default path + "street"
//i.e. the street property of Address
context.buildConstraintViolationWithTemplate( "this detail is wrong" )
.addPropertyNode( "street" )
.addConstraintViolation();
//From a property-level constraint on User.addresses
//Build a constraint violation on the default path + the bean stored
//under the "home" key in the map
context.buildConstraintViolationWithTemplate( "Incorrect home address" )
.addBeanNode()
.inContainer( Map.class, 1 )
.inIterable().atKey( "home" )
.addConstraintViolation();
//From a class level constraint on User
//Build a constraint violation on the default path + addresses["home"].country.name
//i.e. property "country.name" on the object stored under "home" in the map
context.buildConstraintViolationWithTemplate( "this detail is wrong" )
.addPropertyNode( "addresses" )
.addPropertyNode( "country" )
.inContainer( Map.class, 1 )
.inIterable().atKey( "home" )
.addPropertyNode( "name" )
.addConstraintViolation();
//From a class level constraint on User
//Build a constraint violation on the default path + addresses["home"].<map key>
//i.e. a container element constraint violation for the map key
context.buildConstraintViolationWithTemplate( "the map key is invalid" )
.addPropertyNode( "addresses" )
.addContainerElementNode( "<map key>", Map.class, 0 )
.inIterable().atKey( "invalid" )
.addConstraintViolation();
Cross-parameter constraints on a method can create a node specific to a particular parameter if required. Let's explore a few examples:
//Cross-parameter constraint on method
//createUser(String password, String passwordRepeat)
//Build a constraint violation on the default path + "passwordRepeat"
context.buildConstraintViolationWithTemplate("Passwords do not match")
.addParameterNode(1)
.addConstraintViolation();
//Cross-parameter constraint on a method
//mergeAddresses(Map<String,Address> addresses,
// Map<String,Address> otherAddresses)
//Build a constraint violation on the default path + "otherAddresses["home"]
//i.e. the Address bean hosted in the "home" key of the "otherAddresses" map parameter
context.buildConstraintViolationWithTemplate(
"Map entry home present in both and does not match")
.addParameterNode(1)
.addBeanNode()
.inContainer( Map.class, 1 )
.inIterable().atKey("home")
.addConstraintViolation();
//Cross-parameter constraint on a method
//mergeAddresses(Map<String,Address> addresses,
// Map<String,Address> otherAddresses)
//Build a constraint violation on the default path + "otherAddresses["home"].city
//i.e. on the "city" property of the Address bean hosted in
//the "home" key of the "otherAddresses" map
context.buildConstraintViolationWithTemplate(
"Map entry home present in both but city does not match")
.addParameterNode(1)
.addPropertyNode("city")
.inContainer( Map.class, 1 )
.inIterable().atKey("home")
.addConstraintViolation();
| |
| getMethodParameterNames | back to summary |
|---|---|
| public List | |
| unwrap | back to summary |
|---|---|
| public <T> T unwrap(Class<T> type) Overrides org. Implements jakarta. Doc from jakarta. Returns an instance of the specified type allowing access to
provider-specific APIs. If the Jakarta Bean Validation provider
implementation does not support the specified class,
| |
| Access | Constructor and Description |
|---|---|
| private | CrossParameterConstraintViolationBuilderImpl(List<String> methodParameterNames, String template, PathImpl path)
|
| Modifier and Type | Method and Description |
|---|---|
| public ConstraintValidatorContext. | addParameterNode(int
the parameter index index)
Implements jakarta. ConstraintViolation
will be associated to.
|
| private void |
| methodParameterNames | back to summary |
|---|---|
| private final List<String> methodParameterNames | |
| CrossParameterConstraintViolationBuilderImpl | back to summary |
|---|---|
| private CrossParameterConstraintViolationBuilderImpl(List<String> methodParameterNames, String template, PathImpl path) | |
| addParameterNode | back to summary |
|---|---|
| public ConstraintValidatorContext. Implements jakarta. Doc from jakarta. Adds a method parameter node to the path the
| |
| dropLeafNode | back to summary |
|---|---|
| private void dropLeafNode() | |