Introduce Jackson 3 support for spring-websocket
This commit introduces a JacksonJsonSockJsMessageCodec Jackson 3 variant of Jackson2SockJsMessageCodec. See gh-33798
This commit is contained in:
@@ -29,7 +29,7 @@ import org.springframework.web.socket.TextMessage;
|
||||
import org.springframework.web.socket.WebSocketExtension;
|
||||
import org.springframework.web.socket.WebSocketHandler;
|
||||
import org.springframework.web.socket.WebSocketSession;
|
||||
import org.springframework.web.socket.sockjs.frame.Jackson2SockJsMessageCodec;
|
||||
import org.springframework.web.socket.sockjs.frame.JacksonJsonSockJsMessageCodec;
|
||||
import org.springframework.web.socket.sockjs.frame.SockJsFrame;
|
||||
import org.springframework.web.socket.sockjs.transport.TransportType;
|
||||
|
||||
@@ -48,7 +48,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
*/
|
||||
class ClientSockJsSessionTests {
|
||||
|
||||
private static final Jackson2SockJsMessageCodec CODEC = new Jackson2SockJsMessageCodec();
|
||||
private static final JacksonJsonSockJsMessageCodec CODEC = new JacksonJsonSockJsMessageCodec();
|
||||
|
||||
private WebSocketHandler handler = mock();
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.mockito.ArgumentCaptor;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.scheduling.TaskScheduler;
|
||||
import org.springframework.web.socket.WebSocketSession;
|
||||
import org.springframework.web.socket.sockjs.frame.Jackson2SockJsMessageCodec;
|
||||
import org.springframework.web.socket.sockjs.frame.JacksonJsonSockJsMessageCodec;
|
||||
import org.springframework.web.socket.sockjs.transport.TransportType;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -47,7 +47,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
*/
|
||||
class DefaultTransportRequestTests {
|
||||
|
||||
private final Jackson2SockJsMessageCodec CODEC = new Jackson2SockJsMessageCodec();
|
||||
private final JacksonJsonSockJsMessageCodec CODEC = new JacksonJsonSockJsMessageCodec();
|
||||
|
||||
private CompletableFuture<WebSocketSession> connectFuture = new CompletableFuture<>();
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ import org.springframework.web.socket.CloseStatus;
|
||||
import org.springframework.web.socket.TextMessage;
|
||||
import org.springframework.web.socket.WebSocketHandler;
|
||||
import org.springframework.web.socket.WebSocketSession;
|
||||
import org.springframework.web.socket.sockjs.frame.Jackson2SockJsMessageCodec;
|
||||
import org.springframework.web.socket.sockjs.frame.JacksonJsonSockJsMessageCodec;
|
||||
import org.springframework.web.socket.sockjs.frame.SockJsFrame;
|
||||
import org.springframework.web.socket.sockjs.transport.TransportType;
|
||||
|
||||
@@ -69,7 +69,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
*/
|
||||
class RestTemplateXhrTransportTests {
|
||||
|
||||
private static final Jackson2SockJsMessageCodec CODEC = new Jackson2SockJsMessageCodec();
|
||||
private static final JacksonJsonSockJsMessageCodec CODEC = new JacksonJsonSockJsMessageCodec();
|
||||
|
||||
private final WebSocketHandler webSocketHandler = mock();
|
||||
|
||||
@@ -114,7 +114,7 @@ class RestTemplateXhrTransportTests {
|
||||
Message<byte[]> message = MessageBuilder.createMessage("body".getBytes(UTF_8), headers);
|
||||
byte[] bytes = new StompEncoder().encode(message);
|
||||
TextMessage textMessage = new TextMessage(bytes);
|
||||
SockJsFrame frame = SockJsFrame.messageFrame(new Jackson2SockJsMessageCodec(), textMessage.getPayload());
|
||||
SockJsFrame frame = SockJsFrame.messageFrame(new JacksonJsonSockJsMessageCodec(), textMessage.getPayload());
|
||||
|
||||
String body = """
|
||||
o
|
||||
|
||||
@@ -49,7 +49,7 @@ class SockJsFrameTests {
|
||||
|
||||
@Test
|
||||
void messageArrayFrame() {
|
||||
SockJsFrame frame = SockJsFrame.messageFrame(new Jackson2SockJsMessageCodec(), "m1", "m2");
|
||||
SockJsFrame frame = SockJsFrame.messageFrame(new JacksonJsonSockJsMessageCodec(), "m1", "m2");
|
||||
|
||||
assertThat(frame.getContent()).isEqualTo("a[\"m1\",\"m2\"]");
|
||||
assertThat(frame.getType()).isEqualTo(SockJsFrameType.MESSAGE);
|
||||
|
||||
@@ -18,7 +18,7 @@ package org.springframework.web.socket.sockjs.transport.session;
|
||||
|
||||
import org.springframework.scheduling.TaskScheduler;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
import org.springframework.web.socket.sockjs.frame.Jackson2SockJsMessageCodec;
|
||||
import org.springframework.web.socket.sockjs.frame.JacksonJsonSockJsMessageCodec;
|
||||
import org.springframework.web.socket.sockjs.frame.SockJsMessageCodec;
|
||||
import org.springframework.web.socket.sockjs.transport.SockJsServiceConfig;
|
||||
|
||||
@@ -33,7 +33,7 @@ public class StubSockJsServiceConfig implements SockJsServiceConfig {
|
||||
|
||||
private TaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
|
||||
|
||||
private SockJsMessageCodec messageCodec = new Jackson2SockJsMessageCodec();
|
||||
private SockJsMessageCodec messageCodec = new JacksonJsonSockJsMessageCodec();
|
||||
|
||||
private int httpMessageCacheSize = 100;
|
||||
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
package org.springframework.web.socket.sockjs.transport.session;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import tools.jackson.core.JacksonException;
|
||||
|
||||
import org.springframework.web.socket.CloseStatus;
|
||||
import org.springframework.web.socket.TextMessage;
|
||||
@@ -118,7 +118,7 @@ class WebSocketServerSockJsSessionTests extends AbstractSockJsSessionTests<TestW
|
||||
this.session.handleMessage(message, this.webSocketSession);
|
||||
|
||||
this.session.isClosed();
|
||||
verify(this.webSocketHandler).handleTransportError(same(this.session), any(IOException.class));
|
||||
verify(this.webSocketHandler).handleTransportError(same(this.session), any(JacksonException.class));
|
||||
verifyNoMoreInteractions(this.webSocketHandler);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user