Search in sources :

Example 1 with SseEventSourceFactory

use of org.osgi.service.jaxrs.client.SseEventSourceFactory in project aries-jax-rs-whiteboard by apache.

the class JaxrsTest method testSSEApplication.

@Test
public void testSSEApplication() throws InterruptedException, MalformedURLException, TimeoutException {
    AtomicInteger atomicInteger = new AtomicInteger();
    registerApplication(new TestSSEApplication(), JAX_RS_APPLICATION_BASE, "/sse");
    registerAddon(new SSEResource(), JAX_RS_APPLICATION_SELECT, "(" + JAX_RS_APPLICATION_BASE + "=/sse)");
    registerExtension(ContainerResponseFilter.class, (req, res) -> atomicInteger.incrementAndGet(), "Filter", JAX_RS_APPLICATION_SELECT, "(" + JAX_RS_APPLICATION_BASE + "=/sse)");
    SseEventSourceFactory sseFactory = createSseFactory();
    SseEventSource source1 = sseFactory.newSource(createDefaultTarget().path("/sse").path("/subscribe"));
    SseEventSource source2 = sseFactory.newSource(createDefaultTarget().path("/sse").path("/subscribe"));
    ArrayList<String> source1Events = new ArrayList<>();
    ArrayList<String> source2Events = new ArrayList<>();
    Phaser phaser = new Phaser(2);
    source1.register(event -> {
        source1Events.add(event.readData(String.class));
        phaser.arrive();
    });
    source2.register(event -> {
        source2Events.add(event.readData(String.class));
        phaser.arrive();
    });
    source1.open();
    source2.open();
    phaser.awaitAdvanceInterruptibly(0, 10, TimeUnit.SECONDS);
    // The filter IS invoked on the subscribe method
    assertEquals(2, atomicInteger.get());
    WebTarget broadcast = createDefaultTarget().path("/sse").path("/broadcast");
    broadcast.request().post(Entity.entity("message", MediaType.TEXT_PLAIN_TYPE));
    phaser.awaitAdvanceInterruptibly(1, 10, TimeUnit.SECONDS);
    assertEquals(Arrays.asList("welcome", "message"), source1Events);
    assertEquals(Arrays.asList("welcome", "message"), source2Events);
    source2.close();
    phaser.arrive();
    atomicInteger.set(0);
    broadcast.request().post(Entity.entity("another message", MediaType.TEXT_PLAIN_TYPE));
    phaser.awaitAdvanceInterruptibly(2, 10, TimeUnit.SECONDS);
    assertEquals(Arrays.asList("welcome", "message", "another message"), source1Events);
    assertEquals(Arrays.asList("welcome", "message"), source2Events);
    source1.close();
    // The filter IS invoked when broadcasting events
    assertEquals(1, atomicInteger.get());
}
Also used : SseEventSource(javax.ws.rs.sse.SseEventSource) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) TestSSEApplication(test.types.TestSSEApplication) SseEventSourceFactory(org.osgi.service.jaxrs.client.SseEventSourceFactory) ArrayList(java.util.ArrayList) WebTarget(javax.ws.rs.client.WebTarget) SSEResource(test.types.SSEResource) Test(org.junit.Test)

Example 2 with SseEventSourceFactory

use of org.osgi.service.jaxrs.client.SseEventSourceFactory in project openhab-addons by openhab.

the class WWNThingHandlerOSGiTest method setUp.

