12
12
import java .lang .annotation .Annotation ;
13
13
import java .security .AccessController ;
14
14
import java .security .PrivilegedAction ;
15
+ import java .util .ArrayList ;
15
16
import java .util .Collections ;
16
17
import java .util .IdentityHashMap ;
17
18
import java .util .List ;
30
31
import org .hibernate .validator .HibernateValidatorFactory ;
31
32
import org .hibernate .validator .cfg .ConstraintMapping ;
32
33
import org .hibernate .validator .internal .cfg .context .DefaultConstraintMapping ;
34
+ import org .hibernate .validator .internal .engine .cascading .ValueExtractors ;
33
35
import org .hibernate .validator .internal .engine .constraintdefinition .ConstraintDefinitionContribution ;
34
36
import org .hibernate .validator .internal .engine .constraintvalidation .ConstraintValidatorManager ;
35
37
import org .hibernate .validator .internal .engine .time .DefaultTimeProvider ;
46
48
import org .hibernate .validator .internal .util .logging .LoggerFactory ;
47
49
import org .hibernate .validator .internal .util .privilegedactions .LoadClass ;
48
50
import org .hibernate .validator .internal .util .privilegedactions .NewInstance ;
51
+ import org .hibernate .validator .spi .cascading .ValueExtractor ;
49
52
import org .hibernate .validator .spi .cfg .ConstraintMappingContributor ;
50
53
import org .hibernate .validator .spi .time .TimeProvider ;
51
54
import org .hibernate .validator .spi .valuehandling .ValidatedValueUnwrapper ;
@@ -139,6 +142,8 @@ public class ValidatorFactoryImpl implements HibernateValidatorFactory {
139
142
*/
140
143
private final List <ValidatedValueUnwrapper <?>> validatedValueHandlers ;
141
144
145
+ private final ValueExtractors valueExtractors ;
146
+
142
147
public ValidatorFactoryImpl (ConfigurationState configurationState ) {
143
148
ClassLoader externalClassLoader = getExternalClassLoader ( configurationState );
144
149
@@ -177,7 +182,7 @@ public ValidatorFactoryImpl(ConfigurationState configurationState) {
177
182
boolean tmpAllowParallelMethodsDefineParameterConstraints = false ;
178
183
179
184
List <ValidatedValueUnwrapper <?>> tmpValidatedValueHandlers = newArrayList ( 5 );
180
-
185
+ List < ValueExtractor <?>> cascadedValueExtractors = null ;
181
186
if ( configurationState instanceof ConfigurationImpl ) {
182
187
ConfigurationImpl hibernateSpecificConfig = (ConfigurationImpl ) configurationState ;
183
188
@@ -195,6 +200,8 @@ public ValidatorFactoryImpl(ConfigurationState configurationState) {
195
200
.isAllowParallelMethodsDefineParameterConstraints ();
196
201
197
202
tmpValidatedValueHandlers .addAll ( hibernateSpecificConfig .getValidatedValueHandlers () );
203
+
204
+ cascadedValueExtractors = new ArrayList <>( hibernateSpecificConfig .getCascadedValueExtractors () );
198
205
}
199
206
200
207
registerCustomConstraintValidators ( constraintMappings , constraintHelper );
@@ -206,7 +213,7 @@ public ValidatorFactoryImpl(ConfigurationState configurationState) {
206
213
)
207
214
);
208
215
this .validatedValueHandlers = Collections .unmodifiableList ( tmpValidatedValueHandlers );
209
-
216
+ this . valueExtractors = new ValueExtractors ( cascadedValueExtractors );
210
217
tmpFailFast = checkPropertiesForBoolean ( properties , HibernateValidatorConfiguration .FAIL_FAST , tmpFailFast );
211
218
this .failFast = tmpFailFast ;
212
219
@@ -313,6 +320,7 @@ public Validator getValidator() {
313
320
parameterNameProvider ,
314
321
failFast ,
315
322
validatedValueHandlers ,
323
+ valueExtractors ,
316
324
timeProvider ,
317
325
methodValidationConfiguration
318
326
);
@@ -350,6 +358,10 @@ public List<ValidatedValueUnwrapper<?>> getValidatedValueHandlers() {
350
358
return validatedValueHandlers ;
351
359
}
352
360
361
+ ValueExtractors getValueExtractors () {
362
+ return valueExtractors ;
363
+ }
364
+
353
365
TimeProvider getTimeProvider () {
354
366
return timeProvider ;
355
367
}
@@ -385,6 +397,7 @@ Validator createValidator(ConstraintValidatorFactory constraintValidatorFactory,
385
397
ExecutableParameterNameProvider parameterNameProvider ,
386
398
boolean failFast ,
387
399
List <ValidatedValueUnwrapper <?>> validatedValueHandlers ,
400
+ ValueExtractors valueExtractors ,
388
401
TimeProvider timeProvider ,
389
402
MethodValidationConfiguration methodValidationConfiguration ) {
390
403
@@ -412,6 +425,7 @@ Validator createValidator(ConstraintValidatorFactory constraintValidatorFactory,
412
425
timeProvider ,
413
426
typeResolutionHelper ,
414
427
validatedValueHandlers ,
428
+ valueExtractors ,
415
429
constraintValidatorManager ,
416
430
failFast
417
431
);
0 commit comments