Class MessageEvent
- java.lang.Object
-
- com.launchdarkly.eventsource.MessageEvent
-
public class MessageEvent extends java.lang.ObjectEvent information that is passed toEventHandler.onMessage(String, MessageEvent).
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringDEFAULT_EVENT_NAMEThe default value ofgetEventName()for all SSE messages that did not have aneventfield.
-
Constructor Summary
Constructors Constructor Description MessageEvent(java.lang.String data)Simple constructor with event data only, using the default event name.MessageEvent(java.lang.String eventName, java.io.Reader dataReader, java.lang.String lastEventId, java.net.URI origin)Constructs a new instance with lazy-loading behavior.MessageEvent(java.lang.String eventName, java.lang.String data)Constructs a new instance.MessageEvent(java.lang.String eventName, java.lang.String data, java.lang.String lastEventId, java.net.URI origin)Constructs a new instance.MessageEvent(java.lang.String data, java.lang.String lastEventId, java.net.URI origin)Constructs a new instance with the default event name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(java.lang.Object o)java.lang.StringgetData()Returns the event data as a string.java.io.ReadergetDataReader()Returns a single-useReaderfor consuming the event data.java.lang.StringgetEventName()Returns the event name.java.lang.StringgetLastEventId()Returns the event ID, if any.java.net.URIgetOrigin()Returns the endpoint of the stream that generated the event.inthashCode()booleanisStreamingData()Returnstrueif this event was dispatched with streaming data behavior rather than pre-read data.java.lang.StringtoString()
-
-
-
Field Detail
-
DEFAULT_EVENT_NAME
public static final java.lang.String DEFAULT_EVENT_NAME
The default value ofgetEventName()for all SSE messages that did not have aneventfield. This constant is defined in the SSE specification.- Since:
- 2.6.0
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
MessageEvent
public MessageEvent(java.lang.String data)
Simple constructor with event data only, using the default event name.This constructor assumes that the event data has been fully read into memory as a String.
- Parameters:
data- the event data; if null, will be changed to an empty string
-
MessageEvent
public MessageEvent(java.lang.String data, java.lang.String lastEventId, java.net.URI origin)Constructs a new instance with the default event name.This constructor assumes that the event data has been fully read into memory as a String.
- Parameters:
data- the event data; if null, will be changed to an empty stringlastEventId- the event ID, or null if noneorigin- the stream endpoint
-
MessageEvent
public MessageEvent(java.lang.String eventName, java.lang.String data, java.lang.String lastEventId, java.net.URI origin)Constructs a new instance.This constructor assumes that the event data has been fully read into memory as a String.
- Parameters:
eventName- the event name; if null,DEFAULT_EVENT_NAMEis useddata- the event data; if null, will be changed to an empty stringlastEventId- the event ID, or null if noneorigin- the stream endpoint- Since:
- 2.6.0
-
MessageEvent
public MessageEvent(java.lang.String eventName, java.io.Reader dataReader, java.lang.String lastEventId, java.net.URI origin)Constructs a new instance with lazy-loading behavior.This constructor takes a
Readerinstead of a String for the event data. This is an optimization that sometimes allows events to be processed without large buffers. The caller must be careful about using this model because the behavior of the reader is not idempotent; seegetDataReader().- Parameters:
eventName- an object that will provide the event name if requesteddataReader- aReaderfor consuming the event datalastEventId- an object that will provide the last event ID if requestedorigin- the stream endpoint- Since:
- 2.6.0
- See Also:
getDataReader()
-
MessageEvent
public MessageEvent(java.lang.String eventName, java.lang.String data)Constructs a new instance.- Parameters:
eventName- the event namedata- the event data, if any
-
-
Method Detail
-
getEventName
public java.lang.String getEventName()
Returns the event name. This is the value of theeventfield in the SSE message, or, if there was none, the constantDEFAULT_EVENT_NAME.- Returns:
- the event name
- Since:
- 2.6.0
-
getData
public java.lang.String getData()
Returns the event data as a string.The format of event data is described in the SSE specification. Every event has at least one line with a
dataordata:prefix. After removing the prefix, multiple lines are concatenated with a separator of'\n'.If you have set the
EventSource.Builder.streamEventData(boolean)option totrueto enable streaming delivery of event data to your handler without buffering the entire event, you should usegetDataReader()instead ofgetData(). CallinggetData()in this mode would defeat the purpose by causing all of the data to be read at once. However, if you do this,getData()memoizes the result so that calling it repeatedly does not try to read the stream again.The method will never return
null; every event has data, even if the data is empty (zero length).- Returns:
- the data string
-
getDataReader
public java.io.Reader getDataReader()
Returns a single-useReaderfor consuming the event data.This is meant to be used if you have set the option
EventSource.Builder.streamEventData(boolean)totrue, indicating that you want to consume the data with a streaming approach, rather than buffering the full event in memory. In this mode,getDataReader()returns aReaderthat consumes the event data while it is being received. The format is the same as described ingetData()(for instance, if the data was sent in multiple lines, the lines are separated by'\n'). Because thisReaderis connected directly to the HTTP response stream, it is only valid within the scope of your handler'sEventHandler.onMessage(String, MessageEvent)method and will be closed as soon as your handler returns.See
EventSource.Builder.streamEventData(boolean)for more details and important limitations of the streaming mode.If you have not set that option, then the returned
Readersimply provides the same already-buffered data that would be available fromgetData().This
Readercan be used only once; if you have already consumed the data, further calls togetDataReader()will return the same instance that will not read any more.The method will never return
null; every event has data, even if the data is empty (zero length).- Returns:
- a reader for the event data
- Since:
- 2.6.0
-
getLastEventId
public java.lang.String getLastEventId()
Returns the event ID, if any.- Returns:
- the event ID or null
-
getOrigin
public java.net.URI getOrigin()
Returns the endpoint of the stream that generated the event.- Returns:
- the stream URI
-
isStreamingData
public boolean isStreamingData()
Returnstrueif this event was dispatched with streaming data behavior rather than pre-read data.This is only the case if you have set the
EventSource.Builder.streamEventData(boolean)option totrue.- Returns:
- true if the event has streaming data
- Since:
- 2.6.0
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-