22
22
import java .lang .annotation .Target ;
23
23
import java .util .ArrayList ;
24
24
import java .util .Arrays ;
25
+ import java .util .LinkedHashSet ;
25
26
import java .util .List ;
27
+ import java .util .Set ;
26
28
import java .util .concurrent .CountDownLatch ;
27
29
import java .util .concurrent .TimeUnit ;
28
30
@@ -157,7 +159,7 @@ public void simpleReply() {
157
159
this .eventCollector .assertNoEventReceived (replyEventListener );
158
160
this .context .publishEvent (event );
159
161
this .eventCollector .assertEvent (replyEventListener , event );
160
- this .eventCollector .assertEvent (listener , new TestEvent (replyEventListener , event .getId (), event . msg )); // reply
162
+ this .eventCollector .assertEvent (listener , new TestEvent (replyEventListener , event .getId (), "dummy" )); // reply
161
163
this .eventCollector .assertTotalEventsCount (2 );
162
164
}
163
165
@@ -176,6 +178,55 @@ public void nullReplyIgnored() {
176
178
this .eventCollector .assertTotalEventsCount (1 );
177
179
}
178
180
181
+ @ Test
182
+ public void arrayReply () {
183
+ load (TestEventListener .class , ReplyEventListener .class );
184
+ AnotherTestEvent event = new AnotherTestEvent (this , new String []{"first" , "second" });
185
+ ReplyEventListener replyEventListener = this .context .getBean (ReplyEventListener .class );
186
+ TestEventListener listener = this .context .getBean (TestEventListener .class );
187
+
188
+ this .eventCollector .assertNoEventReceived (listener );
189
+ this .eventCollector .assertNoEventReceived (replyEventListener );
190
+ this .context .publishEvent (event );
191
+ this .eventCollector .assertEvent (replyEventListener , event );
192
+ this .eventCollector .assertEvent (listener , "first" , "second" ); // reply
193
+ this .eventCollector .assertTotalEventsCount (3 );
194
+ }
195
+
196
+ @ Test
197
+ public void collectionReply () {
198
+ load (TestEventListener .class , ReplyEventListener .class );
199
+ Set <Object > replies = new LinkedHashSet <>();
200
+ replies .add ("first" );
201
+ replies .add (4L );
202
+ replies .add ("third" );
203
+ AnotherTestEvent event = new AnotherTestEvent (this , replies );
204
+ ReplyEventListener replyEventListener = this .context .getBean (ReplyEventListener .class );
205
+ TestEventListener listener = this .context .getBean (TestEventListener .class );
206
+
207
+ this .eventCollector .assertNoEventReceived (listener );
208
+ this .eventCollector .assertNoEventReceived (replyEventListener );
209
+ this .context .publishEvent (event );
210
+ this .eventCollector .assertEvent (replyEventListener , event );
211
+ this .eventCollector .assertEvent (listener , "first" , "third" ); // reply (no listener for 4L)
212
+ this .eventCollector .assertTotalEventsCount (3 );
213
+ }
214
+
215
+ @ Test
216
+ public void collectionReplyNullValue () {
217
+ load (TestEventListener .class , ReplyEventListener .class );
218
+ AnotherTestEvent event = new AnotherTestEvent (this , Arrays .asList (null , "test" ));
219
+ ReplyEventListener replyEventListener = this .context .getBean (ReplyEventListener .class );
220
+ TestEventListener listener = this .context .getBean (TestEventListener .class );
221
+
222
+ this .eventCollector .assertNoEventReceived (listener );
223
+ this .eventCollector .assertNoEventReceived (replyEventListener );
224
+ this .context .publishEvent (event );
225
+ this .eventCollector .assertEvent (replyEventListener , event );
226
+ this .eventCollector .assertEvent (listener , "test" );
227
+ this .eventCollector .assertTotalEventsCount (2 );
228
+ }
229
+
179
230
@ Test
180
231
public void eventListenerWorksWithInterfaceProxy () throws Exception {
181
232
load (ProxyTestBean .class );
@@ -464,15 +515,19 @@ static class ReplyEventListener extends AbstractTestEventListener {
464
515
@ EventListener
465
516
public Object handle (AnotherTestEvent event ) {
466
517
collectEvent (event );
467
- if (event .msg == null ) {
518
+ if (event .content == null ) {
468
519
return null ;
469
520
}
470
- else if (event .msg .equals ("String" )) {
471
- return event .msg ;
472
- }
473
- else {
474
- return new TestEvent (this , event .getId (), event .msg );
521
+ else if (event .content instanceof String ) {
522
+ String s = (String ) event .content ;
523
+ if (s .equals ("String" )) {
524
+ return event .content ;
525
+ }
526
+ else {
527
+ return new TestEvent (this , event .getId (), s );
528
+ }
475
529
}
530
+ return event .content ;
476
531
}
477
532
478
533
}
@@ -495,7 +550,7 @@ public void handle(TestEvent event) {
495
550
@ Async
496
551
public void handleAsync (AnotherTestEvent event ) {
497
552
collectEvent (event );
498
- if ("fail" .equals (event .msg )) {
553
+ if ("fail" .equals (event .content )) {
499
554
countDownLatch .countDown ();
500
555
throw new IllegalStateException ("Test exception" );
501
556
}
@@ -517,7 +572,7 @@ static class AsyncEventListener extends AbstractTestEventListener {
517
572
@ EventListener
518
573
@ Async
519
574
public void handleAsync (AnotherTestEvent event ) {
520
- assertTrue (!Thread .currentThread ().getName ().equals (event .msg ));
575
+ assertTrue (!Thread .currentThread ().getName ().equals (event .content ));
521
576
collectEvent (event );
522
577
countDownLatch .countDown ();
523
578
}
0 commit comments