Skip to content

Commit 3712559

Browse files
committed
fixes after review
Signed-off-by: Mark Herwege <mark.herwege@telenet.be>
1 parent 87f445e commit 3712559

2 files changed

Lines changed: 21 additions & 5 deletions

File tree

bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/sitemaps/YamlWidgetDTO.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,12 @@ private boolean isValidRule(@NonNull List<@NonNull String> errors, @NonNull List
330330
addToList(warnings, "rule in \"%s\" field: unexpected \"value\" field is ignored"
331331
.formatted(parameterName));
332332
}
333+
} else if (rule.item == null && rule.operator == null && rule.argument == null
334+
&& rule.value == null) {
335+
addToList(errors,
336+
"invalid rule in \"%s\" field: \"argument\" field and \"value\" field should not both be empty"
337+
.formatted(parameterName));
338+
ok = false;
333339
}
334340
} else {
335341
addToList(errors, "invalid type for rule in \"%s\" field".formatted(parameterName));
@@ -355,6 +361,11 @@ private boolean isValidRule(@NonNull List<@NonNull String> errors, @NonNull List
355361
addToList(warnings,
356362
"rule in \"%s\" field: unexpected \"value\" field is ignored".formatted(parameterName));
357363
}
364+
} else if (rule.item == null && rule.operator == null && rule.argument == null && rule.value == null) {
365+
addToList(errors,
366+
"invalid rule in \"%s\" field: \"argument\" field and \"value\" field should not both be empty"
367+
.formatted(parameterName));
368+
ok = false;
358369
}
359370
}
360371
ruleErrors.forEach(error -> {

bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/components/UIComponentSitemapProvider.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ private void addWidgetRules(List<Rule> rules, UIComponent component, String key)
368368
if (sourceRules instanceof Collection<?> sourceRulesCollection) {
369369
for (Object sourceRule : sourceRulesCollection) {
370370
if (sourceRule instanceof String) {
371-
String argument = !"visibility".equals(key) ? getRuleArgument(sourceRule.toString()) : null;
371+
String argument = getRuleArgument(sourceRule.toString());
372372
List<String> conditionsString = getRuleConditions(sourceRule.toString(), argument);
373373
Rule rule = sitemapFactory.createRule();
374374
List<Condition> conditions = getConditions(conditionsString, component, key);
@@ -419,10 +419,15 @@ List<Condition> getConditions(List<String> conditionsString, UIComponent compone
419419
return conditions;
420420
}
421421

422-
private String getRuleArgument(String rule) {
423-
int argIndex = rule.lastIndexOf("=") + 1;
424-
String strippedRule = stripQuotes(rule.substring(argIndex).trim());
425-
return strippedRule != null ? strippedRule : "";
422+
private @Nullable String getRuleArgument(String rule) {
423+
String strippedRule = null;
424+
int lastEqualsIndex = rule.lastIndexOf("=");
425+
String charBeforeEquals = lastEqualsIndex > 0 ? rule.substring(lastEqualsIndex - 1, lastEqualsIndex) : null;
426+
if (!("=".equals(charBeforeEquals) && "!".equals(charBeforeEquals) && "<".equals(charBeforeEquals)
427+
&& ">".equals(charBeforeEquals))) {
428+
strippedRule = stripQuotes(rule.substring(lastEqualsIndex + 1).trim());
429+
}
430+
return strippedRule;
426431
}
427432

428433
private List<String> getRuleConditions(String rule, @Nullable String argument) {

0 commit comments

Comments
 (0)