Fix timeseries restore init late initialization of listeners on GenericItem (#4679)

* Fix proposal for #4656 : listeners are set too late on GenericItems because restoring persisted value from persisted layer delay the loop

Signed-off-by: Laurent ARNAL <laurent@clae.net>
pull/4702/head
lo92fr 2025-04-04 22:07:41 +02:00 committed by GitHub
parent 7b6e4c0718
commit 46a93b022f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 18 additions and 1 deletions

View File

@ -296,12 +296,29 @@ public class PersistenceManagerImpl implements ItemRegistryChangeListener, State
@Override
public void allItemsChanged(Collection<String> oldItemNames) {
itemRegistry.getItems().forEach(this::added);
addPersistenceListeners(oldItemNames);
addToPersistenceServiceContainer(oldItemNames);
}
public void addPersistenceListeners(Collection<String> oldItemNames) {
itemRegistry.getItems().forEach(this::addItemToPersistenceListeners);
}
public void addToPersistenceServiceContainer(Collection<String> oldItemNames) {
itemRegistry.getItems().forEach(this::addItemToPersistenceServiceContainer);
}
@Override
public void added(Item item) {
addItemToPersistenceListeners(item);
addItemToPersistenceServiceContainer(item);
}
public void addItemToPersistenceServiceContainer(Item item) {
persistenceServiceContainers.values().forEach(container -> container.addItem(item));
}
public void addItemToPersistenceListeners(Item item) {
if (item instanceof GenericItem genericItem) {
genericItem.addStateChangeListener(this);
genericItem.addTimeSeriesListener(this);