class Lita::ConfigurationValidator

Validates a registry's configuration, checking for required attributes that are missing. @since 4.0.0 @api private

Public Class Methods

new(registry) click to toggle source

@param registry [Lita::Registry] The registry to validate.

# File lib/lita/configuration_validator.rb, line 7
def initialize(registry)
  @registry = registry
end

Public Instance Methods

call() click to toggle source

Validates adapter and handler configuration. Logs a fatal warning and aborts if any required configuration attributes are missing. @return [void]

# File lib/lita/configuration_validator.rb, line 14
def call
  validate_adapters
  validate_handlers
end

Private Instance Methods

adapters() click to toggle source

The registry's adapters.

# File lib/lita/configuration_validator.rb, line 22
def adapters
  @registry.adapters
end
children_for(plugin) click to toggle source

All a plugin's top-level configuration attributes.

# File lib/lita/configuration_validator.rb, line 27
def children_for(plugin)
  plugin.configuration_builder.children
end
full_attribute_name(names, name) click to toggle source

Generates the fully qualified name of a configuration attribute.

# File lib/lita/configuration_validator.rb, line 32
def full_attribute_name(names, name)
  (names + [name]).join(".")
end
handlers() click to toggle source

The registry's handlers.

# File lib/lita/configuration_validator.rb, line 37
def handlers
  @registry.handlers
end
validate(type, plugin, attributes, attribute_namespace = []) click to toggle source

Validates an array of attributes, recursing if any nested attributes are encountered.

# File lib/lita/configuration_validator.rb, line 52
def validate(type, plugin, attributes, attribute_namespace = [])
  attributes.each do |attribute|
    if attribute.children?
      validate(type, plugin, attribute.children, attribute_namespace.clone.push(attribute.name))
    elsif attribute.required? && attribute.value.nil?
      Lita.logger.fatal I18n.t(
        "lita.config.missing_required_#{type}_attribute",
        type => plugin.namespace,
        attribute: full_attribute_name(attribute_namespace, attribute.name)
      )
      abort
    end
  end
end
validate_adapters() click to toggle source

Validates the registry's adapters.

# File lib/lita/configuration_validator.rb, line 42
def validate_adapters
  adapters.each_value { |adapter| validate(:adapter, adapter, children_for(adapter)) }
end
validate_handlers() click to toggle source

Validates the registry's handlers.

# File lib/lita/configuration_validator.rb, line 47
def validate_handlers
  handlers.each { |handler| validate(:handler, handler, children_for(handler)) }
end