Skip to content

Commit

Permalink
Listening of semantic tag reigstry changes added to SemanticsMetadata…
Browse files Browse the repository at this point in the history
…Provider

Signed-off-by: Laurent Garnier <[email protected]>
  • Loading branch information
lolodomo committed Dec 9, 2023
1 parent 0fe0a9d commit dff2b22
Showing 1 changed file with 33 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import org.eclipse.jdt.annotation.NonNullByDefault;
import org.openhab.core.common.registry.AbstractProvider;
import org.openhab.core.common.registry.RegistryChangeListener;
import org.openhab.core.items.GroupItem;
import org.openhab.core.items.Item;
import org.openhab.core.items.ItemRegistry;
Expand All @@ -33,6 +34,7 @@
import org.openhab.core.semantics.Location;
import org.openhab.core.semantics.Point;
import org.openhab.core.semantics.Property;
import org.openhab.core.semantics.SemanticTag;
import org.openhab.core.semantics.SemanticTagRegistry;
import org.openhab.core.semantics.SemanticTags;
import org.openhab.core.semantics.Tag;
Expand Down Expand Up @@ -72,11 +74,16 @@ public class SemanticsMetadataProvider extends AbstractProvider<Metadata>
private final Map<String, Metadata> semantics = new TreeMap<>(String::compareTo);

private final ItemRegistry itemRegistry;
private final SemanticTagRegistry semanticTagRegistry;

private SemanticTagRegistryChangeListener listener;

@Activate
public SemanticsMetadataProvider(final @Reference ItemRegistry itemRegistry,
final @Reference SemanticTagRegistry semanticTagRegistry) {
this.itemRegistry = itemRegistry;
this.semanticTagRegistry = semanticTagRegistry;
this.listener = new SemanticTagRegistryChangeListener(this);
}

@Activate
Expand All @@ -86,10 +93,12 @@ protected void activate() {
processItem(item);
}
itemRegistry.addRegistryChangeListener(this);
semanticTagRegistry.addRegistryChangeListener(listener);
}

@Deactivate
protected void deactivate() {
semanticTagRegistry.removeRegistryChangeListener(listener);
itemRegistry.removeRegistryChangeListener(this);
semantics.clear();
}
Expand Down Expand Up @@ -280,4 +289,28 @@ public void removed(Item item) {
public void updated(Item oldItem, Item item) {
processItem(item);
}

class SemanticTagRegistryChangeListener implements RegistryChangeListener<SemanticTag> {

private SemanticsMetadataProvider provider;

public SemanticTagRegistryChangeListener(SemanticsMetadataProvider provider) {
this.provider = provider;
}

@Override
public void added(SemanticTag element) {
provider.allItemsChanged(List.of());
}

@Override
public void removed(SemanticTag element) {
provider.allItemsChanged(List.of());
}

@Override
public void updated(SemanticTag oldElement, SemanticTag element) {
provider.allItemsChanged(List.of());
}
}
}

0 comments on commit dff2b22

Please sign in to comment.