Class: Lutaml::UmlRepository::StaticSite::Serializers::InheritanceResolver
- Inherits:
-
Object
- Object
- Lutaml::UmlRepository::StaticSite::Serializers::InheritanceResolver
show all
- Includes:
- Lutaml::Uml::ModelHelpers
- Defined in:
- lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb
Instance Method Summary
collapse
#class_type_for, #format_cardinality, #normalize_stereotypes, #package_path_for, #parse_cardinality, #qualified_name_for
Constructor Details
#initialize(repository, id_generator, options, generalization_map) ⇒ InheritanceResolver
Returns a new instance of InheritanceResolver.
17
18
19
20
21
22
|
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 17
def initialize(repository, id_generator, options, generalization_map)
@repository = repository
@id_generator = id_generator
@options = options
@generalization_map = generalization_map
end
|
Instance Method Details
#compute_inherited_associations(klass, visited = Set.new) ⇒ Object
52
53
54
55
56
57
|
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 52
def compute_inherited_associations(klass, visited = Set.new)
walk_inheritance_chain(klass, visited, :parent_inherited_assocs)
rescue StandardError => e
warn "Error computing inherited associations: #{e.message}"
[]
end
|
#compute_inherited_attributes(klass, visited = Set.new) ⇒ Object
45
46
47
48
49
50
|
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 45
def compute_inherited_attributes(klass, visited = Set.new)
walk_inheritance_chain(klass, visited, :parent_inherited_attrs)
rescue StandardError => e
warn "Error computing inherited attributes: #{e.message}"
[]
end
|
#find_generalizations(klass) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 24
def find_generalizations(klass)
map_parents = generalization_map_parents(klass)
return map_parents unless map_parents.nil?
parent = @repository.supertype_of(klass)
return [] if parent && parent.xmi_id == klass.xmi_id
parent ? [@id_generator.class_id(parent)] : []
rescue StandardError => e
warn "Error finding generalizations for #{klass.name}: #{e.message}"
[]
end
|
#find_specializations(klass) ⇒ Object
37
38
39
40
41
42
43
|
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 37
def find_specializations(klass)
children = @repository.subtypes_of(klass)
children.reject { |child| child.xmi_id == klass.xmi_id }
.map { |child| @id_generator.class_id(child) }
rescue StandardError
[]
end
|
#serialize_general_attribute(attr) ⇒ Object
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 72
def serialize_general_attribute(attr)
return nil unless attr
{
name: attr.name,
type: attr.type,
cardinality: serialize_cardinality(attr.cardinality),
definition: format_definition(attr.definition),
upperKlass: attr.upper_klass,
nameNs: attr.name_ns,
typeNs: attr.type_ns,
}
end
|
#serialize_generalization(klass, visited = Set.new) ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/lutaml/uml_repository/static_site/serializers/inheritance_resolver.rb', line 59
def serialize_generalization(klass, visited = Set.new)
return nil unless klass.generalization
return nil if visited.include?(klass.xmi_id)
visited.add(klass.xmi_id)
gen = klass.generalization
gen_basic_fields(gen).merge(gen_collection_fields(gen))
rescue StandardError => e
warn "Error serializing generalization: #{e.message}"
nil
end
|