Method: OpenHAB::Core::Provider.current

Defined in:
lib/openhab/core/provider.rb

.current(preferred_provider = nil, element = nil) ⇒ org.openhab.core.common.registry.Provider

Determines the current provider that should be used to create elements belonging to this registry.



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/openhab/core/provider.rb', line 76

def current(preferred_provider = nil, element = nil)
  preferred_provider ||= Thread.current[:openhab_providers]&.[](type)
  if preferred_provider.is_a?(Proc)
    preferred_provider = if preferred_provider.arity.zero? || element.nil?
                           preferred_provider.call
                         else
                           preferred_provider.call(element)
                         end
  end

  case preferred_provider
  when nil, :transient
    instance
  when :persistent
    registry.managed_provider.get
  when org.openhab.core.common.registry.ManagedProvider
    preferred_provider
  else
    raise ArgumentError, "#{preferred_provider.inspect} is not a ManagedProvider"
  end
end