Skip to content

Commit 376328c

Browse files
authored
[rules] Collapse input map in _getTriggeredData() (#527)
Collapses the input map by removing the prefixes from its keys. Allows to revert openhab/openhab-core#4919. --------- Also-by: Florian Hotze <dev@florianhotze.com> Signed-off-by: Ravi Nadahar <nadahar@rediffmail.com>
1 parent 2614199 commit 376328c

3 files changed

Lines changed: 21 additions & 6 deletions

File tree

src/rules/rules.js

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ const SCRIPT_TYPE = 'application/javascript';
7070
const GENERATED_RULE_ITEM_TAG = 'GENERATED_RULE_ITEM';
7171

7272
const HashMap = Java.type('java.util.HashMap');
73+
const Collectors = Java.type('java.util.stream.Collectors');
7374

7475
const items = require('../items/items');
7576
const { randomUUID, jsArrayToJavaSet } = require('../utils');
@@ -458,21 +459,35 @@ function _addFromHashMap (hashMap, key, object) {
458459
* This method is not intended for direct use in user scripts, but used internally by JS Scripting.
459460
*
460461
* @private
461-
* @param {*} input raw Java input/context, see
462+
* @param {*} rawInput raw Java input/context, see
462463
* {@link https://github.com/openhab/openhab-core/blob/main/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptActionHandler.java ScriptActionHandler}
463464
* and {@link https://github.com/openhab/openhab-core/blob/main/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/shared/simple/SimpleRuleActionHandler.java SimpleRuleActionHandler}
464465
* @param {boolean} [javaEventBackwardCompat=false] enables backwards compatibility with pure Java event object in UI-based rules
465466
* @returns {EventObject}
466467
*/
467-
function _getTriggeredData (input, javaEventBackwardCompat = false) {
468+
function _getTriggeredData (rawInput, javaEventBackwardCompat = false) {
469+
// collapse input map to remove prefixes from context keys
470+
const input = rawInput.entrySet().stream().collect(
471+
Collectors.toMap(
472+
entry => {
473+
const idx = entry.getKey().indexOf('.');
474+
if (idx >= 0) {
475+
return entry.getKey().substring(idx + 1);
476+
}
477+
return entry.getKey();
478+
},
479+
entry => entry.getValue()
480+
)
481+
);
482+
468483
const event = input.get('event');
469484
/**
470485
* @type {EventObject}
471486
*/
472487
const data = {};
473488

474489
// Add input to data to passthrough any properties not captured below
475-
data.raw = input;
490+
data.raw = rawInput;
476491

477492
// Dynamically added properties, depending on their availability
478493

types/rules/rules.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,11 @@ export function SwitchableJSRule(ruleConfig: RuleConfig): HostRule;
229229
* This method is not intended for direct use in user scripts, but used internally by JS Scripting.
230230
*
231231
* @private
232-
* @param {*} input raw Java input/context, see
232+
* @param {*} rawInput raw Java input/context, see
233233
* {@link https://github.com/openhab/openhab-core/blob/main/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptActionHandler.java ScriptActionHandler}
234234
* and {@link https://github.com/openhab/openhab-core/blob/main/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/shared/simple/SimpleRuleActionHandler.java SimpleRuleActionHandler}
235235
* @param {boolean} [javaEventBackwardCompat=false] enables backwards compatibility with pure Java event object in UI-based rules
236236
* @returns {EventObject}
237237
*/
238-
export function _getTriggeredData(input: any, javaEventBackwardCompat?: boolean): EventObject;
238+
export function _getTriggeredData(rawInput: any, javaEventBackwardCompat?: boolean): EventObject;
239239
//# sourceMappingURL=rules.d.ts.map

types/rules/rules.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)