Class: Lutaml::Xsd::CircularImportRule

Inherits:
ValidationRule show all
Defined in:
lib/lutaml/xsd/xsd_spec_validator.rb

Overview

Validates for circular import chains

Instance Attribute Summary

Attributes inherited from ValidationRule

#version

Instance Method Summary collapse

Methods inherited from ValidationRule

#initialize

Constructor Details

This class inherits a constructor from Lutaml::Xsd::ValidationRule

Instance Method Details

#validate(repository) ⇒ Object



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/lutaml/xsd/xsd_spec_validator.rb', line 125

def validate(repository)
  errors = []
  warnings = []

  # Build dependency graph
  dependencies = build_dependency_graph(repository)

  # Check for circular dependencies
  visited = {}
  dependencies.each_key do |file|
    errors << "Circular import chain detected involving schema: #{File.basename(file)}" if has_circular_dependency?(
      file, dependencies, visited, []
    )
  end

  { errors: errors, warnings: warnings }
end