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());
}
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();
}
Aggregations