Selector header name is exposed for configuration

Issue: SPR-16732
This commit is contained in:
Rossen Stoyanchev
2018-04-16 23:56:30 -04:00
parent 586be50109
commit ff2228fdaf
8 changed files with 150 additions and 34 deletions

View File

@@ -258,7 +258,7 @@ public class DefaultSubscriptionRegistryTests {
}
@Test
public void registerSubscriptionWithSelector() throws Exception {
public void registerSubscriptionWithSelector() {
String sessionId = "sess01";
String subscriptionId = "subs01";
String destination = "/foo";
@@ -266,6 +266,8 @@ public class DefaultSubscriptionRegistryTests {
this.registry.registerSubscription(subscribeMessage(sessionId, subscriptionId, destination, selector));
// First, try with selector header
SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.create();
accessor.setDestination(destination);
accessor.setNativeHeader("foo", "bar");
@@ -276,11 +278,34 @@ public class DefaultSubscriptionRegistryTests {
assertEquals(1, actual.size());
assertEquals(Collections.singletonList(subscriptionId), actual.get(sessionId));
// Then without
actual = this.registry.findSubscriptions(createMessage(destination));
assertNotNull(actual);
assertEquals(0, actual.size());
}
@Test
public void registerSubscriptionWithSelectorNotSupported() {
String sessionId = "sess01";
String subscriptionId = "subs01";
String destination = "/foo";
String selector = "headers.foo == 'bar'";
this.registry.setSelectorHeaderName(null);
this.registry.registerSubscription(subscribeMessage(sessionId, subscriptionId, destination, selector));
SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.create();
accessor.setDestination(destination);
accessor.setNativeHeader("foo", "bazz");
Message<?> message = MessageBuilder.createMessage("", accessor.getMessageHeaders());
MultiValueMap<String, String> actual = this.registry.findSubscriptions(message);
assertNotNull(actual);
assertEquals(1, actual.size());
assertEquals(Collections.singletonList(subscriptionId), actual.get(sessionId));
}
@Test // SPR-11931
public void registerSubscriptionTwiceAndUnregister() {
this.registry.registerSubscription(subscribeMessage("sess01", "subs01", "/foo"));