/** * Put a new message to the stream. * * The message will be broadcast to all registered SSE clients. * * @param message message to be broadcast. */ @PUT @Consumes(MediaType.APPLICATION_JSON) public void putMessage(final Message message) { LOGGER.info("--> Message received."); final OutboundEvent event = new OutboundEvent.Builder() .id(String.valueOf(nextMessageId.getAndIncrement())) .mediaType(MediaType.APPLICATION_JSON_TYPE) .data(Message.class, message) .build(); broadcaster.broadcast(event); }
/** * Set event data and java type of event data. * * This is a convenience method that derives the event data type information from the runtime type of * the event data. The supplied event data may be represented as {@link javax.ws.rs.core.GenericEntity}. * <p> * Note that multiple invocations of this method result in previous even data being replaced with new one. * </p> * * @param data event data. Must not be {@code null}. * @return updated builder instance. * @throws NullPointerException in case the {@code data} parameter is {@code null}. * @since 2.3 */ public Builder data(Object data) { if (data == null) { throw new NullPointerException(LocalizationMessages.OUT_EVENT_DATA_NULL()); } return data(ReflectionHelper.genericTypeFor(data), data); }
@POST public void addMessage(final String message) throws IOException { final EventOutput localOutput = eventOutput; if (localOutput != null) { eventOutput.write(new OutboundEvent.Builder().name("custom-message").data(String.class, message).build()); } }
final OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); eventBuilder.data(result); final OutboundEvent event = eventBuilder.build(); eventOutput.write(event);
= new OutboundEvent.Builder(); eventBuilder.name("message-to-client"); eventBuilder.data(String.class, "Hello world " + i + "!"); final OutboundEvent event = eventBuilder.build();
private static final Map<Long, SseBroadcaster> ROOM_SSE_BROADCASTER = new ConcurrentHashMap<>(); @GET @Path("/updatestate/{roomId}/{userId}") @Produces(SseFeature.SERVER_SENT_EVENTS) public EventOutput updateState(@PathParam("roomId") Long roomId, @PathParam("userId") Long userId) { EventOutput eo = new EventOutput(); ROOM_SSE_BROADCASTER.get(roomId).add(eo); return eo; } public static void updateRoom(Long roomId) { ROOM_SSE_BROADCASTER.get(roomId).broadcast(buildEvent()); } public static void registerRoom(Long roomId) { ROOM_SSE_BROADCASTER.put(roomId, new SseBroadcaster()); } private static OutboundEvent buildEvent() { OutboundEvent.Builder builder = new OutboundEvent.Builder(); OutboundEvent event = builder.data(String.class, "update").build(); return event; }
/** * Set event data and java type of event data. * * This is a convenience method that derives the event data type information from the runtime type of * the event data. The supplied event data may be represented as {@link javax.ws.rs.core.GenericEntity}. * <p> * Note that multiple invocations of this method result in previous even data being replaced with new one. * </p> * * @param data event data. Must not be {@code null}. * @return updated builder instance. * @throws NullPointerException in case the {@code data} parameter is {@code null}. * @since 2.3 */ public Builder data(Object data) { if (data == null) { throw new NullPointerException(LocalizationMessages.OUT_EVENT_DATA_NULL()); } return data(ReflectionHelper.genericTypeFor(data), data); }
/** * Set event data and java type of event data. * * This is a convenience method that derives the event data type information from the runtime type of * the event data. The supplied event data may be represented as {@link javax.ws.rs.core.GenericEntity}. * <p> * Note that multiple invocations of this method result in previous even data being replaced with new one. * </p> * * @param data event data. Must not be {@code null}. * @return updated builder instance. * @throws NullPointerException in case the {@code data} parameter is {@code null}. * @since 2.3 */ public Builder data(Object data) { if (data == null) { throw new NullPointerException(LocalizationMessages.OUT_EVENT_DATA_NULL()); } return data(ReflectionHelper.genericTypeFor(data), data); }
/** * Creates a new {@link OutboundEvent} object containing an {@link EventBean} created for the given Eclipse * SmartHome {@link Event}. * * @param event the event * * @return a new OutboundEvent */ public static OutboundEvent buildEvent(Event event) { EventBean eventBean = new EventBean(); eventBean.topic = event.getTopic(); eventBean.type = event.getType(); eventBean.payload = event.getPayload(); OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); OutboundEvent outboundEvent = eventBuilder.name("message").mediaType(MediaType.APPLICATION_JSON_TYPE) .data(eventBean).build(); return outboundEvent; }
/** * Creates a new {@link OutboundEvent} object containing an {@link EventBean} created for the given Eclipse * SmartHome {@link Event}. * * @param event the event * * @return a new OutboundEvent */ public static OutboundEvent buildEvent(Event event) { EventBean eventBean = new EventBean(); eventBean.topic = event.getTopic(); eventBean.type = event.getType(); eventBean.payload = event.getPayload(); OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); OutboundEvent outboundEvent = eventBuilder.name("message").mediaType(MediaType.APPLICATION_JSON_TYPE) .data(eventBean).build(); return outboundEvent; }
/** * Set event data and java type of event data. * * This is a convenience method that derives the event data type information from the runtime type of * the event data. The supplied event data may be represented as {@link javax.ws.rs.core.GenericEntity}. * <p> * Note that multiple invocations of this method result in previous even data being replaced with new one. * </p> * * @param data event data. Must not be {@code null}. * @return updated builder instance. * @throws NullPointerException in case the {@code data} parameter is {@code null}. * @since 2.3 */ public Builder data(Object data) { if (data == null) { throw new NullPointerException(LocalizationMessages.OUT_EVENT_DATA_NULL()); } return data(ReflectionHelper.genericTypeFor(data), data); }
@Override public void onEvent(EventEntityV2 eventEntity) { OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); eventBuilder.reconnectDelay(100); eventBuilder.mediaType(MediaType.APPLICATION_JSON_TYPE); eventBuilder.name(EventEntityV2.class.getSimpleName()); eventBuilder.data(EventEntityV2.class, eventEntity); OutboundEvent event = eventBuilder.build(); AllEventsResourceServiceImplV2.this.broadcaster.broadcast(event); if (LOG.isDebugEnabled()) { LOG.debug(String.format("Event dispatched: {AgentId: %s, Type: %s, ApiVersion: %s, Representables: %s}", eventEntity.getAgentId(), eventEntity.getType(), eventEntity.getApiVersion(), eventEntity.getRootRepresentables())); } }
@Override public void update(Observable o, Object arg) { if (o instanceof StreamBroadcaster && arg != null) { EventEnvelope e = (EventEnvelope) arg; OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); OutboundEvent event = eventBuilder .mediaType(MediaType.APPLICATION_JSON_TYPE) .id(e.eventId.orElse(null)) .name(e.eventType) .data(e.eventData) .build(); BROADCASTER.broadcast(event); } } }
@Override public void onEvent(SitemapEvent event) { OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); OutboundEvent outboundEvent = eventBuilder.name("event").mediaType(MediaType.APPLICATION_JSON_TYPE).data(event) .build(); broadcaster.broadcast(outboundEvent); }
final OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); eventBuilder.data(String.class, "Welcome!"); final OutboundEvent event = eventBuilder.build(); eventOutput.write(event);
OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); //WARNING: IF I SET THE NAME OF THE EVENT IT DOES NOT WORK //eventBuilder.name("message"); eventBuilder.mediaType(MediaType.APPLICATION_JSON_TYPE); eventBuilder.data(EventData.class, data); OutboundEvent event = eventBuilder.build();
@Override public void onEvent(SitemapEvent event) { OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); OutboundEvent outboundEvent = eventBuilder.name("event").mediaType(MediaType.APPLICATION_JSON_TYPE).data(event) .build(); broadcaster.broadcast(outboundEvent); }
public void run() { try { if (latch != null) { // wait for all test EventSources to be registered latch.await(5, TimeUnit.SECONDS); } broadcaster.broadcast( new OutboundEvent.Builder().name("domain-progress").data(String.class, "starting domain " + id + " ...") .build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "50%").build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "60%").build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "70%").build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "99%").build()); broadcaster.broadcast(new OutboundEvent.Builder().name("domain-progress").data(String.class, "done").build()); broadcaster.closeAll(); } catch (InterruptedException e) { e.printStackTrace(); } } }
public void run() { try { seq.write(new OutboundEvent.Builder().name("domain-progress") .data(String.class, "starting domain " + id + " ...").build()); Thread.sleep(200); seq.write(new OutboundEvent.Builder().name("domain-progress").data(String.class, "50%").build()); Thread.sleep(200); seq.write(new OutboundEvent.Builder().name("domain-progress").data(String.class, "60%").build()); Thread.sleep(200); seq.write(new OutboundEvent.Builder().name("domain-progress").data(String.class, "70%").build()); Thread.sleep(200); seq.write(new OutboundEvent.Builder().name("domain-progress").data(String.class, "99%").build()); Thread.sleep(200); seq.write(new OutboundEvent.Builder().name("domain-progress").data(String.class, "done").build()); seq.close(); } catch (final InterruptedException | IOException e) { e.printStackTrace(); } } }.start();