Skip to content

Commit 69b09da

Browse files
committed
[YAML provider] Fix check of syntax for item names
Closes openhab#4903 Makes check consistent with what was done for DSL in openhab#4928 Signed-off-by: Laurent Garnier <lg.hc@free.fr>
1 parent 71692e7 commit 69b09da

2 files changed

Lines changed: 27 additions & 25 deletions

File tree

bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/items/YamlItemDTO.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.eclipse.jdt.annotation.Nullable;
2424
import org.openhab.core.common.AbstractUID;
2525
import org.openhab.core.items.GroupItem;
26+
import org.openhab.core.items.ItemUtil;
2627
import org.openhab.core.model.yaml.YamlElement;
2728
import org.openhab.core.model.yaml.YamlElementName;
2829
import org.openhab.core.model.yaml.internal.util.YamlElementUtils;
@@ -88,9 +89,10 @@ public boolean isValid(@Nullable List<@NonNull String> errors, @Nullable List<@N
8889
return false;
8990
}
9091
boolean ok = true;
91-
if (!ID_PATTERN.matcher(name).matches()) {
92-
addToList(errors, "invalid item: name \"%s\" not matching the expected syntax %s".formatted(name,
93-
ID_PATTERN.pattern()));
92+
if (!ItemUtil.isValidItemName(name)) {
93+
addToList(errors,
94+
"invalid item: name \"%s\" must begin with a letter or underscore followed by alphanumeric characters and underscores, and must not contain any other symbols."
95+
.formatted(name));
9496
ok = false;
9597
}
9698
List<String> subErrors = new ArrayList<>();

bundles/org.openhab.core.model.yaml/src/test/java/org/openhab/core/model/yaml/internal/items/YamlItemDTOTest.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void testIsValid() throws IOException {
5353
assertTrue(item.isValid(null, null));
5454
item.name = "$name";
5555
assertFalse(item.isValid(null, null));
56-
item.name = "my-name";
56+
item.name = "my_name";
5757
assertTrue(item.isValid(null, null));
5858

5959
item.type = "Group";
@@ -123,10 +123,10 @@ public void testEquals() throws IOException {
123123
YamlItemDTO item1 = new YamlItemDTO();
124124
YamlItemDTO item2 = new YamlItemDTO();
125125

126-
item1.name = "item-name";
127-
item2.name = "item-name-2";
126+
item1.name = "item_name";
127+
item2.name = "item_name_2";
128128
assertFalse(item1.equals(item2));
129-
item2.name = "item-name";
129+
item2.name = "item_name";
130130
assertTrue(item1.equals(item2));
131131
assertEquals(item1.hashCode(), item2.hashCode());
132132

@@ -206,8 +206,8 @@ public void testEqualsWithLabel() throws IOException {
206206
YamlItemDTO item1 = new YamlItemDTO();
207207
YamlItemDTO item2 = new YamlItemDTO();
208208

209-
item1.name = "item-name";
210-
item2.name = "item-name";
209+
item1.name = "item_name";
210+
item2.name = "item_name";
211211
item1.type = "String";
212212
item2.type = "String";
213213

@@ -235,8 +235,8 @@ public void testEqualsWithIcon() throws IOException {
235235
YamlItemDTO item1 = new YamlItemDTO();
236236
YamlItemDTO item2 = new YamlItemDTO();
237237

238-
item1.name = "item-name";
239-
item2.name = "item-name";
238+
item1.name = "item_name";
239+
item2.name = "item_name";
240240
item1.type = "Number";
241241
item2.type = "Number";
242242

@@ -264,8 +264,8 @@ public void testEqualsWithFormat() throws IOException {
264264
YamlItemDTO item1 = new YamlItemDTO();
265265
YamlItemDTO item2 = new YamlItemDTO();
266266

267-
item1.name = "item-name";
268-
item2.name = "item-name";
267+
item1.name = "item_name";
268+
item2.name = "item_name";
269269
item1.type = "Number";
270270
item2.type = "Number";
271271

@@ -293,8 +293,8 @@ public void testEqualsWithUnit() throws IOException {
293293
YamlItemDTO item1 = new YamlItemDTO();
294294
YamlItemDTO item2 = new YamlItemDTO();
295295

296-
item1.name = "item-name";
297-
item2.name = "item-name";
296+
item1.name = "item_name";
297+
item2.name = "item_name";
298298
item1.type = "Number";
299299
item2.type = "Number";
300300

@@ -322,8 +322,8 @@ public void testEqualsWithAutoupdate() throws IOException {
322322
YamlItemDTO item1 = new YamlItemDTO();
323323
YamlItemDTO item2 = new YamlItemDTO();
324324

325-
item1.name = "item-name";
326-
item2.name = "item-name";
325+
item1.name = "item_name";
326+
item2.name = "item_name";
327327
item1.type = "Number";
328328
item2.type = "Number";
329329

@@ -364,8 +364,8 @@ public void testEqualsWithGroups() throws IOException {
364364
YamlItemDTO item1 = new YamlItemDTO();
365365
YamlItemDTO item2 = new YamlItemDTO();
366366

367-
item1.name = "item-name";
368-
item2.name = "item-name";
367+
item1.name = "item_name";
368+
item2.name = "item_name";
369369
item1.type = "Number";
370370
item2.type = "Number";
371371

@@ -406,8 +406,8 @@ public void testEqualsWithTags() throws IOException {
406406
YamlItemDTO item1 = new YamlItemDTO();
407407
YamlItemDTO item2 = new YamlItemDTO();
408408

409-
item1.name = "item-name";
410-
item2.name = "item-name";
409+
item1.name = "item_name";
410+
item2.name = "item_name";
411411
item1.type = "Number";
412412
item2.type = "Number";
413413

@@ -449,8 +449,8 @@ public void testEqualsWithChannels() throws IOException {
449449
YamlItemDTO item1 = new YamlItemDTO();
450450
YamlItemDTO item2 = new YamlItemDTO();
451451

452-
item1.name = "item-name";
453-
item2.name = "item-name";
452+
item1.name = "item_name";
453+
item2.name = "item_name";
454454
item1.type = "Number";
455455
item2.type = "Number";
456456

@@ -499,8 +499,8 @@ public void testEqualsWithMetadata() throws IOException {
499499
YamlItemDTO item1 = new YamlItemDTO();
500500
YamlItemDTO item2 = new YamlItemDTO();
501501

502-
item1.name = "item-name";
503-
item2.name = "item-name";
502+
item1.name = "item_name";
503+
item2.name = "item_name";
504504
item1.type = "Number";
505505
item2.type = "Number";
506506

0 commit comments

Comments
 (0)