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
parent
7b6e4c0718
commit
46a93b022f
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue