Merge pull request #22715

Closes gh-22715
This commit is contained in:
Rossen Stoyanchev
2019-11-08 17:48:20 +00:00
3 changed files with 36 additions and 0 deletions

View File

@@ -362,9 +362,17 @@ public class DefaultStompSession implements ConnectionHandlingStompSession {
@Override
public void disconnect() {
disconnect(null);
}
@Override
public void disconnect(@Nullable StompHeaders headers) {
this.closing = true;
try {
StompHeaderAccessor accessor = createHeaderAccessor(StompCommand.DISCONNECT);
if (headers != null) {
accessor.addNativeHeaders(headers);
}
Message<byte[]> message = createMessage(accessor, EMPTY_PAYLOAD);
execute(message);
}

View File

@@ -116,6 +116,13 @@ public interface StompSession {
*/
void disconnect();
/**
* Variant of {@link #disconnect()} with headers.
* @param headers the headers for the disconnect message frame
* @since 5.2.2
*/
void disconnect(StompHeaders headers);
/**
* A handle to use to track receipts.

View File

@@ -659,4 +659,25 @@ public class DefaultStompSessionTests {
verifyNoMoreInteractions(this.sessionHandler);
}
@Test
public void disconnectWithHeaders() {
this.session.afterConnected(this.connection);
assertThat(this.session.isConnected()).isTrue();
StompHeaders headers = new StompHeaders();
headers.add("foo", "bar");
this.session.disconnect(headers);
Message<byte[]> message = this.messageCaptor.getValue();
StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
headers = StompHeaders.readOnlyStompHeaders(accessor.getNativeHeaders());
assertThat(headers.size()).as(headers.toString()).isEqualTo(1);
assertThat(headers.get("foo").size()).isEqualTo(1);
assertThat(headers.get("foo").get(0)).isEqualTo("bar");
assertThat(this.session.isConnected()).isFalse();
verifyNoMoreInteractions(this.sessionHandler);
}
}