From 3fb58cda8e9b5a36ce241f32f3578344328e240b Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 18 May 2016 11:05:09 -0400 Subject: [PATCH] Wrap Jetty WebSocketException Issue: SPR-14267 --- .../adapter/jetty/JettyWebSocketSession.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/jetty/JettyWebSocketSession.java b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/jetty/JettyWebSocketSession.java index cfb0aec6d9..2825a48243 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/jetty/JettyWebSocketSession.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/jetty/JettyWebSocketSession.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import org.eclipse.jetty.websocket.api.RemoteEndpoint; import org.eclipse.jetty.websocket.api.Session; +import org.eclipse.jetty.websocket.api.WebSocketException; import org.eclipse.jetty.websocket.api.extensions.ExtensionConfig; import org.springframework.http.HttpHeaders; @@ -185,22 +187,31 @@ public class JettyWebSocketSession extends AbstractWebSocketSession { @Override protected void sendTextMessage(TextMessage message) throws IOException { - getNativeSession().getRemote().sendString(message.getPayload()); + getRemoteEndpoint().sendString(message.getPayload()); } @Override protected void sendBinaryMessage(BinaryMessage message) throws IOException { - getNativeSession().getRemote().sendBytes(message.getPayload()); + getRemoteEndpoint().sendBytes(message.getPayload()); } @Override protected void sendPingMessage(PingMessage message) throws IOException { - getNativeSession().getRemote().sendPing(message.getPayload()); + getRemoteEndpoint().sendPing(message.getPayload()); } @Override protected void sendPongMessage(PongMessage message) throws IOException { - getNativeSession().getRemote().sendPong(message.getPayload()); + getRemoteEndpoint().sendPong(message.getPayload()); + } + + private RemoteEndpoint getRemoteEndpoint() throws IOException { + try { + return getNativeSession().getRemote(); + } + catch (WebSocketException ex) { + throw new IOException("Unable to obtain RemoteEndpoint in session=" + getId(), ex); + } } @Override