@BeforeEach
public void setUp() throws ItemNotFoundException {
    registerService(volatileStorageService);
    managedThingProvider = getService(ThingProvider.class, ManagedThingProvider.class);
    assertThat("Could not get ManagedThingProvider", managedThingProvider, is(notNullValue()));
    thingTypeRegistry = getService(ThingTypeRegistry.class);
    assertThat("Could not get ThingTypeRegistry", thingTypeRegistry, is(notNullValue()));
    channelTypeRegistry = getService(ChannelTypeRegistry.class);
    assertThat("Could not get ChannelTypeRegistry", channelTypeRegistry, is(notNullValue()));
    channelGroupTypeRegistry = getService(ChannelGroupTypeRegistry.class);
    assertThat("Could not get ChannelGroupTypeRegistry", channelGroupTypeRegistry, is(notNullValue()));
    eventPublisher = getService(EventPublisher.class);
    assertThat("Could not get EventPublisher", eventPublisher, is(notNullValue()));
    itemFactory = getService(ItemFactory.class);
    assertThat("Could not get ItemFactory", itemFactory, is(notNullValue()));
    itemRegistry = getService(ItemRegistry.class);
    assertThat("Could not get ItemRegistry", itemRegistry, is(notNullValue()));
    managedItemChannelLinkProvider = getService(ManagedItemChannelLinkProvider.class);
    assertThat("Could not get ManagedItemChannelLinkProvider", managedItemChannelLinkProvider, is(notNullValue()));
    clientBuilder = getService(ClientBuilder.class);
    assertThat("Could not get ClientBuilder", clientBuilder, is(notNullValue()));
    eventSourceFactory = getService(SseEventSourceFactory.class);
    assertThat("Could not get SseEventSourceFactory", eventSourceFactory, is(notNullValue()));
    ComponentContext componentContext = mock(ComponentContext.class);
    when(componentContext.getBundleContext()).thenReturn(bundleContext);
    nestTestHandlerFactory = new WWNTestHandlerFactory(clientBuilder, eventSourceFactory);
    nestTestHandlerFactory.activate(componentContext, Map.of(WWNTestHandlerFactory.REDIRECT_URL_CONFIG_PROPERTY, REDIRECT_URL));
    registerService(nestTestHandlerFactory);
    nestTestHandlerFactory = getService(ThingHandlerFactory.class, WWNTestHandlerFactory.class);
    assertThat("Could not get NestTestHandlerFactory", nestTestHandlerFactory, is(notNullValue()));
    bridge = buildBridge();
    thing = buildThing(bridge);
    bridgeHandler = addThing(bridge, WWNTestAccountHandler.class);
    thingHandler = addThing(thing, thingClass);
    createAndLinkItems();
    assertThatAllItemStatesAreNull();
}
Also used : ManagedItemChannelLinkProvider(org.openhab.core.thing.link.ManagedItemChannelLinkProvider) EventPublisher(org.openhab.core.events.EventPublisher) ComponentContext(org.osgi.service.component.ComponentContext) WWNTestAccountHandler(org.openhab.binding.nest.internal.wwn.test.WWNTestAccountHandler) ItemRegistry(org.openhab.core.items.ItemRegistry) ThingHandlerFactory(org.openhab.core.thing.binding.ThingHandlerFactory) WWNTestHandlerFactory(org.openhab.binding.nest.internal.wwn.test.WWNTestHandlerFactory) ThingProvider(org.openhab.core.thing.ThingProvider) ManagedThingProvider(org.openhab.core.thing.ManagedThingProvider) ChannelGroupTypeRegistry(org.openhab.core.thing.type.ChannelGroupTypeRegistry) ChannelTypeRegistry(org.openhab.core.thing.type.ChannelTypeRegistry) ItemFactory(org.openhab.core.items.ItemFactory) SseEventSourceFactory(org.osgi.service.jaxrs.client.SseEventSourceFactory) ManagedThingProvider(org.openhab.core.thing.ManagedThingProvider) ThingTypeRegistry(org.openhab.core.thing.type.ThingTypeRegistry) ClientBuilder(javax.ws.rs.client.ClientBuilder) BeforeEach(org.junit.jupiter.api.BeforeEach)

Aggregations

SseEventSourceFactory (org.osgi.service.jaxrs.client.SseEventSourceFactory)2 ArrayList (java.util.ArrayList)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1 ClientBuilder (javax.ws.rs.client.ClientBuilder)1 WebTarget (javax.ws.rs.client.WebTarget)1 SseEventSource (javax.ws.rs.sse.SseEventSource)1 Test (org.junit.Test)1 BeforeEach (org.junit.jupiter.api.BeforeEach)1 WWNTestAccountHandler (org.openhab.binding.nest.internal.wwn.test.WWNTestAccountHandler)1 WWNTestHandlerFactory (org.openhab.binding.nest.internal.wwn.test.WWNTestHandlerFactory)1 EventPublisher (org.openhab.core.events.EventPublisher)1 ItemFactory (org.openhab.core.items.ItemFactory)1 ItemRegistry (org.openhab.core.items.ItemRegistry)1 ManagedThingProvider (org.openhab.core.thing.ManagedThingProvider)1 ThingProvider (org.openhab.core.thing.ThingProvider)1 ThingHandlerFactory (org.openhab.core.thing.binding.ThingHandlerFactory)1 ManagedItemChannelLinkProvider (org.openhab.core.thing.link.ManagedItemChannelLinkProvider)1 ChannelGroupTypeRegistry (org.openhab.core.thing.type.ChannelGroupTypeRegistry)1 ChannelTypeRegistry (org.openhab.core.thing.type.ChannelTypeRegistry)1 ThingTypeRegistry (org.openhab.core.thing.type.ThingTypeRegistry)1