Module: OpenHAB::OSGi
- Defined in:
- lib/openhab/osgi.rb
Overview
OSGi services interface
Class Attribute Summary collapse
-
.bundle ⇒ org.osgi.framework.Bundle
readonly
The OSGi Bundle for ScriptExtension Class.
-
.bundle_context ⇒ org.osgi.framework.BundleContext
readonly
OSGi bundle context for ScriptExtension Class.
Class Method Summary collapse
-
.register_service(instance, *interfaces, **properties) ⇒ org.osgi.framework.ServiceRegistration
Register a new service instance with OSGi.
- .service(name, filter: nil) ⇒ Object
-
.services(name, filter: nil) ⇒ Array<Object>
An array of services.
Class Attribute Details
.bundle ⇒ org.osgi.framework.Bundle (readonly)
Returns The OSGi Bundle for ScriptExtension Class.
63 64 65 |
# File 'lib/openhab/osgi.rb', line 63 def bundle @bundle ||= org.osgi.framework.FrameworkUtil.getBundle($scriptExtension.java_class) end |
.bundle_context ⇒ org.osgi.framework.BundleContext (readonly)
Returns OSGi bundle context for ScriptExtension Class.
57 58 59 |
# File 'lib/openhab/osgi.rb', line 57 def bundle_context @bundle_context ||= bundle.bundle_context end |
Class Method Details
.register_service(instance, *interfaces, **properties) ⇒ org.osgi.framework.ServiceRegistration
Register a new service instance with OSGi
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/openhab/osgi.rb', line 42 def register_service(instance, *interfaces, **properties) if interfaces.empty? interfaces = instance.class.ancestors.select { |k| k.respond_to?(:java_class) && k.java_class&.interface? } end bundle = org.osgi.framework.FrameworkUtil.get_bundle(interfaces.first.java_class) bundle.bundle_context.register_service( interfaces.map(&:java_class).map(&:name).to_java(java.lang.String), instance, java.util.Hashtable.new(properties) ) end |
.service(name, filter: nil) ⇒ Object
15 16 17 |
# File 'lib/openhab/osgi.rb', line 15 def service(name, filter: nil) services(name, filter: filter).first end |
.services(name, filter: nil) ⇒ Array<Object>
Returns An array of services.
25 26 27 28 29 30 |
# File 'lib/openhab/osgi.rb', line 25 def services(name, filter: nil) (bundle_context.get_service_references(name, filter) || []).map do |reference| logger.trace "OSGi service found for '#{name}' using OSGi Service Reference #{reference}" bundle_context.get_service(reference) end end |