class Puppet::Pops::Validation::Factory
This class is an abstract base implementation of a _model validation factory_ that creates a validator instance and associates it with a fully configured DiagnosticProducer
.
A validator is responsible for validating a model. There may be different versions of validation available for one and the same model; e.g. different semantics for different puppet versions, or different types of validation configuration depending on the context/type of validation that should be performed (static, vs. runtime, etc.).
This class is abstract and must be subclassed. The subclass must implement the methods {#label_provider} and {#checker}. It is also expected that the subclass will override the severity_producer
and configure the issues that should be reported as errors (i.e. if they should be ignored, produce a warning, or a deprecation warning).
@abstract Subclass must implement {#checker}, and {#label_provider} @api public
Public Instance Methods
Produces the checker to use.
@abstract
@api public
# File lib/puppet/pops/validation.rb 69 def checker(diagnostic_producer) 70 raise NoMethodError, "checker" 71 end
Produces the diagnostics producer to use given an acceptor of issues.
@param acceptor [Acceptor] the acceptor is the receiver of all detected issues @return [DiagnosticProducer] a detector of issues
@api public
# File lib/puppet/pops/validation.rb 48 def diagnostic_producer(acceptor) 49 DiagnosticProducer.new(acceptor, severity_producer(), label_provider()) 50 end
Produces the label provider to use.
@abstract
@api public
# File lib/puppet/pops/validation.rb 79 def label_provider 80 raise NoMethodError, "label_provider" 81 end
Produces the SeverityProducer
to use Subclasses should implement and add specific overrides
@return [SeverityProducer] a severity producer producing error, warning or ignore per issue
@api public
# File lib/puppet/pops/validation.rb 59 def severity_producer 60 SeverityProducer.new 61 end
Produces a validator with the given acceptor as the recipient of produced diagnostics. The acceptor is where detected issues are received (and typically collected).
@param acceptor [Acceptor] the acceptor is the receiver of all detected issues @return [#validate] a validator responding to `validate(model)`
@api public
# File lib/puppet/pops/validation.rb 37 def validator(acceptor) 38 checker(diagnostic_producer(acceptor)) 39 end