Shared rules
Reference | Automatic Validation
Rules are typically defined in the context of a single endpoint in the auto-validator component that is injected into a handler. There are scenarios in which is is useful to define rules in way they can be shared between multiple handlers/auto-validators:
- A common rule that is needed by multiple endpoints (email address validation, for example)
- A rule that is used by another operation (the ELEM operation for
SLICEvalidation)
There are a number of steps to enabling shared rules:
Shared rule manager
Create a component of type validate.UnparsedRuleManager and provide a config path to your rule definitions:
"sharedRuleManager": {
"type": "validate.UnparsedRuleManager",
"Rules": "$sharedRules"
}
Rule definitions
Define your shared rules in any configuration file. The structure is a map of string arrays like:
"sharedRules": {
"artistExistsRule": ["INT", "EXT:artistExistsChecker"],
"personAgeRule": ["INT", "RANGE:0-120"]
}
The key in the map (artistExistsRule) is the name of the rule that can be referenced by other components. The structure
and content of the rules are defined in the same way as non-shared rules.
Set rule manager on auto-validator
The auto validator which manages validation for a particular handler must be given a reference to the shared rule manager
"submitRecordHandler": {
"type": "handler.WsHandler",
"AutoValidator": {
"type": "validate.RuleValidator",
"DefaultErrorCode": "INVALID_RECORD",
"Rules": "$createRecordRules",
"RuleManager": "+sharedRuleManager"
}
}
Next: Relational databases
Prev: Operations reference
