Search in sources :

Example 1 with ChannelDescriptionChangedEvent

use of org.openhab.core.thing.events.ChannelDescriptionChangedEvent in project openhab-core by openhab.

the class SitemapSubscriptionService method receive.

@Override
public void receive(Event event) {
    if (event instanceof ItemStatePredictedEvent) {
        ItemStatePredictedEvent prediction = (ItemStatePredictedEvent) event;
        Item item = itemUIRegistry.get(prediction.getItemName());
        if (item instanceof GroupItem) {
            // members and predictions aren't really possible in that case (or at least would be highly complex).
            return;
        }
        for (PageChangeListener pageChangeListener : pageChangeListeners.values()) {
            if (prediction.isConfirmation()) {
                pageChangeListener.keepCurrentState(item);
            } else {
                pageChangeListener.changeStateTo(item, prediction.getPredictedState());
            }
        }
    } else if (event instanceof ChannelDescriptionChangedEvent) {
        ChannelDescriptionChangedEvent channelDescriptionChangedEvent = (ChannelDescriptionChangedEvent) event;
        channelDescriptionChangedEvent.getLinkedItemNames().forEach(itemName -> {
            for (PageChangeListener pageChangeListener : pageChangeListeners.values()) {
                pageChangeListener.descriptionChanged(itemName);
            }
        });
    }
}
Also used : PageChangeListener(org.openhab.core.io.rest.sitemap.internal.PageChangeListener) LinkableWidget(org.openhab.core.model.sitemap.sitemap.LinkableWidget) BasicEList(org.eclipse.emf.common.util.BasicEList) EventType(org.openhab.core.model.core.EventType) EventSubscriber(org.openhab.core.events.EventSubscriber) ItemUIRegistry(org.openhab.core.ui.items.ItemUIRegistry) LoggerFactory(org.slf4j.LoggerFactory) PageChangeListener(org.openhab.core.io.rest.sitemap.internal.PageChangeListener) ArrayList(java.util.ArrayList) ItemStatePredictedEvent(org.openhab.core.items.events.ItemStatePredictedEvent) Component(org.osgi.service.component.annotations.Component) Nullable(org.eclipse.jdt.annotation.Nullable) Duration(java.time.Duration) Map(java.util.Map) ModelRepositoryChangeListener(org.openhab.core.model.core.ModelRepositoryChangeListener) EventFilter(org.openhab.core.events.EventFilter) Activate(org.osgi.service.component.annotations.Activate) NonNullByDefault(org.eclipse.jdt.annotation.NonNullByDefault) GroupItem(org.openhab.core.items.GroupItem) Logger(org.slf4j.Logger) ChannelDescriptionChangedEvent(org.openhab.core.thing.events.ChannelDescriptionChangedEvent) Sitemap(org.openhab.core.model.sitemap.sitemap.Sitemap) Widget(org.openhab.core.model.sitemap.sitemap.Widget) Deactivate(org.osgi.service.component.annotations.Deactivate) Event(org.openhab.core.events.Event) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) UUID(java.util.UUID) ReferencePolicy(org.osgi.service.component.annotations.ReferencePolicy) Instant(java.time.Instant) EList(org.eclipse.emf.common.util.EList) Item(org.openhab.core.items.Item) Objects(java.util.Objects) ReferenceCardinality(org.osgi.service.component.annotations.ReferenceCardinality) List(java.util.List) SitemapProvider(org.openhab.core.model.sitemap.SitemapProvider) Entry(java.util.Map.Entry) Modified(org.osgi.service.component.annotations.Modified) SitemapEvent(org.openhab.core.io.rest.sitemap.internal.SitemapEvent) Reference(org.osgi.service.component.annotations.Reference) GroupItem(org.openhab.core.items.GroupItem) Item(org.openhab.core.items.Item) GroupItem(org.openhab.core.items.GroupItem) ItemStatePredictedEvent(org.openhab.core.items.events.ItemStatePredictedEvent) ChannelDescriptionChangedEvent(org.openhab.core.thing.events.ChannelDescriptionChangedEvent)

Example 2 with ChannelDescriptionChangedEvent

use of org.openhab.core.thing.events.ChannelDescriptionChangedEvent in project openhab-core by openhab.

the class BaseDynamicStateDescriptionProviderTest method setStateOptionsPublishesEvent.

