@@ -114,32 +114,7 @@ public void testConsumeAllMultipleEvents() throws JsonProcessingException {
114114 final List <Event > receivedEvents = new ArrayList <>();
115115 final AtomicReference <Throwable > error = new AtomicReference <>();
116116
117- publisher .subscribe (new Flow .Subscriber <>() {
118- private Flow .Subscription subscription ;
119-
120- @ Override
121- public void onSubscribe (Flow .Subscription subscription ) {
122- this .subscription = subscription ;
123- subscription .request (1 );
124- }
125-
126- @ Override
127- public void onNext (EventQueueItem item ) {
128- receivedEvents .add (item .getEvent ());
129- subscription .request (1 );
130-
131- }
132-
133- @ Override
134- public void onError (Throwable throwable ) {
135- error .set (throwable );
136- }
137-
138- @ Override
139- public void onComplete () {
140- subscription .cancel ();
141- }
142- });
117+ publisher .subscribe (getSubscriber (receivedEvents , error ));
143118
144119 assertNull (error .get ());
145120 assertEquals (events .size (), receivedEvents .size ());
@@ -175,32 +150,7 @@ public void testConsumeUntilMessage() throws Exception {
175150 final List <Event > receivedEvents = new ArrayList <>();
176151 final AtomicReference <Throwable > error = new AtomicReference <>();
177152
178- publisher .subscribe (new Flow .Subscriber <>() {
179- private Flow .Subscription subscription ;
180-
181- @ Override
182- public void onSubscribe (Flow .Subscription subscription ) {
183- this .subscription = subscription ;
184- subscription .request (1 );
185- }
186-
187- @ Override
188- public void onNext (EventQueueItem item ) {
189- receivedEvents .add (item .getEvent ());
190- subscription .request (1 );
191-
192- }
193-
194- @ Override
195- public void onError (Throwable throwable ) {
196- error .set (throwable );
197- }
198-
199- @ Override
200- public void onComplete () {
201- subscription .cancel ();
202- }
203- });
153+ publisher .subscribe (getSubscriber (receivedEvents , error ));
204154
205155 assertNull (error .get ());
206156 assertEquals (3 , receivedEvents .size ());
@@ -224,7 +174,55 @@ public void testConsumeMessageEvents() throws Exception {
224174 final List <Event > receivedEvents = new ArrayList <>();
225175 final AtomicReference <Throwable > error = new AtomicReference <>();
226176
227- publisher .subscribe (new Flow .Subscriber <>() {
177+ publisher .subscribe (getSubscriber (receivedEvents , error ));
178+
179+ assertNull (error .get ());
180+ // The stream is closed after the first Message
181+ assertEquals (1 , receivedEvents .size ());
182+ assertSame (message , receivedEvents .get (0 ));
183+ }
184+
185+ @ Test
186+ public void testConsumeTaskInputRequired () {
187+ Task task = Task .builder ()
188+ .id ("task-id" )
189+ .contextId ("task-context" )
190+ .status (new TaskStatus (TaskState .INPUT_REQUIRED ))
191+ .build ();
192+ List <Event > events = List .of (
193+ task ,
194+ TaskArtifactUpdateEvent .builder ()
195+ .taskId ("task-123" )
196+ .contextId ("session-xyz" )
197+ .artifact (Artifact .builder ()
198+ .artifactId ("11" )
199+ .parts (new TextPart ("text" ))
200+ .build ())
201+ .build (),
202+ TaskStatusUpdateEvent .builder ()
203+ .taskId ("task-123" )
204+ .contextId ("session-xyz" )
205+ .status (new TaskStatus (TaskState .WORKING ))
206+ .isFinal (true )
207+ .build ());
208+ for (Event event : events ) {
209+ eventQueue .enqueueEvent (event );
210+ }
211+
212+ Flow .Publisher <EventQueueItem > publisher = eventConsumer .consumeAll ();
213+ final List <Event > receivedEvents = new ArrayList <>();
214+ final AtomicReference <Throwable > error = new AtomicReference <>();
215+
216+ publisher .subscribe (getSubscriber (receivedEvents , error ));
217+
218+ assertNull (error .get ());
219+ // The stream is closed after the input_required task
220+ assertEquals (1 , receivedEvents .size ());
221+ assertSame (task , receivedEvents .get (0 ));
222+ }
223+
224+ private Flow .Subscriber <EventQueueItem > getSubscriber (List <Event > receivedEvents , AtomicReference <Throwable > error ) {
225+ return new Flow .Subscriber <>() {
228226 private Flow .Subscription subscription ;
229227
230228 @ Override
@@ -237,7 +235,6 @@ public void onSubscribe(Flow.Subscription subscription) {
237235 public void onNext (EventQueueItem item ) {
238236 receivedEvents .add (item .getEvent ());
239237 subscription .request (1 );
240-
241238 }
242239
243240 @ Override
@@ -249,12 +246,7 @@ public void onError(Throwable throwable) {
249246 public void onComplete () {
250247 subscription .cancel ();
251248 }
252- });
253-
254- assertNull (error .get ());
255- // The stream is closed after the first Message
256- assertEquals (1 , receivedEvents .size ());
257- assertSame (message , receivedEvents .get (0 ));
249+ };
258250 }
259251
260252 @ Test
0 commit comments