@SuppressWarnings("rawtypes") @Override public void createConstraintMappings(ConstraintMappingBuilder builder) { Map<Class<?>, List<Class<?>>> customValidators = newHashMap(); // find additional constraint validators via the Java ServiceLoader mechanism List<ConstraintValidator> discoveredConstraintValidators = run( GetInstancesFromServiceLoader.action( primaryClassLoader, ConstraintValidator.class ) ); for ( ConstraintValidator constraintValidator : discoveredConstraintValidators ) { Class<? extends ConstraintValidator> constraintValidatorClass = constraintValidator.getClass(); Class<?> annotationType = determineAnnotationType( constraintValidatorClass ); List<Class<?>> validators = customValidators.get( annotationType ); if ( annotationType != null && validators == null ) { validators = new ArrayList<Class<?>>(); customValidators.put( annotationType, validators ); } validators.add( constraintValidatorClass ); } ConstraintMapping constraintMapping = builder.addConstraintMapping(); for ( Map.Entry<Class<?>, List<Class<?>>> entry : customValidators.entrySet() ) { registerConstraintDefinition( constraintMapping, entry.getKey(), entry.getValue() ); } }
private ConfigurationImpl() { this.validationBootstrapParameters = new ValidationBootstrapParameters(); TypeResolutionHelper typeResolutionHelper = new TypeResolutionHelper(); if ( isJavaFxInClasspath() ) { validatedValueHandlers.add( createJavaFXUnwrapperClass( typeResolutionHelper ) ); } if ( Version.getJavaRelease() >= 8 ) { validatedValueHandlers.add( new OptionalValueUnwrapper( typeResolutionHelper ) ); } this.defaultResourceBundleLocator = new PlatformResourceBundleLocator( ResourceBundleMessageInterpolator.USER_VALIDATION_MESSAGES ); this.defaultTraversableResolver = new DefaultTraversableResolver(); this.defaultConstraintValidatorFactory = new ConstraintValidatorFactoryImpl(); this.defaultParameterNameProvider = new DefaultParameterNameProvider(); this.serviceLoaderBasedConstraintMappingContributor = new ServiceLoaderBasedConstraintMappingContributor( typeResolutionHelper ); }
private static Set<DefaultConstraintMapping> getConstraintMappings(TypeResolutionHelper typeResolutionHelper, ConfigurationState configurationState, ClassLoader externalClassLoader) { Set<DefaultConstraintMapping> constraintMappings = newHashSet(); if ( configurationState instanceof ConfigurationImpl ) { ConfigurationImpl hibernateConfiguration = (ConfigurationImpl) configurationState; // programmatic config /* We add these first so that constraint mapping created through DefaultConstraintMappingBuilder will take * these programmatically defined mappings into account when checking for constraint definition uniqueness */ constraintMappings.addAll( hibernateConfiguration.getProgrammaticMappings() ); // service loader based config ConstraintMappingContributor serviceLoaderBasedContributor = new ServiceLoaderBasedConstraintMappingContributor( typeResolutionHelper, externalClassLoader != null ? externalClassLoader : run( GetClassLoader.fromContext() ) ); DefaultConstraintMappingBuilder builder = new DefaultConstraintMappingBuilder( constraintMappings ); serviceLoaderBasedContributor.createConstraintMappings( builder ); } // XML-defined constraint mapping contributors List<ConstraintMappingContributor> contributors = getPropertyConfiguredConstraintMappingContributors( configurationState.getProperties(), externalClassLoader ); for ( ConstraintMappingContributor contributor : contributors ) { DefaultConstraintMappingBuilder builder = new DefaultConstraintMappingBuilder( constraintMappings ); contributor.createConstraintMappings( builder ); } return constraintMappings; }
@Override public void createConstraintMappings(ConstraintMappingBuilder builder) { Map<Class<?>, List<Class<?>>> customValidators = newHashMap(); // find additional constraint validators via the Java ServiceLoader mechanism GetConstraintValidatorList constraintValidatorListAction = new GetConstraintValidatorList(); List<ConstraintValidator<?, ?>> discoveredConstraintValidators = run( constraintValidatorListAction ); for ( ConstraintValidator<?, ?> constraintValidator : discoveredConstraintValidators ) { Class<?> constraintValidatorClass = constraintValidator.getClass(); Class<?> annotationType = determineAnnotationType( constraintValidatorClass ); List<Class<?>> validators = customValidators.get( annotationType ); if ( annotationType != null && validators == null ) { validators = new ArrayList<Class<?>>(); customValidators.put( annotationType, validators ); } validators.add( constraintValidatorClass ); } ConstraintMapping constraintMapping = builder.addConstraintMapping(); for ( Map.Entry<Class<?>, List<Class<?>>> entry : customValidators.entrySet() ) { registerConstraintDefinition( constraintMapping, entry.getKey(), entry.getValue() ); } }