class Lutaml::Hal::Link

HAL Link representation with realization capability

def find_register(explicit_register)

def find_register(explicit_register)
  return explicit_register if explicit_register
  register_id = instance_variable_get("@#{Hal::REGISTER_ID_ATTR_NAME}")
  return nil if register_id.nil?
  register = Lutaml::Hal::GlobalRegister.instance.get(register_id)
  if register.nil?
    raise 'GlobalRegister in use but unable to find the register. '\
      'Please provide a register to the `#realize` method to resolve the link'
  end
  register
end

def realize(register: nil)

via the `register:` parameter.
If the Link does not have a register, a register needs to be provided explicitly
This method will use the global register according to the source of the Link object.
Fetch the actual resource this link points to.
def realize(register: nil)
  register = find_register(register)
  raise "No register provided for link resolution (class: #{self.class}, href: #{href})" if register.nil?
  Hal.debug_log "Resolving link href: #{href} using register"
  register.resolve_and_cast(self, href)
end