Skip to content

Commit 3706443

Browse files
authored
[YAML] Enhance removedModel method in all providers (#5341)
The enhancement consists in just getting the UID of the elements to be removed rather than building a full object. Signed-off-by: Laurent Garnier <lg.hc@free.fr>
1 parent 5391ba2 commit 3706443

3 files changed

Lines changed: 17 additions & 15 deletions

File tree

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,8 @@ public void updatedModel(String modelName, Collection<YamlItemDTO> elements) {
161161

162162
@Override
163163
public void removedModel(String modelName, Collection<YamlItemDTO> elements) {
164-
List<Item> removed = elements.stream().map(elt -> mapItem(elt)).filter(Objects::nonNull).toList();
165-
166164
Collection<Item> modelItems = itemsMap.getOrDefault(modelName, List.of());
167-
removed.forEach(item -> {
168-
String name = item.getName();
165+
elements.stream().map(elt -> elt.name).forEach(name -> {
169166
modelItems.stream().filter(i -> i.getName().equals(name)).findFirst().ifPresentOrElse(oldItem -> {
170167
modelItems.remove(oldItem);
171168
logger.debug("model {} removed item {}", modelName, name);

bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/semantics/YamlSemanticTagProvider.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,12 @@ public void updatedModel(String modelName, Collection<YamlSemanticTagDTO> elemen
9494

9595
@Override
9696
public void removedModel(String modelName, Collection<YamlSemanticTagDTO> elements) {
97-
List<SemanticTag> removed = elements.stream().map(this::mapSemanticTag)
98-
.sorted(Comparator.comparing(SemanticTag::getUID).reversed()).toList();
99-
removed.forEach(t -> {
100-
tags.stream().filter(tag -> tag.getUID().equals(t.getUID())).findFirst().ifPresentOrElse(oldTag -> {
97+
elements.stream().map(elt -> elt.uid).sorted(Comparator.reverseOrder()).forEach(uid -> {
98+
tags.stream().filter(tag -> tag.getUID().equals(uid)).findFirst().ifPresentOrElse(oldTag -> {
10199
tags.remove(oldTag);
102-
logger.debug("model {} removed tag {}", modelName, t.getUID());
100+
logger.debug("model {} removed tag {}", modelName, uid);
103101
notifyListenersAboutRemovedElement(oldTag);
104-
}, () -> logger.debug("model {} tag {} not found", modelName, t.getUID()));
102+
}, () -> logger.debug("model {} tag {} not found", modelName, uid));
105103
});
106104
}
107105

bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/things/YamlThingProvider.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,16 +222,15 @@ public void updatedModel(String modelName, Collection<YamlThingDTO> elements) {
222222
@Override
223223
public void removedModel(String modelName, Collection<YamlThingDTO> elements) {
224224
boolean isolated = isIsolatedModel(modelName);
225-
List<Thing> removed = elements.stream().map(t -> mapThing(t, isolated)).filter(Objects::nonNull).toList();
226225
Collection<Thing> modelThings = thingsMap.getOrDefault(modelName, List.of());
227-
removed.forEach(t -> {
228-
modelThings.stream().filter(th -> th.getUID().equals(t.getUID())).findFirst().ifPresentOrElse(oldThing -> {
226+
elements.stream().map(this::buildThingUID).filter(Objects::nonNull).forEach(uid -> {
227+
modelThings.stream().filter(th -> th.getUID().equals(uid)).findFirst().ifPresentOrElse(oldThing -> {
229228
modelThings.remove(oldThing);
230-
logger.debug("model {} removed thing {}", modelName, t.getUID());
229+
logger.debug("model {} removed thing {}", modelName, uid);
231230
if (!isolated) {
232231
notifyListenersAboutRemovedElement(oldThing);
233232
}
234-
}, () -> logger.debug("model {} thing {} not found", modelName, t.getUID()));
233+
}, () -> logger.debug("model {} thing {} not found", modelName, uid));
235234
});
236235
if (modelThings.isEmpty()) {
237236
thingsMap.remove(modelName);
@@ -353,6 +352,14 @@ private boolean isThingHandlerFactoryReady(ThingHandlerFactory thingHandlerFacto
353352
return bundle == null ? null : bundle.getSymbolicName();
354353
}
355354

355+
private @Nullable ThingUID buildThingUID(YamlThingDTO thingDto) {
356+
try {
357+
return new ThingUID(thingDto.uid);
358+
} catch (IllegalArgumentException e) {
359+
return null;
360+
}
361+
}
362+
356363
private @Nullable Thing mapThing(YamlThingDTO thingDto, boolean isolatedModel) {
357364
try {
358365
ThingUID thingUID = new ThingUID(thingDto.uid);

0 commit comments

Comments
 (0)