openhab-jrubyscripting 5.0.0.rc5 → 5.0.0.rc8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/openhab/core/actions.rb +6 -6
- data/lib/openhab/core/dependency_tracking.rb +34 -0
- data/lib/openhab/core/entity_lookup.rb +132 -78
- data/lib/openhab/core/events/item_channel_link.rb +2 -2
- data/lib/openhab/core/events/item_command_event.rb +1 -1
- data/lib/openhab/core/events/item_event.rb +2 -2
- data/lib/openhab/core/events/item_state_changed_event.rb +1 -1
- data/lib/openhab/core/events/thing.rb +1 -1
- data/lib/openhab/core/items/accepted_data_types.rb +2 -2
- data/lib/openhab/core/items/contact_item.rb +1 -1
- data/lib/openhab/core/items/dimmer_item.rb +2 -2
- data/lib/openhab/core/items/generic_item.rb +45 -224
- data/lib/openhab/core/items/group_item.rb +5 -3
- data/lib/openhab/core/items/image_item.rb +2 -2
- data/lib/openhab/core/items/item.rb +219 -0
- data/lib/openhab/core/items/metadata/hash.rb +1 -1
- data/lib/openhab/core/items/persistence.rb +4 -5
- data/lib/openhab/core/items/provider.rb +2 -2
- data/lib/openhab/core/items/proxy.rb +68 -7
- data/lib/openhab/core/items/registry.rb +6 -6
- data/lib/openhab/core/items/semantics/enumerable.rb +6 -6
- data/lib/openhab/core/items/semantics.rb +8 -7
- data/lib/openhab/core/items.rb +2 -1
- data/lib/openhab/core/provider.rb +14 -7
- data/lib/openhab/core/rules/registry.rb +2 -2
- data/lib/openhab/core/rules.rb +1 -1
- data/lib/openhab/core/script_handling.rb +6 -6
- data/lib/openhab/core/things/channel.rb +1 -1
- data/lib/openhab/core/things/channel_uid.rb +2 -2
- data/lib/openhab/core/things/item_channel_link.rb +2 -2
- data/lib/openhab/core/things/links/provider.rb +2 -2
- data/lib/openhab/core/things/registry.rb +1 -1
- data/lib/openhab/core/things/thing.rb +1 -1
- data/lib/openhab/core/types/date_time_type.rb +4 -4
- data/lib/openhab/core/types/hsb_type.rb +2 -2
- data/lib/openhab/core/types/quantity_type.rb +1 -1
- data/lib/openhab/core/types.rb +1 -1
- data/lib/openhab/core/uid.rb +1 -1
- data/lib/openhab/core/value_cache.rb +188 -0
- data/lib/openhab/core.rb +57 -15
- data/lib/openhab/core_ext/ruby/symbol.rb +7 -0
- data/lib/openhab/dsl/items/builder.rb +17 -10
- data/lib/openhab/dsl/items/ensure.rb +5 -5
- data/lib/openhab/dsl/items/timed_command.rb +4 -4
- data/lib/openhab/dsl/rules/automation_rule.rb +53 -39
- data/lib/openhab/dsl/rules/builder.rb +128 -79
- data/lib/openhab/dsl/rules/guard.rb +5 -5
- data/lib/openhab/dsl/rules/name_inference.rb +20 -1
- data/lib/openhab/dsl/rules/rule_triggers.rb +3 -3
- data/lib/openhab/dsl/rules/terse.rb +1 -0
- data/lib/openhab/dsl/rules/triggers/changed.rb +26 -23
- data/lib/openhab/dsl/rules/triggers/command.rb +6 -5
- data/lib/openhab/dsl/rules/triggers/conditions/duration.rb +2 -2
- data/lib/openhab/dsl/rules/triggers/cron/cron.rb +2 -2
- data/lib/openhab/dsl/rules/triggers/cron/cron_handler.rb +6 -6
- data/lib/openhab/dsl/rules/triggers/updated.rb +5 -5
- data/lib/openhab/dsl/rules/triggers/watch/watch_handler.rb +11 -12
- data/lib/openhab/dsl/things/builder.rb +73 -14
- data/lib/openhab/dsl/version.rb +2 -2
- data/lib/openhab/dsl.rb +43 -17
- data/lib/openhab/log.rb +5 -5
- data/lib/openhab/rspec/configuration.rb +5 -5
- data/lib/openhab/rspec/example_group.rb +1 -1
- data/lib/openhab/rspec/helpers.rb +4 -4
- data/lib/openhab/rspec/hooks.rb +19 -1
- data/lib/openhab/rspec/karaf.rb +12 -19
- data/lib/openhab/rspec/suspend_rules.rb +2 -1
- metadata +7 -3
@@ -52,7 +52,7 @@ module OpenHAB
|
|
52
52
|
module RSpec
|
53
53
|
#
|
54
54
|
# Provides helper methods for use in specs, to easily work with and adjust
|
55
|
-
# the
|
55
|
+
# the openHAB environment.
|
56
56
|
#
|
57
57
|
# These methods are automatically available in RSpec spec blocks, as well
|
58
58
|
# as other per-spec hooks like `before` and `after`. You can also call them
|
@@ -175,7 +175,7 @@ module OpenHAB
|
|
175
175
|
end
|
176
176
|
|
177
177
|
#
|
178
|
-
# Require all files configured to be autorequired with the jrubyscripting addon in
|
178
|
+
# Require all files configured to be autorequired with the jrubyscripting addon in openHAB.
|
179
179
|
#
|
180
180
|
# This method is normally called by RSpec hooks.
|
181
181
|
#
|
@@ -306,7 +306,7 @@ module OpenHAB
|
|
306
306
|
end
|
307
307
|
|
308
308
|
#
|
309
|
-
# Install an
|
309
|
+
# Install an openHAB addon
|
310
310
|
#
|
311
311
|
# @param [String] addon_id The addon id, such as "binding-mqtt"
|
312
312
|
# @param [true,false] wait Wait until OSGi has confirmed the bundle is installed and running before returning.
|
@@ -348,7 +348,7 @@ module OpenHAB
|
|
348
348
|
end
|
349
349
|
end
|
350
350
|
|
351
|
-
# @return [String] The filename of the
|
351
|
+
# @return [String] The filename of the openHAB log.
|
352
352
|
def log_file
|
353
353
|
"#{java.lang.System.get_property("openhab.logdir", nil)}/openhab.log"
|
354
354
|
end
|
data/lib/openhab/rspec/hooks.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module OpenHAB
|
4
4
|
#
|
5
5
|
# This module contains helper methods, hooks, and infrastracture to
|
6
|
-
# boot
|
6
|
+
# boot openHAB inside of JRuby, and run RSpec (or other Ruby processes)
|
7
7
|
# in that context.
|
8
8
|
#
|
9
9
|
# @see file:testing.md Testing Your Rules
|
@@ -11,6 +11,14 @@ module OpenHAB
|
|
11
11
|
module RSpec
|
12
12
|
Object.include Helpers if defined?(IRB)
|
13
13
|
|
14
|
+
# @!visibility private
|
15
|
+
module Hooks
|
16
|
+
class << self
|
17
|
+
attr_accessor :cache_script_extension
|
18
|
+
end
|
19
|
+
self.cache_script_extension = nil
|
20
|
+
end
|
21
|
+
|
14
22
|
Helpers.launch_karaf(
|
15
23
|
include_bindings: Configuration.include_bindings,
|
16
24
|
include_jsondb: Configuration.include_jsondb,
|
@@ -28,6 +36,15 @@ module OpenHAB
|
|
28
36
|
Helpers.send(:set_up_autoupdates)
|
29
37
|
Helpers.load_transforms
|
30
38
|
Helpers.load_rules
|
39
|
+
|
40
|
+
if DSL.shared_cache
|
41
|
+
Hooks.cache_script_extension = OSGi.service(
|
42
|
+
"org.openhab.core.automation.module.script.ScriptExtensionProvider",
|
43
|
+
filter:
|
44
|
+
"(component.name=org.openhab.core.automation.module.script.rulesupport.internal.CacheScriptExtension)"
|
45
|
+
)
|
46
|
+
Hooks.cache_script_extension.class.field_reader :sharedCache
|
47
|
+
end
|
31
48
|
end
|
32
49
|
|
33
50
|
config.before do
|
@@ -79,6 +96,7 @@ module OpenHAB
|
|
79
96
|
Timecop.return
|
80
97
|
restore_autoupdate_items
|
81
98
|
Mocks::PersistenceService.instance.reset
|
99
|
+
Hooks.cache_script_extension.sharedCache.clear if DSL.shared_cache
|
82
100
|
end
|
83
101
|
end
|
84
102
|
end
|
data/lib/openhab/rspec/karaf.rb
CHANGED
@@ -20,6 +20,14 @@ module OpenHAB
|
|
20
20
|
def get(type)
|
21
21
|
@manager.get(type, "jruby")
|
22
22
|
end
|
23
|
+
|
24
|
+
def default_presets
|
25
|
+
@manager.default_presets
|
26
|
+
end
|
27
|
+
|
28
|
+
def import_preset(preset)
|
29
|
+
@manager.find_preset(preset, "rspec")
|
30
|
+
end
|
23
31
|
end
|
24
32
|
private_constant :ScriptExtensionManagerWrapper
|
25
33
|
|
@@ -73,7 +81,7 @@ module OpenHAB
|
|
73
81
|
service = org.apache.karaf.instance.core.internal.InstanceServiceImpl.new
|
74
82
|
settings = org.apache.karaf.instance.core.InstanceSettings.new(0, 0, 0, path, nil, nil, nil)
|
75
83
|
root_instance = service.instances.find(&:root?)
|
76
|
-
raise ArgumentError "No root instance found to clone... has
|
84
|
+
raise ArgumentError "No root instance found to clone... has openHAB run yet?" unless root_instance
|
77
85
|
|
78
86
|
return if service.get_instance("rspec")
|
79
87
|
|
@@ -121,7 +129,7 @@ module OpenHAB
|
|
121
129
|
launch_karaf
|
122
130
|
at_exit do
|
123
131
|
@main.destroy
|
124
|
-
# OSGi/
|
132
|
+
# OSGi/openHAB leave a ton of threads around. Kill ourselves ASAP
|
125
133
|
code = if $!.nil? || ($!.is_a?(SystemExit) && $!.success?)
|
126
134
|
0
|
127
135
|
elsif $!.is_a?(SystemExit)
|
@@ -566,21 +574,6 @@ module OpenHAB
|
|
566
574
|
wait_for_service("org.openhab.core.automation.module.script.internal.ScriptExtensionManager") do |sem|
|
567
575
|
# since we're not created by the ScriptEngineManager, this never gets set; manually set it
|
568
576
|
$se = $scriptExtension = ScriptExtensionManagerWrapper.new(sem)
|
569
|
-
scope_values = sem.find_default_presets("rspec")
|
570
|
-
scope_values = scope_values.entry_set.to_a
|
571
|
-
|
572
|
-
scope_values.each do |entry|
|
573
|
-
key = entry.key
|
574
|
-
value = entry.value
|
575
|
-
# convert Java classes to Ruby classes
|
576
|
-
value = value.ruby_class if value.is_a?(java.lang.Class) # rubocop:disable Lint/UselessAssignment
|
577
|
-
# variables are globals; constants go into the global namespace
|
578
|
-
key = case key[0]
|
579
|
-
when "a".."z" then "$#{key}"
|
580
|
-
when "A".."Z" then "::#{key}"
|
581
|
-
end
|
582
|
-
eval("#{key} = value unless defined?(#{key})", nil, __FILE__, __LINE__) # rubocop:disable Security/Eval
|
583
|
-
end
|
584
577
|
end
|
585
578
|
end
|
586
579
|
|
@@ -731,7 +724,7 @@ module OpenHAB
|
|
731
724
|
sls = OSGi.service("org.openhab.core.service.StartLevelService")
|
732
725
|
|
733
726
|
unless sls
|
734
|
-
# try a different (hacky!) way to get it, since in
|
727
|
+
# try a different (hacky!) way to get it, since in openHAB 3.2.0 it's not exposed as a service
|
735
728
|
scr = OSGi.service("org.osgi.service.component.runtime.ServiceComponentRuntime")
|
736
729
|
scr.class.field_reader :componentRegistry
|
737
730
|
cr = scr.componentRegistry
|
@@ -771,7 +764,7 @@ module OpenHAB
|
|
771
764
|
File.write("#{oh_userdata}/etc/org.apache.karaf.features.xml", <<~XML)
|
772
765
|
<?xml version="1.0" encoding="UTF-8"?>
|
773
766
|
<featuresProcessing xmlns="http://karaf.apache.org/xmlns/features-processing/v1.0.0" xmlns:f="http://karaf.apache.org/xmlns/features/v1.6.0">
|
774
|
-
<!-- From
|
767
|
+
<!-- From openHAB 3.2.0 -->
|
775
768
|
<bundleReplacements>
|
776
769
|
<bundle originalUri="mvn:org.ops4j.pax.logging/pax-logging-api/[0,2.0.13)" replacement="mvn:org.ops4j.pax.logging/pax-logging-api/2.0.13" mode="maven" />
|
777
770
|
<bundle originalUri="mvn:org.ops4j.pax.logging/pax-logging-log4j2/[0,2.0.13)" replacement="mvn:org.ops4j.pax.logging/pax-logging-log4j2/2.0.13" mode="maven" />
|
@@ -18,7 +18,8 @@ module OpenHAB
|
|
18
18
|
logger.trace { "Execute called with mod (#{mod&.to_string}) and inputs (#{inputs.inspect})" }
|
19
19
|
logger.trace { "Event details #{inputs["event"].inspect}" } if inputs&.key?("event")
|
20
20
|
trigger_conditions(inputs).process(mod: mod, inputs: inputs) do
|
21
|
-
|
21
|
+
event = extract_event(inputs)
|
22
|
+
process_queue(create_queue(event), mod, event)
|
22
23
|
end
|
23
24
|
rescue Exception => e
|
24
25
|
raise if defined?(::RSpec) && ::RSpec.current_example.example_group.propagate_exceptions?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openhab-jrubyscripting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.0.
|
4
|
+
version: 5.0.0.rc8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -327,6 +327,7 @@ extra_rdoc_files: []
|
|
327
327
|
files:
|
328
328
|
- lib/openhab/core.rb
|
329
329
|
- lib/openhab/core/actions.rb
|
330
|
+
- lib/openhab/core/dependency_tracking.rb
|
330
331
|
- lib/openhab/core/entity_lookup.rb
|
331
332
|
- lib/openhab/core/events.rb
|
332
333
|
- lib/openhab/core/events/abstract_event.rb
|
@@ -346,6 +347,7 @@ files:
|
|
346
347
|
- lib/openhab/core/items/generic_item.rb
|
347
348
|
- lib/openhab/core/items/group_item.rb
|
348
349
|
- lib/openhab/core/items/image_item.rb
|
350
|
+
- lib/openhab/core/items/item.rb
|
349
351
|
- lib/openhab/core/items/location_item.rb
|
350
352
|
- lib/openhab/core/items/metadata.rb
|
351
353
|
- lib/openhab/core/items/metadata/hash.rb
|
@@ -408,6 +410,7 @@ files:
|
|
408
410
|
- lib/openhab/core/types/un_def_type.rb
|
409
411
|
- lib/openhab/core/types/up_down_type.rb
|
410
412
|
- lib/openhab/core/uid.rb
|
413
|
+
- lib/openhab/core/value_cache.rb
|
411
414
|
- lib/openhab/core_ext.rb
|
412
415
|
- lib/openhab/core_ext/between.rb
|
413
416
|
- lib/openhab/core_ext/java/class.rb
|
@@ -429,6 +432,7 @@ files:
|
|
429
432
|
- lib/openhab/core_ext/ruby/date_time.rb
|
430
433
|
- lib/openhab/core_ext/ruby/numeric.rb
|
431
434
|
- lib/openhab/core_ext/ruby/range.rb
|
435
|
+
- lib/openhab/core_ext/ruby/symbol.rb
|
432
436
|
- lib/openhab/core_ext/ruby/time.rb
|
433
437
|
- lib/openhab/dsl.rb
|
434
438
|
- lib/openhab/dsl/events.rb
|
@@ -528,5 +532,5 @@ requirements: []
|
|
528
532
|
rubygems_version: 3.3.7
|
529
533
|
signing_key:
|
530
534
|
specification_version: 4
|
531
|
-
summary: JRuby Helper Libraries for
|
535
|
+
summary: JRuby Helper Libraries for openHAB Scripting
|
532
536
|
test_files: []
|