Hi Sergey,
please see inline.
On 27/01/2017 16:03, Sergey Beryozkin wrote:
> I've only glanced so far over the proposed changes, it all looks very
> neat, but we will def provide more feedback later on.
great, looking forward for your feedback :)
>
> As far as Flow is concerned, is the idea to use it only as part of SSE
> ? What will happen to it once the future JAX-RS API will be Java
> 9-only based ?
SSE is a stream of events to which you can subscribe, so it's very
natural to use flow APIs for that part.
We'd like to use similar approach when dealing with non-blocking I/O. As
mentioned in "SSE kickoff email", the final presence in the spec will be
reduced and limited to only what is required.
When JAX-RS moves to Java SE 9, we'd like to keep the APIs, but make
them extend Java SE types, so if we'd have
public interface SseBroadcasterextends AutoCloseable {
//...
void subscribe(SseSubscriber<?super OutboundSseEvent> subscriber);
}
in the 2.1 API, 3.0 could modify this to
public interface SseBroadcasterextends AutoCloseable, Flow.Publisher<OutboundSseEvet> {
//...
@Override
void subscribe(SseSubscriber<?super OutboundSseEvent> subscriber);
}
etc. Very subtle changes, but they should allow simple integration with
Flow-based frameworks.
Best regards,
Pavel
>
> Cheers, Sergey
>
> On 27/01/17 14:54, Sergey Beryozkin wrote:
>> Hi, I've been planning to move to m03 next week and see how the
>> latest reactive API fits,
>>
>> As far as SSE is concerned I've asked my colleague Andriy who did
>> implement the initial SSE proposal to evaluate the latest one when he
>> gets a chance and I will also have a look but unlikely next week,
>>
>> I recall Andriy raised an issue on this list, something to do with
>> initializing SSE Broadcasters, Marek said at a time he would look at it.
>>
>> Thanks, Sergey
>> On 27/01/17 07:55, Pavel Bucek wrote:
>>> No commends/feedback?
>>>
>>> I understand that the change is not a small one - feel free to ask
>>> if you need to have something explained in more detail.
>>>
>>> Please let me know if someone is planning to look into this topic.
>>> Ideally by the end of this week (start of the day Monday, CET). If
>>> there are no comments, we might need to move it forward even without
>>> any other input, but I don't really want to do that..
>>>
>>> Thanks and regards,
>>> Pavel
>>>
>>> On 24/01/2017 20:54, Pavel Bucek wrote:
>>>>
>>>> Dear experts,
>>>>
>>>> please allow me to bring up another addition planned to be included
>>>> in JAX-RS 2.1: Support for Server Sent Events.
>>>>
>>>> The API was introduced a while back [1], but we did incorporate
>>>> some changes, mostly alignments with Java SE 8 and another one,
>>>> slightly more controversial - alignment with Java SE 9 Flow API.
>>>>
>>>> Why we should use Flow API? We want to make the transition to Java
>>>> 9 as smooth as possible. Please note that today, the JAX-RS sources
>>>> do contain Flow class (1:1 copy from Java SE 9), but that is NOT a
>>>> final state. We want to work with it as much as possible, but we
>>>> will minimize and clean up the code before final release. How?
>>>> Consider following example:
>>>>
>>>> public interface SseBroadcasterextends AutoCloseable, Flow.Publisher<OutboundSseEvent> {
>>>> //...
>>>> }
>>>>
>>>> could be modified to
>>>>
>>>> public interface SseBroadcasterextends AutoCloseable {
>>>> //...
>>>> void subscribe(SseSubscriber<?super OutboundSseEvent> subscriber);
>>>> }
>>>>
>>>> I hope you will like the attempt to be "forward-compatible", but I
>>>> assume that this proposal alone will bring some opinions - please
>>>> share them! Last note: currently, the Flow API is used only in SSE.
>>>> We plan to use it heavily in Non-blocking I/O. If you think there
>>>> are other areas where we can take advantage of Subscriber/Publisher
>>>> methods, please let us know.
>>>>
>>>> Let me get back to the SSE API.
>>>>
>>>> Very brief description of the API is on the wiki [2], I will expand
>>>> that once we'll have some feedback.
>>>>
>>>> The proposal contains support for server and client side. All
>>>> classes are in the package javax.ws.rs.sse [3]. There is no added
>>>> class from the last proposal, but there are some changes:
>>>>
>>>> - [server] SseBroadcaster extends Publisher<OutboundSseEvent>
>>>> - [server] replaced SseBroadcaster.Listener by
>>>> SseBroadcaster#onException and SseBroadcaster#onClose
>>>> - [server] SseEventOutput extends Subscriber<OutboundSseEvent>
>>>> - [client] SseEventSource extends Publisher<InboundSseEvent>
>>>>
>>>> Corresponding commit [4] looks like a bigger one, but most of it is
>>>> renaming based on introduced interfaces, the core of the change is
>>>> relatively small.
>>>>
>>>> I look forward to your comments and suggestions.
>>>>
>>>> I don't want to prolong this already too long email - please let me
>>>> know if there are some areas which I should describe in more detail.
>>>>
>>>> Thanks and regards,
>>>> Pavel & Santiago
>>>>
>>>> [1]
>>>> https://java.net/projects/jax-rs-spec/lists/jsr370-experts/archive/2015-10/message/28
>>>> [2] https://java.net/projects/jax-rs-spec/pages/ServerSentEvents
>>>> [3]
>>>> https://github.com/jax-rs/api/tree/master/jaxrs-api/src/main/java/javax/ws/rs/sse
>>>> [4]
>>>> https://github.com/jax-rs/api/commit/b2b8f3f4f20696558a3ff52b0de17fb04c343d02
>>>>
>>>
>>
>