Skip to content

Commit 16cbfcf

Browse files
committed
Add test to demonstrate 4.2 not affected by SPR-13185
Issue: SPR-13185
1 parent 0b43e4e commit 16cbfcf

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

spring-messaging/src/test/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistryTests.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Collections;
2121
import java.util.Iterator;
2222
import java.util.List;
23+
import java.util.Map;
2324
import java.util.concurrent.CountDownLatch;
2425
import java.util.concurrent.TimeUnit;
2526
import java.util.concurrent.atomic.AtomicReference;
@@ -404,7 +405,6 @@ public void findSubscriptionsNoMatches() {
404405
// SPR-12665
405406

406407
@Test
407-
@SuppressWarnings("rawtypes")
408408
public void findSubscriptionsReturnsMapSafeToIterate() throws Exception {
409409

410410
this.registry.registerSubscription(subscribeMessage("sess1", "1", "/foo"));
@@ -414,7 +414,7 @@ public void findSubscriptionsReturnsMapSafeToIterate() throws Exception {
414414
assertNotNull(subscriptions);
415415
assertEquals(2, subscriptions.size());
416416

417-
Iterator iterator = subscriptions.entrySet().iterator();
417+
Iterator<Map.Entry<String, List<String>>> iterator = subscriptions.entrySet().iterator();
418418
iterator.next();
419419

420420
this.registry.registerSubscription(subscribeMessage("sess3", "1", "/foo"));
@@ -423,6 +423,25 @@ public void findSubscriptionsReturnsMapSafeToIterate() throws Exception {
423423
// no ConcurrentModificationException
424424
}
425425

426+
@Test
427+
public void findSubscriptionsReturnsMapSafeToIterateIncludingValues() throws Exception {
428+
429+
this.registry.registerSubscription(subscribeMessage("sess1", "1", "/foo"));
430+
this.registry.registerSubscription(subscribeMessage("sess1", "2", "/foo"));
431+
432+
MultiValueMap<String, String> allSubscriptions = this.registry.findSubscriptions(createMessage("/foo"));
433+
assertNotNull(allSubscriptions);
434+
assertEquals(1, allSubscriptions.size());
435+
436+
Iterator<String> iteratorValues = allSubscriptions.get("sess1").iterator();
437+
iteratorValues.next();
438+
439+
this.registry.unregisterSubscription(unsubscribeMessage("sess1", "2"));
440+
441+
iteratorValues.next();
442+
// no ConcurrentModificationException
443+
}
444+
426445
@Test
427446
public void findSubscriptionsWithConcurrentUnregisterAllSubscriptions() throws Exception {
428447

0 commit comments

Comments
 (0)