Class: URIResolver::URIResolver

Inherits:
Object
  • Object
show all
Includes:
JSONModel
Defined in:
backend/app/lib/uri_resolver.rb

Instance Method Summary (collapse)

Methods included from JSONModel

JSONModel, #JSONModel, add_error_handler, all, allow_unmapped_enum_value, backend_url, client_mode?, custom_validations, destroy_model, enum_default_value, enum_values, handle_error, init, load_schema, #models, models, parse_jsonmodel_ref, parse_reference, repository, repository_for, schema_src, set_repository, strict_mode, strict_mode?, with_repository

Constructor Details

- (URIResolver) initialize(properties_to_resolve, env)

Returns a new instance of URIResolver



9
10
11
12
13
14
15
16
17
18
# File 'backend/app/lib/uri_resolver.rb', line 9

def initialize(properties_to_resolve, env)
  @to_resolve = []
  @env = env

  if properties_to_resolve.is_a?(Array)
    @properties = properties_to_resolve
  else
    raise ":all not implemented yet"
  end
end

Instance Method Details

- (Object) resolve_references(value, clone = true)

Walk ‘value’, find all refs, resolve them



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'backend/app/lib/uri_resolver.rb', line 22

def resolve_references(value, clone = true)
  return value if properties.empty?

  value = value.to_hash(:trusted) if value.is_a?(JSONModelType)
  value = deep_clone(value) if clone

  @to_resolve = []

  # Walk the tree of 'value' looking for any refs that should be resolved.
  # Store them on this instance.
  store_refs_for_resolving(value)

  # Resolve all refs, mutating 'value' to include resolved versions.
  resolve_and_insert_refs!

  value
end