// Custom rules
RuleRegistry registry = new RuleRegistry();
this.addRules(registry);
Map<String, IValidation> registeredRules = registry.getRules();
PatternMatcherFactory patternMatcherFactory = patternMatcherFactory();
// Validation configuration
ValidationConfigurer validationConfigurer = new ValidationConfigurer();
this.configureEditableValidation(validationConfigurer);
List<ValidationConfig> validationConfigs = validationConfigurer.getValidationConfigs();
Map<PatternMatcher, List<IValidation>> validationsData = new HashMap<PatternMatcher, List<IValidation>>();
for (ValidationConfig validationConfig : validationConfigs) {
String urlPattern = validationConfig.getUrlPattern();
boolean useDefaultRules = validationConfig.getRuleConfigurer().isDefaultRules();
List<String> selectedRules = validationConfig.getRuleConfigurer().getRules();
// Add selected rules
List<IValidation> activeRules = new ArrayList<IValidation>();
for (String ruleName : selectedRules) {
IValidation val = registeredRules.get(ruleName);
if (val == null) {
throw new BeanInitializationException("Rule with name '" + ruleName + "' not registered.");
}
activeRules.add(val);
}
// Add default rules if is required
if (useDefaultRules) {
activeRules.addAll(defaultRules);
}
PatternMatcher patternMatcher = patternMatcherFactory.getPatternMatcher(urlPattern);
validationsData.put(patternMatcher, activeRules);
}
HDIVValidations validations = new HDIVValidations();
validations.setUrls(validationsData);