@Test
public void setStateOptionsPublishesEvent() {
    subject.setStateOptions(CHANNEL_UID, List.of(new StateOption("offline", "Offline")));
    ArgumentCaptor<Event> capture = ArgumentCaptor.forClass(Event.class);
    verify(eventPublisherMock, times(1)).post(capture.capture());
    Event event = capture.getValue();
    assertTrue(event instanceof ChannelDescriptionChangedEvent);
    ChannelDescriptionChangedEvent cdce = (ChannelDescriptionChangedEvent) event;
    assertEquals(CommonChannelDescriptionField.STATE_OPTIONS, cdce.getField());
    // check the event is not published again
    subject.setStateOptions(CHANNEL_UID, List.of(new StateOption("offline", "Offline")));
    verify(eventPublisherMock, times(1)).post(capture.capture());
}
Also used : ChannelDescriptionChangedEvent(org.openhab.core.thing.events.ChannelDescriptionChangedEvent) Event(org.openhab.core.events.Event) StateOption(org.openhab.core.types.StateOption) ChannelDescriptionChangedEvent(org.openhab.core.thing.events.ChannelDescriptionChangedEvent) Test(org.junit.jupiter.api.Test)

Example 3 with ChannelDescriptionChangedEvent

use of org.openhab.core.thing.events.ChannelDescriptionChangedEvent in project openhab-core by openhab.

the class BaseDynamicCommandDescriptionProviderTest method setCommandOptionsPublishesEvent.

@Test
public void setCommandOptionsPublishesEvent() {
    subject.setCommandOptions(CHANNEL_UID, List.of(new CommandOption("reboot", "Reboot")));
    ArgumentCaptor<Event> capture = ArgumentCaptor.forClass(Event.class);
    verify(eventPublisherMock, times(1)).post(capture.capture());
    Event event = capture.getValue();
    assertTrue(event instanceof ChannelDescriptionChangedEvent);
    ChannelDescriptionChangedEvent cdce = (ChannelDescriptionChangedEvent) event;
    assertEquals(CommonChannelDescriptionField.COMMAND_OPTIONS, cdce.getField());
    // check the event is not published again
    subject.setCommandOptions(CHANNEL_UID, List.of(new CommandOption("reboot", "Reboot")));
    verify(eventPublisherMock, times(1)).post(capture.capture());
}
Also used : CommandOption(org.openhab.core.types.CommandOption) ChannelDescriptionChangedEvent(org.openhab.core.thing.events.ChannelDescriptionChangedEvent) Event(org.openhab.core.events.Event) ChannelDescriptionChangedEvent(org.openhab.core.thing.events.ChannelDescriptionChangedEvent) Test(org.junit.jupiter.api.Test)

Example 4 with ChannelDescriptionChangedEvent

use of org.openhab.core.thing.events.ChannelDescriptionChangedEvent in project openhab-core by openhab.

the class BaseDynamicStateDescriptionProviderTest method setStatePatternPublishesEvent.

@Test
public void setStatePatternPublishesEvent() {
    subject.setStatePattern(CHANNEL_UID, "%s");
    ArgumentCaptor<Event> capture = ArgumentCaptor.forClass(Event.class);
    verify(eventPublisherMock, times(1)).post(capture.capture());
    Event event = capture.getValue();
    assertTrue(event instanceof ChannelDescriptionChangedEvent);
    ChannelDescriptionChangedEvent cdce = (ChannelDescriptionChangedEvent) event;
    assertEquals(CommonChannelDescriptionField.PATTERN, cdce.getField());
    // check the event is not published again
    subject.setStatePattern(CHANNEL_UID, "%s");
    verify(eventPublisherMock, times(1)).post(capture.capture());
}
Also used : ChannelDescriptionChangedEvent(org.openhab.core.thing.events.ChannelDescriptionChangedEvent) Event(org.openhab.core.events.Event) ChannelDescriptionChangedEvent(org.openhab.core.thing.events.ChannelDescriptionChangedEvent) Test(org.junit.jupiter.api.Test)

Aggregations

Event (org.openhab.core.events.Event)4 ChannelDescriptionChangedEvent (org.openhab.core.thing.events.ChannelDescriptionChangedEvent)4 Test (org.junit.jupiter.api.Test)3 Duration (java.time.Duration)1 Instant (java.time.Instant)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Map (java.util.Map)1 Entry (java.util.Map.Entry)1 Objects (java.util.Objects)1 Set (java.util.Set)1 UUID (java.util.UUID)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 BasicEList (org.eclipse.emf.common.util.BasicEList)1 EList (org.eclipse.emf.common.util.EList)1 NonNullByDefault (org.eclipse.jdt.annotation.NonNullByDefault)1 Nullable (org.eclipse.jdt.annotation.Nullable)1 EventFilter (org.openhab.core.events.EventFilter)1 EventSubscriber (org.openhab.core.events.EventSubscriber)1 PageChangeListener (org.openhab.core.io.rest.sitemap.internal.PageChangeListener)1