openhab-jrubyscripting 5.0.0.rc5 → 5.0.0.rc8
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|