Class: Lutaml::UmlRepository::Validators::RepositoryValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/uml_repository/validators/repository_validator.rb

Overview

RepositoryValidator validates the consistency and integrity of a UML repository

Performs comprehensive validation checks including:

  • Type reference validation (checking all attribute types exist)

  • Generalization reference validation (checking parent classes exist)

  • Circular inheritance detection

  • Association reference validation

  • Multiplicity validation

Examples:

Validating a repository

validator = RepositoryValidator.new(document, indexes)
result = validator.validate
if result.valid?
  puts "Model is valid"
else
  result.errors.each { |error| puts "ERROR: #{error}" }
end

Constant Summary collapse

PRIMITIVE_TYPES =

Primitive types that don’t need to be resolved

%w[
  String Integer Boolean Date DateTime Float Double
  Long Short Byte Char Time Decimal
  UnlimitedNatural Real
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(document, indexes) ⇒ RepositoryValidator

Returns a new instance of RepositoryValidator.

Parameters:



34
35
36
37
38
39
# File 'lib/lutaml/uml_repository/validators/repository_validator.rb', line 34

def initialize(document, indexes)
  @document = document
  @indexes = indexes
  @errors = []
  @warnings = []
end

Instance Method Details

#validate(verbose: false) ⇒ ValidationResult

Validate the repository and return results

Parameters:

  • verbose (Boolean) (defaults to: false)

    Collect detailed validation information

Returns:



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/lutaml/uml_repository/validators/repository_validator.rb', line 45

def validate(verbose: false) # rubocop:disable Metrics/MethodLength
  @verbose = verbose
  @validation_details = [] if verbose

  check_type_references
  check_generalization_references
  # DISABLED: check_circular_inheritance - has bugs with name resolution
  check_association_references
  check_multiplicities

  ValidationResult.new(
    valid: @errors.empty?,
    errors: @errors,
    warnings: @warnings,
    external_references: @external_references || [],
    validation_details: @validation_details,
  )
end